如何在 Java 中使用 GroupDocs.Search 进行同义词搜索

如果您希望用户即使输入不同的词也能找到正确的内容,同义词搜索就是答案。在本指南中,我们将逐步讲解您需要了解的所有内容——创建同义词字典、导入/导出字典、管理同义词组,最后运行自动使用这些同义词扩展查询的搜索。无论您是在构建 CMS、电子商务目录,还是法律文档库,添加同义词支持都能显著提升相关性和转化率。

快速答疑

  • 添加同义词的首要步骤是什么? 初始化 Index 并使用 SynonymDictionary API。
  • 我可以导入同义词字典吗? 可以——使用 importDictionary(path) 加载预构建的文件。
  • 如何启用同义词搜索? 设置 SearchOptions.setUseSynonymSearch(true)
  • 可以管理同义词组吗? 当然可以——通过字典 API 可以清除、添加或获取组。
  • 优化搜索索引时应考虑什么? 定期清理未使用的条目,并为大数据集调优 JVM 堆内存。

什么是同义词搜索?

“同义词搜索”指引擎将一组词或短语视为可互换。当用户输入 “better” 时,引擎还会搜索 “improve”“enhance” 或您在同义词组中定义的其他词,从而在不改变用户查询的前提下提供更丰富的结果。

为什么在 GroupDocs.Search 中启用同义词支持?

  • 更好的用户体验: 即使使用不同的术语,访客也能找到相关文档。
  • 更高的转化率: 电子商务平台通过匹配多样的产品词汇捕获更多销售。
  • 简化维护: 一个中心化的字典可服务多个应用,更新轻松无痛。

前置条件

  • GroupDocs.Search for Java 版本 25.4 或更高。
  • 支持 Maven 的 Java IDE(IntelliJ IDEA、Eclipse 等)。
  • 基础的 Java 知识以及对 Maven 项目结构的熟悉。

必需的库和版本

  • GroupDocs.Search for Java 版本 25.4 或更高。

环境搭建

  • 您选择的 IDE(IntelliJ IDEA、Eclipse 等)。
  • 用于依赖管理的 Maven。

知识要求

  • Java 面向对象编程。
  • 基础文件 I/O 操作。

设置 GroupDocs.Search for Java

安装信息

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 包。

许可证获取

  • 免费试用: 在没有许可证的情况下测试核心功能。
  • 临时许可证: 在评估期间扩展试用功能。
  • 购买: 生产环境使用及完整功能集所必需。

基本初始化和设置

创建 Index 实例,然后添加可搜索的文档:

import com.groupdocs.search.*;

String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Index";
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2";

// Creating an index in the specified folder
Index index = new Index(indexFolder);

// Adding documents from a specific folder to the index
index.add(documentsFolder);

如何向搜索索引添加同义词

创建索引是基础。下面我们将逐步演示关键步骤,并提供对应的完整代码。

功能 1:创建并索引 Index

// Create an index in the specified folder
Index index = new Index(indexFolder);

// Add documents from the given folder to the index
index.add(documentsFolder);

功能 2:检索单词的同义词

String[] synonyms = index.getDictionaries().getSynonymDictionary().getSynonyms("make");

功能 3:检索同义词组

String[][] synonymGroups = index.getDictionaries().getSynonymDictionary().getSynonymGroups("make");

功能 4:管理同义词字典条目

if (index.getDictionaries().getSynonymDictionary().getCount() > 0) {
    index.getDictionaries().getSynonymDictionary().clear();
}

String[][] newSynonymGroups = new String[][]{
    new String[] { "achieve", "accomplish", "attain", "reach" },
    new String[] { "accept", "take", "have" },
    new String[] { "improve", "better" }
};

index.getDictionaries().getSynonymDictionary().addRange(newSynonymGroups);

功能 5:导出同义词到文件

String exportFilePath = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/ManagingDictionaries/SynonymDictionary/Synonyms.dat";
index.getDictionaries().getSynonymDictionary().exportDictionary(exportFilePath);

功能 6:从文件导入同义词

index.getDictionaries().getSynonymDictionary().importDictionary(exportFilePath);

功能 7:执行支持同义词的搜索

String query = "better";
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true);

SearchResult result = index.search(query, options);

如何使用同义词进行搜索

通过设置 setUseSynonymSearch(true),引擎会自动使用您构建或导入的同义词字典扩展查询。这一步对于在不改变用户搜索行为的前提下提供更丰富的结果至关重要。

如何导入同义词字典

如果您已经有其他环境生成的 .dat 文件,只需调用 importDictionary(path) 即可。这对于在开发、预发布和生产服务器之间同步字典非常理想。

如何管理同义词组

同义词组允许您将一组词视为单一逻辑实体。通过 SynonymDictionary API 添加、清除或获取组,代码示例已在上文代码块中展示。

如何优化搜索索引

  • 定期清理未使用的条目: 在批量更新前使用 clear()
  • 调整 JVM 堆内存: 大型字典可能需要更多内存。
  • 保持库最新: 新版本包含性能改进。

实际应用场景

  1. 内容管理系统(CMS): 即使使用替代术语,用户也能找到文章。
  2. 电子商务平台: 产品搜索能够容忍 “laptop” 与 “notebook” 等同义词。
  3. 文档库: 法律或医疗档案受益于领域特定的同义词组。

性能考量

  • 优化索引存储: 定期重建索引以移除陈旧数据。
  • 管理内存使用: 加载大型同义词文件时监控堆内存消耗。
  • 定期更新: 使用最新的 GroupDocs.Search 版本以获取错误修复和速度提升。

常见问题及解决方案

IssueLikely CauseFix
No synonym matches appearsetUseSynonymSearch(true) 未设置或字典未导入Verify the option is enabled and the dictionary file exists.
Out‑of‑memory errors during importVery large .dat file exceeds JVM heapIncrease -Xmx heap size or import in smaller batches.
Duplicate entries in resultsSame term appears in multiple synonym groupsConsolidate overlapping groups using clear() then addRange().

常见问答

Q: 使用 GroupDocs.Search 的最低系统要求是什么?
A: 任何现代操作系统搭配兼容的 JDK(Java 8 或更高)即可。

Q: 多久需要刷新一次同义词字典?
A: 每当出现新术语时都应更新——使用 clear() 然后 addRange() 进行干净的刷新。

Q: 可以在不购买许可证的情况下运行 GroupDocs.Search 吗?
A: 免费试用可用于评估,但生产部署必须购买许可证。

Q: 对于大数据集的索引,有哪些最佳实践?
A: 将数据拆分为逻辑批次,监控堆内存使用,并安排定期的索引维护。

Q: 我没有看到预期的同义词匹配,应该检查什么?
A: 确认字典已正确导入,setUseSynonymSearch(true) 已激活,且词汇已存在于同义词组中。

资源


最后更新: 2026-03-04
测试环境: GroupDocs.Search 25.4 for Java
作者: GroupDocs