Lucene / AzureSearch最接近的匹配项

时间:2018-12-18 22:45:36

标签: search lucene azure-search

客户正在问一个我不确定如何开发的功能。

任务是这样的:如何找到与查询最接近的匹配项并告诉它们中缺少的术语。这就是Google在找不到您确切的查询时会做的事情。

因此,该网站提供了一些带有标签的服务:  -标签1  -标签2  -Tag3

然后,我们要运行一个查询,该查询返回带有所有标记的所有服务。所以我可以做一些类似AND的事情。但假设我还想将最接近的5项服务返回给用户所需的内容。例如,可能存在仅匹配Tag2和Tag3的服务。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

当您对所有标签发出简单查询时,将返回与任何标签匹配的文档,而与更多标签匹配的文档将在搜索结果列表中提升更高的位置。

search=Tag1 Tag2 Tag3

如果您想提升与所有标签匹配的文档,可以使用Lucene query language的术语增强功能

search=(Tag1 AND Tag2 AND Tag3)^3 OR Tag1 OR Tag2 OR Tag3&queryType=full

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

要查看匹配的术语,可以使用hit highlighting