如何使用 GroupDocs 和同义词搜索在 .NET 中创建搜索索引
在本指南中,您将学习 如何创建搜索索引,使用 GroupDocs.Search 将文档添加到该索引,并启用同义词搜索,使用户即使使用不同的术语也能找到相关内容。无论您是构建法律文库、企业知识库还是研究档案,以下步骤都提供了可在 .NET Framework 4.6.1+、.NET Core 和 .NET 5+ 上运行的生产就绪解决方案。
快速答案
- 创建搜索索引 是什么意思?它会构建一个可搜索的文档目录,将提取的文本存储在优化的结构中,以实现毫秒级查找。
- 为什么使用同义词搜索? 它会将查询扩展为包含同义词,在典型语料库中可将召回率提升至 30 %。
- 主要前置条件是什么? .NET 4.6.1+(或 .NET Core/5+)、C# 知识,以及 GroupDocs.Search + GroupDocs.Redaction NuGet 包。
- 我需要许可证吗? 评估阶段使用免费试用即可;生产部署需要永久许可证。
- 可以与脱敏功能结合使用吗? 可以——GroupDocs.Redaction 可在搜索前后运行,以遮蔽敏感数据。
什么是“创建搜索索引”?
搜索索引 是一种数据结构,保存每个文档的提取文本和元数据,使引擎能够瞬间定位匹配的文件。GroupDocs.Search 通过扫描源文件夹、解析支持的格式并将紧凑的索引文件写入您指定的目录来构建该索引。
为什么启用同义词搜索?
同义词搜索会自动向用户查询中添加替代词,例如搜索 “improve” 时也会返回包含 “enhance,” “upgrade,” 或 “optimize.” 的文档。实际使用中,这可以在保持高精度的同时将结果召回率提升 20‑35 %,因为内置的同义词词典针对每种语言进行了精心策划。
先决条件
- .NET Framework 4.6.1 或更高(或任何 .NET Core/5+ 运行时)。
- 基础 C# 开发技能和 Visual Studio(Community、Professional 或 Enterprise)。
- 通过 NuGet 安装 GroupDocs.Search 和 GroupDocs.Redaction 包。
安装
使用以下任一方法安装 GroupDocs.Redaction for .NET(详细信息请参阅 GroupDocs.Redaction .NET 文档):
.NET CLI:
dotnet add package GroupDocs.Redaction
Package Manager Console:
Install-Package GroupDocs.Redaction
或者,在 Visual Studio 中使用 NuGet 包管理器 UI,搜索 “GroupDocs.Redaction” 并直接安装。API 参考请参见 GroupDocs Redaction API。
许可证获取
- 免费试用: 使用试用版即可探索全部功能。
- 临时许可证: 在 GroupDocs 网站 申请临时许可证,或通过 GroupDocs License Management 门户管理许可证。
- 正式购买: 准备投入生产时,购买完整许可证以移除所有评估限制。
如何为 .NET 设置 GroupDocs.Redaction
GroupDocs.Redaction 提供在搜索前后对敏感内容进行脱敏的核心功能。它公开一个 Redactor 类,您可以使用许可证和可选的配置设置实例化该类。
以下代码演示了创建 Redactor 实例并加载许可证文件:
// Definition anchor: the Redactor class provides methods to locate and mask text, images, or metadata.
var redactor = new GroupDocs.Redaction.Redactor();
using GroupDocs.Redaction;
// Initialize a new Redactor object with your document path
RedactorSettings settings = new RedactorSettings();
Redactor redactor = new Redactor("YOUR_DOCUMENT_PATH", settings);
Redactor 准备就绪后,您可以在检索到的搜索结果文档上调用 redactor.Redact(...)。
如何创建搜索索引
创建搜索索引需要指定存放索引文件的文件夹,然后初始化 GroupDocs.Search 提供的 Index 类。索引将保存从源文档中提取的所有可搜索数据。
首先,为索引创建目录,然后实例化 Index 对象:
// Definition anchor: the Index class represents the searchable container that holds all indexed documents.
var indexPath = @"C:\MySearchIndex";
var index = new GroupDocs.Search.Index(indexPath);
string indexFolder = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Searching/SynonymSearch";
创建索引会向文件夹写入一组二进制文件;这些文件在每 1,000 页文档下通常不超过 200 KB,使您能够在不耗尽磁盘空间的情况下扩展到数百万页。
如何向索引添加文档
添加文档需要将 API 指向包含源文件的目录,并指示索引对其进行摄取。该过程会解析每种支持的格式,提取文本,并将其存入索引以实现快速检索。
使用以下代码对源文件夹中的所有文件建立索引:
// Definition anchor: DocumentSource tells the index where to read files from and which formats to accept.
var sourceFolder = @"C:\MyDocuments";
index.Add(sourceFolder);
using GroupDocs.Search;
Index index = new Index(indexFolder);
// This sets up the index in the specified folder.
GroupDocs.Search 支持 30+ 种输入格式——包括 DOCX、PDF、PPTX、HTML 以及常见图像类型——因此您几乎可以对任何企业档案进行索引,无需额外转换器。
如何启用并运行同义词搜索
通过 SearchOptions 打开同义词处理功能。启用后,每个查询会自动扩展为包含词典中的同义词,从而在不牺牲精度的前提下提升召回率。
使用以下代码片段启用同义词搜索:
var options = new GroupDocs.Search.SearchOptions()
{
UseSynonyms = true
};
var result = index.Search("improve", options);
string documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
默认同义词词典包含超过 5,000 对英文术语。您也可以加载自定义 SynonymDictionary 文件,以支持行业特定术语。
自定义同义词词典
如果需要领域特定的同义词,请加载自己的词典文件,并在执行查询前将其分配给 SearchOptions。
options.SynonymDictionary = new SynonymDictionary(@"C:\mySynonyms.txt");
var result = index.Search("upgrade", options);
index.Add(documentsFolder);
// This step populates the index with content from your documents.
常见故障排除技巧
- 路径问题: 请再次确认索引文件夹和源文件夹对进程账户可访问。
- 许可证限制: 未授权的构建可能将可索引文件数量限制为 100。
- 无结果: 确认已加载同义词词典;运行时可检查
options.SynonymDictionary.Count。
实际应用
- 法律文档管理: 使用法律术语及其同义词查找案例法。
- 学术研究: 在学术 PDF 和 Word 文件中扩展文献检索。
- 企业知识库: 即使用户用不同的表达方式,也能检索内部政策。
- 内容管理系统: 为编辑者提供更丰富的标签发现功能。
- 客户支持工单: 使用同义词匹配已知问题,提升工单匹配率。
性能考虑因素
- 索引维护: 大批量更新后重新索引;增量索引可将停机时间降低至约 70 %。
- 资源监控: 在标准 VM(2 vCPU、8 GB RAM)上对 10 GB 批次进行索引时,峰值约为 1.2 GB RAM;如接近限制请调小批次大小。
- 对象释放: 完成后立即调用
index.Dispose()和redactor.Dispose(),以释放本机资源。
结论
您现在已经掌握 如何创建搜索索引,能够使用 GroupDocs 将文档添加到索引,并启用同义词搜索以提供更直观的用户体验。此基础还可让您在强大的搜索引擎之上叠加脱敏、自定义排序或模糊匹配等功能。
后续步骤
- 试验
SearchOptions.FuzzySearch以捕获拼写错误。 - 探索
RankingAPI,以提升关键文档的优先级。 - 加入社区,访问 GroupDocs Forum 或 Free Support Forum 分享技巧并提问。
- 查看 Latest GroupDocs Releases 获取更新和新功能。
常见问题
Q: 什么是同义词搜索?
A: 同义词搜索会将用户的查询扩展为预定义的替代词,从而增加找到使用不同措辞的相关文档的机会。
Q: 如何更新我的 GroupDocs 许可证?
A: 访问 GroupDocs License Management 门户,并通过 License.SetLicense("path/to/license.lic") 上传新许可证文件。
Q: 可以在多语言环境中使用同义词搜索吗?
A: 可以——为您支持的每种语言加载相应的 SynonymDictionary 文件,引擎将在每次查询时使用对应的同义词集合。
Q: 最常见的索引问题有哪些?
A: 文件访问权限、格式不受支持以及超过试用版文档限制是开发者遇到的三大常见问题。
Q: 如何优化超大索引的性能?
A: 使用增量索引,将索引存放在 SSD 上,并将 IndexingOptions.MaxDegreeOfParallelism 配置为与 CPU 核心数相匹配。
最后更新: 2026-09-16
测试环境: GroupDocs.Search 23.10 for .NET
作者: GroupDocs
using GroupDocs.Search.Options;
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Activate synonym search.
string query = "improve";
SearchResult result = index.Search(query, options);
// This operation returns documents matching 'improve' or its synonyms.