在Lucene查询中使用通配符的Azure搜索返回意外结果

时间:2018-07-11 16:36:42

标签: azure lucene wildcard

请忽略标题括号之间的空白。

以下查询返回 94 条记录:(期望:标题中包含单词 pregnancy )- 通过

title:( pregnancy )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询返回 3 条记录:(期望:标题中包含单词 pregnant )- 通过

title:( pregnant )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询返回 97 条记录:(期望:标题中包含以 preg 开头的单词)- 通过

title:( preg* )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询将返回 3 条记录:(期望:标题中包含以 preg 开头并以 nt结尾的单词的标题)- 通过

title:( preg*nt )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询将返回 3 条记录:(期望:标题中包含以 preg 开头并以 t结尾的单词的标题)- 通过

title:( preg*t )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询将返回 0 条记录:(期望:标题中包含以 preg 开头并以 cy结尾的单词的标题)- 失败 -至少没有 94 条记录

title:( preg*cy )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

以下查询返回 0 条记录:(期望:以 preg 开头并以 y 结尾的单词)- 失败 -至少没有 94 条记录

title:( preg*y )&$count=true&queryType=full&searchMode=any&$skip=0&$top=12

我阅读了这两篇文章: Lucene query syntax in Azure SearchHow full text search works in Azure Search

我几乎准备相信上述查询中的*充当前缀运算符,即查找以“ preg”开头的单词,而不是充当通配符搜索指示符。

对于如何重写查询以在搜索结果中包含“以某些字符开头”和“以某些字符结尾”的标题,是否有人有任何建议?我不能为此使用通配符*吗?

请不要对“怀孕”一词感到困惑,我也使用其他词来进行搜索,例如“土豆”,“西红柿”,“运动”,“癌症”等。

1 个答案:

答案 0 :(得分:0)

我为Microsoft创建了一张票。他们的建议是将Azure搜索分析器从“英语Lucene”更改为“英语Microsoft”。

解释是“英语Lucene”自动从单词中提取了最后一个字符。

您可以在此处查看差异:Azure Search Analyzer Demo

这是否是正确的方法,还是有争议的。更换分析仪确实达到了我的目的...

enter image description here