如何使用 GroupDocs.Search for Java 索引文档

在当今数据驱动的世界中,如何索引文档 高效是任何处理大量文件的 Java 开发者的关键技能。无论是处理法律合同、财务报表还是内部报告,构建良好的搜索索引都能让您在几秒钟内定位到精确的信息,而不是耗费数小时手动扫描。本教程将手把手教您创建搜索索引、添加文档,并使用 GroupDocs.Search for Java 运行文本查询和对象查询。

快速答案

  • 索引文档的第一步是什么? 创建一个指向用于存储索引文件的文件夹的 Index 实例。
  • 哪个方法向索引添加文档? 调用 index.add("PATH_TO_DOCUMENTS") 来扫描目录并导入支持的文件。
  • 我可以搜索数值范围吗? 可以——使用类似 "400 ~~ 4000" 的文本查询,或通过 SearchQuery.createNumericRangeQuery 进行对象查询。createNumericRangeQuery 方法构建数值范围查询对象。
  • 我需要许可证吗? 免费试用可用于评估;商业许可证解锁全部功能并移除使用限制。
  • 需要哪个 Java 版本? 支持 JDK 8 或更高版本。

什么是使用 GroupDocs.Search 索引文档?

索引文档会为每个文件创建可搜索的令牌存储,使引擎能够在不每次读取原始文件的情况下检索匹配项。此预处理步骤将原始内容转换为可在毫秒级查询的优化索引。索引存储词项、位置和元数据,支持在所有受支持的文档类型上进行快速短语和邻近搜索。

为什么使用 GroupDocs.Search for Java?

在标准的 2‑CPU、8 GB 虚拟机上,对 10 000 个文件(平均 1 KB)进行搜索操作通常在 50 ms 以下完成。该库支持 30+ input and output formats——包括 PDF、DOCX、XLSX、PPTX、TXT 和 HTML——因此您可以在无需额外转换器的情况下索引几乎所有业务文档。其灵活的 API 让您能够组合纯文本查询、数值范围和复杂对象查询,而增量更新则可在不重新构建整个索引的情况下添加新文件。

前置条件

  • 已安装 Maven 用于依赖管理。
  • IDE,如 IntelliJ IDEA 或 Eclipse。
  • 基本的 Java 知识(面向对象概念、异常处理)。

设置 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 下载最新的 JAR。

许可证获取步骤

  1. 免费试用 – 免费探索该库。
  2. 临时许可证 – 请求短期密钥以进行扩展评估。
  3. 购买 – 获取用于生产的完整许可证。

基本初始化和设置

要 向索引添加文档,首先创建一个指向存放索引文件的文件夹的 Index 对象:

Index 是表示磁盘上可搜索索引的核心类。

import com.groupdocs.search.Index;

// Initialize the index by specifying a directory path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");

此行代码创建(或打开)一个准备接收文档的索引。

实现指南

创建和索引文档

如何向索引添加文档

add 方法扫描文件夹并为每个文件存储可搜索的数据。它递归处理所有受支持的文档,提取文本和元数据,并将令牌写入您之前指定的索引文件夹。

import com.groupdocs.search.Index;

// Initialize an index at the specified path
Index index = new Index("YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\NumericRangeSearch");

// Add documents from a directory for indexing
index.add("YOUR_DOCUMENT_DIRECTORY");
  • 参数: 路径字符串指向包含您想要索引的文件的文件夹。
  • 目的: 此步骤完成后,索引将包含所有支持的文档类型的令牌,从而实现对整个集合的快速搜索。

文本查询搜索

如何执行基于文本的数值范围搜索

您可以使用定义范围的简单字符串进行搜索。引擎将 ~~ 运算符解释为 “介于”,并返回所有包含在指定限制内的数字的文档。

import com.groupdocs.search.*;
import com.groupdocs.search.results.*;

// Define a query for numeric values within a specific range
String query1 = "400 ~~ 4000";

// Execute text-based search on indexed data
SearchResult result1 = index.search(query1);
  • 参数: 查询字符串 "400 ~~ 4000" 告诉引擎查找介于 400 到 4000 之间的数字。
  • 返回值: SearchResult 包含匹配文档的列表,并高亮显示匹配片段。

对象查询搜索

如何使用对象查询进行数值范围搜索

基于对象的查询为搜索条件提供编程控制,允许您组合多个条件或在运行时动态构建查询。

import com.groupdocs.search.*;
import com.groupdocs.search.results.*;

// Create a numeric range query object
SearchQuery query2 = SearchQuery.createNumericRangeQuery(400, 4000);

// Perform search using the query object
SearchResult result2 = index.search(query2);
  • 参数: createNumericRangeQuery 接收起始和结束整数。
  • 目的: 当您需要按发票总额、年龄或产品代码等数值字段过滤结果时,此方法非常理想。

实际应用

在以下实际场景中,如何索引文档 成为改变游戏规则的关键:

  1. 法律文档管理 – 在数千份合同中秒级定位条款、案件编号或日期。
  2. 财务报告 – 在不扫描每个电子表格的情况下提取落在特定金额范围内的交易。
  3. 库存跟踪 – 在分布式文件系统中通过序列号、批次码或 SKU 范围查找物品。

将 GroupDocs.Search 与数据库、云存储或消息队列集成,可进一步自动化文档工作流。

性能考虑因素

  • 定期索引更新: 对新文件重新运行 index.add 以保持索引最新。
  • 资源管理: 监控堆使用情况;大型索引受益于调优的 JVM 垃圾回收设置。
  • 查询优化: 对复杂过滤使用对象查询,以减少不必要的扫描并提升响应时间。

常见问题及解决方案

问题原因解决方案
搜索未返回结果索引未构建或文件夹路径不正确确认在正确的目录上执行了 index.add,并且索引文件夹可写。
索引期间出现 OutOfMemoryError文件过大或堆内存不足增加 JVM -Xmx 参数值或将文件分批索引。
不受支持的文件格式文件类型未被 GroupDocs.Search 识别确保扩展名在支持列表中(PDF、DOCX、XLSX、PPTX、TXT、HTML 等)。

常见问答

Q: 如何使用新文档更新已有索引?
A: 再次调用 index.add("NEW_DOCUMENT_PATH");库会合并新条目而无需重新创建整个索引。

Q: GroupDocs.Search 能处理不同的文件格式吗?
A: 可以,它支持 30+ 格式——包括 PDF、DOCX、XLSX、PPTX、TXT 和 HTML——因此您几乎可以索引任何业务文档。

Q: 使用 GroupDocs.Search 的系统要求是什么?
A: Java 8+ 运行时,至少 2 GB RAM(较大集合建议 4 GB+),并且需要对索引文件夹具有读写权限。

Q: 如何排查搜索性能问题?
A: 保持索引最新,分析查询性能,并检查 JVM 内存设置。减少索引字段数量或使用对象查询也能加快执行速度。

Q: 是否支持同义词或模糊匹配?
A: 是的,您可以通过 SearchOptions 类启用同义词词典和模糊搜索,以在不牺牲相关性的前提下扩大匹配范围。SearchOptions 类用于配置同义词和模糊匹配等高级搜索行为。


Last Updated: 2026-08-10
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

相关教程