模糊搜索比预期更严格
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.0
和 0-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 question。 chn
的 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
我正在使用 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.0
和 0-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 question。 chn
的 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