2016-09-29 23 views
1

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

回答

3

随着Lucene Query syntax可以提高个人的子查询,例如:term^2 | term~1 - 这相当于“找到匹配‘术语’或‘术语’与编辑距离为1的文档,并能由因子得分完全匹配相对模糊匹配更高两个人。

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

没有保证精确匹配永远是第一位在被设置为文档分值是一个function of term frequency and inverse document frequency的结果。如果模糊子查询扩展输入词语的术语,它是在您的文档语料库中非常独特,您可能需要提高推动因子(在我的示例中为2)。通常,依赖于相关订货的成绩不是一个实际的想法。您可以在下面的帖子一看我的答案的详细资料:Azure Search scoring

让我知道,如果这有助于

+0

谢谢!这是有效的,但我只做了一个区别:据我了解,“OR”运算符将得到“blue^2”或“blue〜1”或两者的结果。所以如你所说,不能保证完全匹配总是第一。经过一些实验后,我通过搜索=(blue^2)|(blue〜1)&queryType = full来实现“严格或” –

相关问题