首页 > 解决方案 > 模糊搜索行为比预期更严格

问题描述

我正在使用 post-body REST 端点POST https://[search].search.windows.net/indexes/[index]/docs/search?api-version=2019-05-06和我无法理解为什么我的模糊搜索有时找不到任何结果。

我有一份要查找的文件:

{
  "Company": "MyCompany",
  "City": "Houston",
  "Country": "United States",
}

如果我像这样进行搜索查询,"search": "City:Houston"我会按预期获得文档。同样,如果我用"search": "City:Housto~"then 搜索,我也会得到文档。

但是,"search": "City:Houst~"没有找到任何文档,我尝试了"search": "City:Houst~X"for X 之间的变体0.1-1.00-2但无法通过查询找到文档。

只要我给出了休斯顿的一些子字符串并附加了模糊搜索字符,我就希望找到该文档~。为什么Housto~匹配Houston但不匹配Houst~

更新: 我的帖子请求具有以下正文:

{
  "search": "CityName:Houst~",
  "filter": "CityName eq 'Houston'",
  "queryType": "full"
}

过滤器在那里是因为一些其他文档已经被添加到搜索中,它们的变体更短哦'休斯顿'。例如,添加了 CityName 为“Houst”的文档,并且该文档确实通过上述搜索返回。文档确实显示出来很好,但我需要的是返回完整的“休斯顿”文档,可能分数低于“休斯顿”。

我注意到的一件事是 using"search": "CityName:Houst~"找到了一堆带有houston(小写 H)的文档,但没有找到带有Houston(大写 H)的任何文档。我对此感到困惑,因为两者是如此相似,我希望它们都能通过搜索找到。

更新 2:根据 Joey Cai 的回答中的对话做更多的研究也让我想到了这个相关的堆栈溢出问题chn不匹配的帖子中描述的China问题与我遇到的根本问题基本相同,尽管乔伊的回答与我的问题最相关。我的结论是,天蓝色模糊搜索并非旨在匹配设计相距显着距离的字符串(由链接问题中给出的答案支持)。

标签: azureazure-cognitive-searchfuzzy-search

解决方案


我在我的网站上进行了测试,可以重现您的问题。

但是,当我添加 "queryType": "full"not时queryType:full,它运行良好。

请求 url 类似于:

https://searchname.search.windows.net/indexes/datasourcename/docs?api-version=2019-05-06&search=Houst~&queryType=full

推荐阅读