客户正在问一个我不确定如何开发的功能。
任务是这样的:如何找到与查询最接近的匹配项并告诉它们中缺少的术语。这就是Google在找不到您确切的查询时会做的事情。
因此,该网站提供了一些带有标签的服务: -标签1 -标签2 -Tag3
然后,我们要运行一个查询,该查询返回带有所有标记的所有服务。所以我可以做一些类似AND的事情。但假设我还想将最接近的5项服务返回给用户所需的内容。例如,可能存在仅匹配Tag2和Tag3的服务。
我想我可以运行一个分组的OR查询,但是问题是如何根据找到的匹配术语对它们进行排序?有什么办法可以创建自定义评分来做到这一点?我如何获得那些不在结果中的术语? (示例中为Tag1)。
谢谢。
答案 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。