Azure 模糊搜索行为比预期更严格

Azure 模糊搜索行为比预期更严格,azure,azure-cognitive-search,fuzzy-search,Azure,Azure Cognitive Search,Fuzzy Search,我正在使用PostBody REST端点查询我自己的azure搜索实例,我很难理解为什么我的模糊搜索有时找不到任何结果 我有一份文件要查找: { "Company": "MyCompany", "City": "Houston", "Country": "United States", } 如果我做一个搜索查询,比如search:City:Houston,那么我会得到预期的文档。同样,如果我使用search:City:Housto~搜索,那么我也会得到文档 但是,search:Ci

我正在使用PostBody REST端点查询我自己的azure搜索实例,我很难理解为什么我的模糊搜索有时找不到任何结果

我有一份文件要查找:

{
  "Company": "MyCompany",
  "City": "Houston",
  "Country": "United States",
}
如果我做一个搜索查询,比如search:City:Houston,那么我会得到预期的文档。同样,如果我使用search:City:Housto~搜索,那么我也会得到文档

但是,search:City:Houst~没有找到任何文档,我尝试了search:City:Houst~X在0.1-1.0和0-2之间的变体,但无法获得查找文档的查询

只要我给出休斯顿的一些子字符串并附加模糊搜索字符~,我就可以找到文档。为什么Housto~和休斯顿比赛,而不是Houst~

更新: 我的post请求包含以下内容:

{
  "search": "CityName:Houst~",
  "filter": "CityName eq 'Houston'",
  "queryType": "full"
}
该过滤器之所以存在,是因为后来在搜索中添加了一些其他文档,并带有较短的变体“Houston”。例如,添加了一个CityName为“Houst”的文档,并且通过上述搜索返回该文档。文档确实出现了,这很好,但我需要的是完整的“Houston”文档也要返回,可能分数低于“Houst”

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


更新2:根据蔡祖儿回答中的对话做更多的研究也让我想到了。《中国与中国不匹配》一文中描述的问题与我遇到的根本问题基本相同,尽管乔伊的回答与我的问题最为相关。我的结论是azure fuzzy search的设计并不是为了匹配由链接问题中给出的答案所支持的设计相距很远的字符串。

我在我的网站上进行测试,可能会重现您的问题

但是,当我添加queryType:full而不是queryType:full时,它工作得很好

请求url类似于:

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

糟糕的是,我认为post-body方法比get-url方法更受欢迎。我对原始问题进行了编辑,以便更具体地说明我是如何进行搜索的。我确实尝试了你在评论中描述的方法,并取得了一些成功。使用与您相同的查询,我得到了许多带有“houston”小写字母H的结果,但没有一个带有“houston”大写字母H的结果。这非常令人费解。只返回小写术语的原因是因为模糊查询不进行词法分析。在大多数情况下,词汇分析负责生成与相同或类似分析生成的索引词大小写敏感匹配的词。然而,在这种情况下,在查询期间没有词汇分析,除了小写,它只会导致匹配小写术语。更多信息在这里-很高兴看到这一点。