如何提高搜索结果的准确性?
要提高搜索结果的准确性,您可以使用MongoDB搜索对以下功能的支持。
自定义分数
MongoDB Search 根据相关性为结果设立的每个文档分配一个分数,并按从最高分到最低分的顺序返回结果。要学习;了解详情,请参阅 对结果中的文档进行评分。
当您运行MongoDB Search查询时,您可以调整结果中文档的相关性,以确保最相关的文档在结果中排名靠前并返回。
如要了解详情,请参阅如何自定义结果中文档的分数。
混合搜索
混合搜索结合了全文搜索和语义搜索,以确保在同一查询的相同条件下,组合搜索结果中包含同义词和上下文相似的匹配项。
混合搜索可用于以下场景:
使用MongoDB Search(全文搜索)来处理关键字查询,并通过测量关键字在文档中以及集合中的文档中出现的频率,根据相关性对文档进行排名。
使用MongoDB Vector Search(语义搜索)检索语义相似的文档。
将两种搜索方法的分数结合起来,以检索更准确、更相关的结果。
如要了解更多信息,请参阅如何执行混合搜索。
同义词搜索
同义词搜索确保您的查询结果包含相关结果,即使您搜索的文档中不包含确切的关键词。
执行同义词搜索时,可以使用在查询时创建和应用的索引和应用的同义词映射集合。
要学习;了解更多信息,请参阅在MongoDB搜索索引中定义同义词映射。
解释您的搜索
MongoDB explain 提供有关查询执行方式及某些文档为何优先返回的信息。
在您的查询中使用 explain 的原因如下:
了解MongoDB搜索如何计算搜索查询的分数,以及影响结果中文档相关性的因素。
根据搜索和排名的性能,改进您的索引和查询。
要学习;了解详情,请参阅如何检索查询计划和执行统计信息。
如何提高搜索结果的相关性?
您可以调整MongoDB Search 中的相关性,以确保MongoDB Search查询结果中返回更相关的文档。请考虑以下因素来优化MongoDB搜索结果的相关性。
评估您的数据
如要构建和格式化您的数据以返回最佳搜索结果:
查看文档的模式以确定要索引的字段。对于多态数据, MongoDB Search 仅索引与该字段的索引定义中指定的映射相对应的文档,并忽略包含不属于该字段的索引定义中指定的数据类型的值的文档。要学习;了解有关支持的字段类型和字段映射的更多信息,请参阅定义字段映射。
如有需要,请将数据标准化,以确保过滤和排序中使用的字段保持一致性。例如,将日期和时间值转换为标准格式,例如 ISO-8601。
分析关键字段中常用术语的频率,以确定要应用的分析器和分词策略。示例,某些术语可能需要特殊处理,例如词干提取或同义词映射。要学习;了解有关使用MongoDB Search 分析器为数据创建词元的更多信息,请参阅使用分析器处理数据。
分析数据量并规划扩展。大型数据集可能需要战略性地进行索引和分区。
配置MongoDB搜索索引
要配置MongoDB Search索引以返回最佳搜索结果,请执行以下操作:
为要索引的每个字段选择适当的分析器。分析器将筛选器与分词器相结合,创建可索引术语,从而纠正标点符号、大小写、填充词等方面的差异。您可以选择内置分析器或构建自定义分析器。要学习;了解更多信息,请参阅使用分析器处理数据。
创建源同义词集合并定义引用MongoDB搜索索引中同义词源集合的同义词映射。您可以使用同义词来扩大搜索范围并在结果中返回相关术语。要学习;了解更多信息,请参阅在MongoDB搜索索引中定义同义词映射。
定义MongoDB搜索查询
如要构建查询以获得最佳结果:
先决条件
如要完成这些教程,您必须具备以下条件:
MongoDB版本为 6.0 或更高版本的Atlas 集群,或者MongoDB版本为 8.2 或更高版本的MongoDB自管理集群。
示例数据已加载到集群中。
Project Data Access Admin或更高项目访问权限,以创建MongoDB搜索索引。搜索测试器、
mongosh、Compass 或支持的 MongoDB 驱动程序在集群上运行查询。
注意
您可以使用任何驱动程序在 $search 聚合阶段运行 MongoDB 搜索查询。这些教程包括精选客户端的示例。有关详细信息,请参阅特定教程页面。
您还可以通过使用Atlas CLI创建的本地部署或本地部署来完成这些教程。要学习;了解更多信息,请参阅创建本地Atlas部署和自托管部署。