Java 中使用 GroupDocs.Search 的全文搜索示例
如果您需要一个 full text search example,能够跨 PDF、Word 文件、电子表格等多种格式工作,那么您来对地方了。手动扫描成千上万的文档是巨大的瓶颈,但 GroupDocs.Search for Java 能以闪电般的速度自动完成索引和查询。在本教程中,我们将逐步演示您需要的全部内容——从将文档添加到索引、编写 boolean query java statements,到为生产工作负载优化搜索性能。
快速答案
- What is full text search example? 它会索引每个文档的原始文本,以便您可以即时查询任何单词或短语。
- Which library supports multiple formats? GroupDocs.Search for Java 处理 PDF、DOCX、XLSX、PPTX、HTML、TXT,以及超过 50 种其他文件类型。
- How do I add documents to index? 调用
index.add()方法,传入文件夹路径或自定义DocumentFilter。 - Can I run Boolean queries? 是的——使用 AND、OR、NOT 组合词项以获得精确结果。
- How do I improve performance? 使用增量索引、启用结果缓存,并在不需要时禁用音素搜索。
什么是 full text search example?
full text search example 让您扫描文档的全部文本内容,将其存储在高效的索引中,并即时检索匹配的记录。不同于仅基于文件名的搜索,它会深入 PDF、Word 文档、电子表格以及其他受支持的格式内部,非常适合文档管理系统、支持门户以及任何需要用户快速定位信息的应用程序。
为什么使用 GroupDocs.Search for Java?
GroupDocs.Search for Java 为超过 50 种文件类型提供多格式支持,包括 PDF、DOCX、XLSX、PPTX、HTML 和纯文本。它能够扩展到数百万文件,同时通过将索引存储在磁盘上保持低内存使用。该库包含高级查询语言,内置 Boolean、模糊和音素搜索,并且只需一个 Maven 依赖,即可在几分钟内开始索引。
前提条件
- Java 11+(Java 8 也可使用,但建议使用 Java 11 或更高版本以获得更佳性能)。
- Maven 用于依赖管理。
- 一个 GroupDocs.Search 许可证(免费试用密钥足以用于开发)。
必需的库和依赖
在您的 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>
有关详细用法,请参阅 documentation。
环境设置
- 安装 JDK(8 或更高)并配置
JAVA_HOME。 - 使用 IntelliJ IDEA 或 Eclipse 等 IDE 以便更轻松调试。
知识前提
- 基本的 Java 编程概念。
- 熟悉 Maven 的
pom.xml结构。
设置 GroupDocs.Search for Java
您可以通过 Maven(如上所示)引入库,或手动下载 JAR。
直接下载(如果您更喜欢手动设置)
从 GroupDocs.Search for Java releases 获取最新的包。
获取许可证的步骤
- Free trial – 注册并获取临时密钥。
- Temporary license – 请求更长期的密钥以进行扩展测试。
- Purchase – 当您准备好投入生产时,升级为完整的商业许可证。
基本初始化和设置
在磁盘上创建索引文件夹,并验证库能够正确加载:
import com.groupdocs.search.Index;
public class SearchSetup {
public static void main(String[] args) {
// Initialize an index in the specified directory
Index index = new Index("C:\\MyIndex");
System.out.println("GroupDocs.Search initialized!");
}
}
Pro tip: 将索引目录放在高速 SSD 上,以最小化查询延迟。
将文档添加到索引
Why this matters: 没有索引内容就不可能有搜索结果。下面展示如何添加整个文件夹或过滤特定文件类型。
步骤 1:创建索引
Index 类是可搜索的容器,用于在磁盘上存储已索引的文档。
Index index = new Index("C:\\MyIndex");
步骤 2:添加文档(add documents to index)
您可以对文件夹中的所有内容进行索引,或使用 DocumentFilter 限制特定扩展名。
index.add("C:\\Documents\\*.*"); // Adds all documents from the specified directory
// For specific file types, use:
index.add("C:\\Reports", new DocumentFilter() {
@Override
public boolean accept(String fileName) {
return fileName.endsWith(".pdf") || fileName.endsWith(".docx");
}
});
说明:
Index表示可搜索的数据库。add()读取文件;通配符*.*抓取所有文件,而DocumentFilter让您微调 add documents to index 步骤。
执行搜索(search documents java)
现在索引中已有数据,您可以对其进行查询。
步骤 1:创建查询
String query = "GroupDocs";
步骤 2:执行搜索
SearchResult result = index.search(query);
System.out.println("Documents found: " + result.getDocumentCount());
说明:
search()对索引执行查询。getDocumentCount()告诉您匹配了多少文档——对快速检查很有用。
高级查询技术(boolean query java)
为了精确控制,使用 Boolean 逻辑组合词项。
Boolean 查询
BooleanQuery 类允许您使用 AND、OR、NOT 运算符构建复杂表达式。
String booleanQuery = "GroupDocs AND Java";
SearchResult booleanResult = index.search(booleanQuery);
音素搜索(可选,用于模糊匹配)
PhoneticSearch 功能为拼写错误的词提供音素匹配,但会增加开销。
index.getSettings().setPhoneticSearch(true);
何时使用: 仅当用户经常拼写错误时才启用音素搜索;否则,请保持禁用以 optimize search performance。
常见问题及解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 缺少文档 | 文件路径不正确或权限不足 | 验证路径并授予读取权限 |
| 查询慢 | 大型索引未使用缓存或不必要的音素搜索 | 启用缓存,禁用音素搜索,并考虑拆分索引 |
| 内存溢出错误 | 索引大小超出 JVM 堆内存 | 增加 -Xmx 或使用增量索引 |
实际应用
GroupDocs.Search 在实际场景中表现出色:
- Content management systems – 在文章、PDF 和媒体资产之间提供即时全文搜索。
- Customer support portals – 代理可以在几秒钟内找到相关手册或政策。
- Enterprise document repositories – 在合同、报告和合规文档中搜索,无需将数据迁移到单独的数据库。
性能考量
优化搜索性能
- Incremental indexing: 仅添加或更新已更改的文件,而不是重建整个索引。
- Caching: 将常用查询结果保存在内存中。
- Resource monitoring: 根据索引大小调整 JVM 堆(
-Xmx2g或更高)。
资源使用指南
- 将索引文件夹存放在高速 SSD 或 NVMe 驱动器上。
- 在批量索引期间监控 CPU 和内存;对批处理操作进行限流以避免峰值。
Java 内存管理最佳实践
- 在使用流时使用
try‑with‑resources。 - 使用后将大型对象设为 null,以帮助垃圾回收。
结论
现在,您已经拥有使用 GroupDocs.Search 的完整、可投入生产的 full text search example(Java)。从设置库、adding documents to index、编写 boolean query java 语句,到 optimizing search performance,每一步都已涵盖。
接下来的步骤
通过查看官方的 GroupDocs.Search Documentation 来探索更深入的功能,如自定义分析器、同义词词典和云存储集成。
常见问题
Q: GroupDocs.Search 支持哪些文件格式?
A: 超过 50 种格式,包括 PDF、DOCX、XLSX、PPTX、HTML、TXT 以及多种图像类型。
Q: 我该如何处理大型数据集?
A: 将其拆分为多个索引,增量更新,并启用结果缓存以保持低延迟。
Q: GroupDocs.Search 能在云环境中运行吗?
A: 可以——您可以将索引文件夹指向已挂载的云存储(例如 Azure Blob、通过文件系统驱动的 AWS S3)。
Q: 与其他库相比,GroupDocs.Search 有哪些优势?
A: 多格式支持、内置 Boolean/phonetic 查询,以及轻量级的 Java API,能够在低内存占用下处理数百万文档。
Q: 我该如何排查性能问题?
A: 检查索引设置,如不需要则禁用音素搜索,并在索引和查询期间监控 JVM 的内存/CPU 使用情况。
Last Updated: 2026-08-15
Tested With: GroupDocs.Search 25.4
Author: GroupDocs
资源
- 文档: GroupDocs.Search Documentation
- API 参考: API Reference Guide
- 下载: Latest Releases
- GitHub: Source Code on GitHub
- 支持: Forum and Community Support
- 许可证: Request a Temporary License