提取 PDF 文本 Java – 使用 GroupDocs.Search 构建索引
在本实践指南中,您将了解 how to extract pdf text java 从 PDF 文件中提取文本、序列化提取的内容,并创建高性能的可搜索索引。无论您是构建内部知识库、合同搜索门户,还是自定义搜索引擎,下面的步骤将带您完成所有操作——从从 PDF 中提取文本到运行强大的全文查询。让我们深入了解为何 GroupDocs.Search 能让整个过程顺畅且可扩展。
快速答案
index.search 方法对已创建的索引执行查询,并返回带有相关性评分的匹配文档列表。
- What is the main purpose? 提取 pdf text java 从 PDF 文件中并使用 GroupDocs.Search 创建可搜索的文档索引。
- Which library version? GroupDocs.Search 25.4(或最新发布版本)。
- Do I need a license? 免费试用可用于开发;生产环境需要完整许可证。
- Can I index PDFs? 是——提取 PDF 文本并将其添加到索引中。
- How do I run a search? 在添加数据后使用
index.search(query)方法。
什么是文档索引?
文档索引是从您的文件中提取的可搜索词的结构化集合。它将每个词映射到出现该词的文档,从而在大型仓库中实现快速全文搜索,并将查找时间从分钟降低到毫秒,同时支持排名和相关性功能。
为什么在 Java 中使用 GroupDocs.Search?
GroupDocs.Search 支持 50+ 输入和输出格式,能够在不将整个文件加载到内存的情况下索引 数百万文档,并提供带有布尔、通配符和邻近运算符的 丰富查询语言。这些量化能力使其成为企业级搜索解决方案的理想选择。它还提供内置的语言检测、词干提取和可自定义分析器,以提升多语言内容的搜索准确性。
先决条件
- 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 下载最新版本。
许可证获取
- Free Trial – 使用临时许可证测试所有功能。
- Purchase – 获取完整访问权限和优先支持。
如何从 PDF(以及其他文档)提取文本
使用 Extractor 类加载您的 PDF(或受支持的文档),配置提取选项,然后调用 extractText()。此单行调用返回原始或格式化的文本,准备进行索引。
Extractor 类是 GroupDocs.Search 的核心组件,负责读取文档并生成纯文本或格式化文本。
// ```java
String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
// ```java
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);
Tip: 如果需要无格式的纯文本,请设置
setUseRawTextExtraction(true)。
如何序列化提取的数据
序列化将提取的文本对象转换为字节数组,便于将其存储到磁盘或通过网络传输,以便后续索引。
SerializationUtil 实用程序提供静态方法,将对象转换为字节流并恢复。
// ```java
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();
如何反序列化提取的数据
当您准备构建索引时,将先前存储的字节数组反序列化回原始的提取对象。
deserialize 方法恢复提取结果的完整状态,确保会话之间不丢失数据。
// ```java
ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);
如何创建文档索引
实例化 Index 对象,指定存储文件夹,并配置索引选项,如词向量和停用词处理。
Index 类表示可搜索的容器,保存所有词、文档引用和元数据。
// ```java
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);
如何向索引添加数据并执行搜索
使用 index.add() 将反序列化的提取结果添加到索引,然后使用 index.search() 查询以获得即时结果。
add 方法将文档的词注册到索引中,而 search 在这些词上执行查询。
// ```java
ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
// ```java
String query = "ipsum";
SearchResult result = index.search(query);
Pro tip: 使用
index.search("your query", SearchOptions)可微调相关性排名。
常见使用场景
- Document Management Systems – 快速定位合同、发票或政策文件。
- Content‑Based Search Engines – 为内部知识库提供全文搜索 Java 能力。
- Data Archiving Solutions – 索引历史记录,实现瞬时检索。
性能考虑因素
setStoreTermVectors(boolean) 方法决定是否在索引中存储词向量,影响索引大小和查询性能。
- Memory Management: 处理超过 500 MB 的批次时增加 JVM 堆大小(例如
-Xmx4g)。 - Indexing Options: 禁用词向量 (
setStoreTermVectors(false)) 可将索引大小降低最多 30 %。 - Regular Updates: 保持 GroupDocs.Search 为最新版本;每个小版本都包含 10‑15 % 的平均速度提升。
常见问题
Q: How do I handle very large PDF files efficiently?
A: 使用 Extractor 流式读取文件并分块处理;必要时增加 JVM 堆内存。
Q: Can I customize the search query syntax?
A: 是的——GroupDocs.Search 支持布尔运算符、通配符和邻近搜索。
Q: What should I do if serialization fails?
A: 确认所有对象实现 Serializable,并捕获 IOException 记录详细信息。
Q: Is it possible to index only specific sections of a document?
A: 完全可以——在索引前通过 ExtractionOptions 过滤页面或章节。
Q: How do I upgrade to a newer GroupDocs.Search version?
A: 在 pom.xml 中更新版本号并运行 mvn clean install;查阅迁移指南了解可能的破坏性更改。
资源
- GroupDocs.Search for Java releases: GroupDocs.Search for Java releases
- Documentation: GroupDocs Documentation
- API Reference: GroupDocs API Reference
- Download: GroupDocs Downloads
- GitHub: GroupDocs GitHub Repository
- Free Support: GroupDocs Forum
- Temporary License: Obtain a Temporary License
Last Updated: 2026-07-07
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs