快速答案
- “add documents to index” 是什么意思? 它指将源文件加载到可搜索的数据结构中,以便以后进行查询。
- 为什么使用字符替换? 它会对每个字符进行规范化——通常转换为小写——从而使搜索自动忽略大小写差异。
- 我需要许可证吗? 免费试用可用于开发;生产部署需要完整许可证。
- 需要哪个 Java 版本? Java 8 或更高版本;该库针对 Java 11+ 以获得最佳性能。
- 需要时可以切换为区分大小写的搜索吗? 可以——搜索选项允许您在每个查询中切换大小写敏感性。
在 GroupDocs.Search 中,“add documents to index” 是什么?
将您的源文件(PDF、DOCX、TXT 等)加载到可搜索的索引中,以便引擎能够快速检索。将文档添加到索引会解析每个文件,提取纯文本,并将其存储在优化的数据结构中,从而实现快速查找。
为什么在索引期间启用字符替换?
字符替换在构建索引时将每个字符转换为预定义的等价字符——最常见的是小写。这样可以确保大小写、变音符或特定语言符号的差异不会影响搜索结果。通过在索引时对文本进行规范化,引擎能够在一致的标记集合上匹配查询,提供快速、可靠的不区分大小写行为,而无需在每次搜索时进行额外处理。
前置条件
- GroupDocs.Search for Java 版本 25.4 或更新(库支持 30 多种文件格式,能够在不将整个文件加载到内存的情况下索引数百页的文档)。
- Java Development Kit (JDK) 8 或更高版本已安装。
- 基本了解 Maven(或能够手动添加 JAR)。
为 Java 设置 GroupDocs.Search
Maven 设置
将 GroupDocs 仓库和依赖添加到您的 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>
直接下载
如果您不想使用 Maven,可从官方网站获取最新 JAR: GroupDocs.Search for Java 发布。
许可证获取
- 免费试用 – 下载试用许可证以开始实验。
- 临时许可证 – 从 GroupDocs 门户请求延长的测试许可证。
- 完整许可证 – 当您准备上线时购买生产许可证。
基本初始化(创建索引)
以下代码片段创建索引文件夹并启用字符替换:
import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
Index index = new Index(indexFolder, settings);
实施指南
在索引设置中启用字符替换
激活此功能会告诉引擎在索引时替换字符,这是实现不区分大小写行为的核心步骤。
步骤 1:配置 IndexSettings
IndexSettings 是控制索引如何存储和处理文本的配置对象。将 useCharacterReplacements 设置为 true 即可开启自动小写(或您提供的任何自定义映射)。
import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
// Create an instance of IndexSettings and enable character replacement.
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
// Initialize the index with these settings.
Index index = new Index(indexFolder, settings);
配置字符替换
将每个字符映射到其小写对应字符(或您需要的任何自定义映射)。
步骤 2:定义并添加替换对
替换字典保存诸如 'A' → 'a'、'É' → 'e' 等对。将在索引前添加这些对,以确保每个标记都已规范化。
import com.groupdocs.search.dictionaries.CharacterReplacementPair;
// Access existing replacements and clear them.
index.getDictionaries().getCharacterReplacements().clear();
// Create an array for new replacements.
CharacterReplacementPair[] characterReplacements = new CharacterReplacementPair[Character.MAX_VALUE + 1];
for (int i = 0; i < characterReplacements.length; i++) {
char originalChar = (char) i;
char replacementChar = Character.toLowerCase(originalChar);
characterReplacements[i] = new CharacterReplacementPair(originalChar, replacementChar);
}
// Add these replacements to the index's dictionary.
index.getDictionaries().getCharacterReplacements().addRange(characterReplacements);
索引文档
现在索引已准备就绪,您可以从任意文件夹 add documents to index。
步骤 3:添加文档进行索引
GroupDocs.Search 扫描目标目录,从每种受支持的文件类型中提取文本,应用替换映射,并将标记写入索引存储。
import com.groupdocs.search.Index;
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";
// Initialize the index and add documents.
Index index = new Index(indexFolder, settings);
index.add(documentFolder);
执行区分大小写的搜索(可选)
步骤 4:执行区分大小写的搜索
SearchOptions 配置查询行为,例如切换大小写敏感性,允许对搜索执行方式进行细粒度控制。SearchOptions.setUseCaseSensitiveSearch(true) 强制引擎在特定查询期间将大小写字符视为不同,从而覆盖默认的不区分大小写行为。
import com.groupdocs.search.Index;
import com.groupdocs.search.SearchOptions;
import com.groupdocs.search.results.SearchResult;
String query = "Promotion";
SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);
// Perform the search.
Index index = new Index(indexFolder, settings);
SearchResult result = index.search(query, options);
实际应用
- 营销活动 – 规范化产品名称,使销售团队能够在不考虑大小写的情况下定位资产。
- 客户支持 – 为帮助台搜索框提供动力,无论用户输入 “login” 还是 “Login”,都能返回正确的文章。
- 电子商务目录 – 确保购物者无论如何输入产品标题都能找到商品,提高转化率。
性能考虑因素
- 组织源文件 – 整洁的文件夹层次结构可减少在 add documents to index 步骤中扫描所花费的时间。
- 监控内存 – 索引大型语料库可能消耗大量内存;将文件分批(每批 500 – 1 000 项)处理可保持堆内存使用在可控范围。
- 异步索引 – 若支持,可在后台线程运行索引,以保持 UI 响应并避免阻塞用户操作。
常见问题与故障排除
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 已知词汇未返回结果 | 未启用字符替换 | 验证 settings.setUseCharacterReplacements(true) 并确保替换映射包含所需字符。 |
| 索引期间出现内存不足错误 | 一次索引过多大型文件 | 将文件分成更小批次索引或增加 JVM 堆内存(-Xmx4g)。 |
| 搜索意外返回区分大小写的结果 | SearchOptions.setUseCaseSensitiveSearch(true) 被设置 | 移除或设为 false 以恢复默认的不区分大小写行为。 |
| 索引加载时间超出预期 | 文件夹布局低效或未使用 SSD | 重新组织文件,清理未使用的文档,并将索引存储在高速 SSD 上。 |
| 特殊字符被忽略 | 替换映射缺少 Unicode 条目 | 为诸如 “é”、 “ß”、 “ø” 等字符添加映射到所需等价字符。 |
常见问答
问:在索引期间如何处理特殊字符(例如 “é”、 “ß”)?
答: 将这些字符包含在替换映射中,映射到它们的 ASCII 等价字符,或根据搜索需求保持不变。
问:我可以将字符替换限制在特定语言吗?
答: 可以。在将其添加到字典之前,构建仅包含目标语言字符的自定义替换数组。
问:如果索引加载时间过长该怎么办?
答: 优化文件夹结构,删除不必要的文件,并将索引存储在高速 SSD 上。增量索引也可降低加载开销。
问:索引后能否撤销字符替换?
答: 不能。替换已嵌入索引数据中;若要更改必须使用新设置重新构建索引。
问:在哪里可以找到更详细的 API 文档?
答: 官方文档和 API 参考提供了详尽的细节(见下方资源)。
资源
最后更新: 2026-07-31
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs