Azure 搜索 - 作为第一个或单个结果的完全匹配

Rom*_*ets 3 lucene azure azure-cognitive-search

我正在使用基于丰富的 Lucene 查询解析器语法的 Azure 搜索。我将“~1”定义为距离一个符号的附加参数)。但我面临的问题是,即使存在完全匹配,实体也不会被排序。(例如,“blue~1”会返回“blues”、“blue”、“glue”。或者在搜索“P002”等产品SKU时,我会得到“P003”、“P005”、“P004”、“ P002", "P001", "P006" ) 所以我的问题是:有什么方法可以定义,完全匹配的实体必须在列表中的第一个,或者即使在我使用模糊搜索时也是单一搜索结果“~1 “?

Yah*_*osh 5

使用Lucene Query 语法,您可以增强单个子查询,例如:term^2 | term~1- 这意味着“查找匹配 'term' OR 'term' 且编辑距离为 1 的文档,并将精确匹配的分数相对于模糊匹配高两倍。

search=blue^2|blue~1&queryType=full

无法保证完全匹配始终在结果集中排在第一位,因为文档分数是词频和逆文档频率函数。如果模糊子查询将输入术语扩展为文档语料库中非常独特的术语,则可能需要提高提升因子(在我的示例中为 2)。一般来说,依靠相关性分数进行排序并不是一个实际的想法。有关更多信息,请查看我在以下帖子中的回答:Azure 搜索评分

让我知道这是否有帮助