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 获取最新的包。

获取许可证的步骤

  1. Free trial – 注册并获取临时密钥。
  2. Temporary license – 请求更长期的密钥以进行扩展测试。
  3. 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 在实际场景中表现出色:

  1. Content management systems – 在文章、PDF 和媒体资产之间提供即时全文搜索。
  2. Customer support portals – 代理可以在几秒钟内找到相关手册或政策。
  3. 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

资源

相关教程