模糊搜索比预期更严格

Fuzzy Search Behaving Stricter Than Expected

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

我要查找一份文件:

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

如果我执行 "search": "City:Houston" 之类的搜索查询,那么我会按预期获得文档。同样,如果我使用 "search": "City:Housto~" 进行搜索,那么我也会得到该文档。

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

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

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

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

之所以有过滤器,是因为一些其他文档已添加到搜索中,变体更短哦 'Houston'。例如,已添加带有 CityName 'Houst' 的文档,并且上述搜索确实返回了该文档。文件确实显示了很好,但我需要的是还返回具有完整 'Houston' 的文件,推测得分低于 'Houst'.

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

更新 2: 根据 Joey Cai 的回答中的对话进行更多研究也让我找到了 this related stack overflow questionchn 的 post 不匹配 China 中描述的问题与我遇到的根本问题基本相同,尽管 Joey 的回答与我的问题最相关。我的结论是,azure 模糊搜索并非设计用于匹配设计上相距很远的字符串(由链接问题中给出的答案支持)。

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

但是,当我添加 "queryType": "full" 而不是 queryType:full 时,效果很好。

请求 url 类似于:

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