我使用基于丰富的Lucene Query Parser语法的Azure搜索。我定义为" ~1"作为距离的一个符号的附加参数)。但是我遇到了问题,即使有完全匹配,也没有订购实体。 (例如," blue~1"将返回"布鲁斯","蓝","胶水"。或者在搜索产品SKU时,如& #34; P002",我会得到结果" P003"," P005"," P004"," P002",&# 34; P001"," P006") 所以我的问题是:有一些方法可以定义,具有完全匹配的实体必须在列表中排在第一位,或者是单独的搜索结果,即使那时我使用模糊搜索" ~1"?
答案 0 :(得分:3)
使用Lucene Query syntax,您可以提升单个子查询,例如:term^2 | term~1
- 这会转换为"查找匹配' term' OR' term'编辑距离为1,并将相对于模糊匹配的精确匹配得分更高。
search=blue^2|blue~1&queryType=full
由于文档分数为function of term frequency and inverse document frequency,因此无法保证完全匹配始终位于结果集中的第一位。如果模糊子查询将输入项扩展为在文档语料库中非常独特的术语,则可能需要提高提升因子(在我的示例中为2)。一般来说,依靠相关性得分进行排序并不是一个实际的想法。请查看以下帖子中的答案,了解更多信息:Azure Search scoring
如果有帮助,请告诉我