使用 GroupDocs.Search for Java 创建文档索引:完整指南

在当今的数字时代,能够快速创建文档索引并高效搜索是任何组织的游戏规则改变者。无论您是在构建文档管理系统还是自定义搜索引擎,GroupDocs.Search for Java 为您提供提取文本、序列化数据以及轻松执行全文搜索 Java 操作的工具。本教程将逐步指导您完成每一步——从提取 PDF 文本到向索引添加数据以及搜索已索引的文档。

快速答案

  • 主要目的是什么? 使用 GroupDocs.Search for Java 创建可搜索的文档索引。
  • 使用的库版本? GroupDocs.Search 25.4(或最新发布版本)。
  • 需要许可证吗? 免费试用可用于开发;生产环境需要完整许可证。
  • 可以索引 PDF 吗? 是的——提取 PDF 文本并将其添加到索引中。
  • 如何执行搜索? 在添加数据后使用 index.search(query) 方法。

什么是文档索引?

文档索引是从文件中提取的可搜索词的结构化集合。通过创建文档索引,您可以在大型存储库中实现快速全文搜索,显著提升检索速度和准确性。

为什么使用 GroupDocs.Search for Java?

  • 强大的提取 – 支持 PDF、Word、Excel 等多种格式。
  • 简易序列化 – 将提取的数据存储为字节数组,以便后续重用。
  • 可扩展的索引 – 高效索引数百万文档。
  • 强大的查询语言 – 支持复杂的全文搜索 Java 查询。

前置条件

  • GroupDocs.Search for Java(版本 25.4 或更高)。
  • Java Development Kit (JDK) 与您的 GroupDocs 版本兼容。
  • IntelliJ IDEA 或 Eclipse 等 IDE。
  • 用于依赖管理的 Maven。

设置 GroupDocs.Search for Java

首先,将库添加到您的项目中。

Maven 设置
在您的 pom.xml 文件中包含以下内容:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/search/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

直接下载
或者,从 GroupDocs.Search for Java releases 下载最新版本。

获取许可证

  • 免费试用 – 使用临时许可证测试所有功能。
  • 购买 – 获得完整访问权限和优先支持。

步骤实现

如何从 PDF(及其他文档)提取文本

提取原始或格式化文本是创建文档索引的第一步。

String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);

提示: 如果需要无格式的纯文本,请设置 setUseRawTextExtraction(true)

如何序列化提取的数据

序列化可以让您将提取的数据存储起来,以便后续索引。

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();

如何反序列化提取的数据

当您准备构建索引时,将字节数组转换回对象。

ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);

如何创建文档索引

现在您已有 deserializedData,可以创建用于保存可搜索词的索引。

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);

如何向索引添加数据并执行搜索

向索引添加数据并查询索引完成了创建文档索引的工作流。

ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
String query = "ipsum";
SearchResult result = index.search(query);

专业提示: 使用 index.search("your query", SearchOptions) 来微调相关性排序。

常见使用场景

  1. 文档管理系统 – 快速定位合同、发票或政策。
  2. 基于内容的搜索引擎 – 为内部知识库提供全文搜索 Java 能力。
  3. 数据归档解决方案 – 索引历史记录,实现即时检索。

性能考虑因素

  • 内存管理: 为大批量文档调整 JVM 堆大小。
  • 索引选项: 禁用不必要的功能(例如 term vectors)以加快索引速度。
  • 定期更新: 保持 GroupDocs.Search 为最新,以获得性能补丁。

常见问题

Q: 如何高效处理非常大的 PDF 文件?
A: 使用 Extractor 流式读取文件并分块处理;如有需要,还可增加 JVM 堆大小。

Q: 我可以自定义搜索查询语法吗?
A: 可以——GroupDocs.Search 支持布尔运算符、通配符和邻近搜索。

Q: 如果序列化失败,我该怎么办?
A: 确认所有对象实现了 Serializable,并捕获 IOException 记录详细信息。

Q: 能否仅索引文档的特定章节?
A: 完全可以——在索引前配置 ExtractionOptions 以过滤页面或章节。

Q: 如何升级到更新的 GroupDocs.Search 版本?
A: 在 pom.xml 中更新版本号并运行 mvn clean install;查看迁移指南以了解破坏性更改。

资源

最后更新: 2025-12-18
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs