Lucene/AzureSearch 最接近的匹配项

Lucene/AzureSearch closest matches

一位客户询问我不太确定如何开发的功能。

任务是这样的:如何找到与查询最接近的匹配项并指出其中缺失的术语。这是 Google 在找不到您的确切查询时所做的事情。

所以该站点有一些服务带有标签: - 标签 1 - 标签 2 - 标签 3

然后我们想要 运行 查询 return 具有所有标签的所有服务。所以我可以做一些类似分组 AND 的事情。但假设我还想 return 最接近用户正在寻找的 5 项服务。例如,可以有仅匹配 Tag2 和 Tag3 的服务。

我想我可以 运行 分组 OR 查询,但问题是我如何根据找到的匹配项数对它们进行排序?有什么方法可以创建自定义评分来做到这一点?我怎样才能得到那些不在结果中的条款? (示例中的 Tag1)。

谢谢。

当您发出包含所有标签的简单查询时,将返回与任何标签匹配的文档,匹配更多标签的文档将在搜索结果列表中排名靠前。

search=Tag1 Tag2 Tag3

如果你想将匹配所有标签的文档提升得更高,你可以使用Lucene query language

的term boosting功能
search=(Tag1 AND Tag2 AND Tag3)^3 OR Tag1 OR Tag2 OR Tag3&queryType=full

您可以在此处了解有关 Azure 搜索中默认评分功能的更多信息:How full text search works in Azure Search - scoring

要查看匹配的字词,您可以使用 hit highlighting