我有以下记录 -
{
"RoleDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  pqr  1",
"GroupDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  Abc Xyz  1",
},
{
"RoleDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  pqr  1",
"GroupDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117 Â Abc Xyz 1 Â 1",
},
{
"RoleDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  pqr  1",
"GroupDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117 Â Abc Xyz 2 Â 1",
},
{
"RoleDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  pqr  1",
"GroupDetails": "0AC05D80-B1E2-4E13-B1E7-602F6C272117  Abc Xyz 1 New  1",
}
1)
当我使用以下过滤器时 -
&$filter=search.ismatch('Abc Xyz 1','GroupDetails','simple', 'all')
返回=所有记录
预期=只有两行(“Abc Xyz 1”和“Abc Xyz 1 new”)
2)
当我使用以下过滤器时 -
&$filter=search.ismatch('Abc Xyz 2','GroupDetails','simple', 'all')
返回=返回匹配的记录,即预期的一行(“Abc Xyz 2”)
3)
但是当使用这个过滤器时 -
&$filter=search.ismatch('Abc Xyz 1 new','GroupDetails','simple', 'all')
返回=返回匹配的记录,即预期的一行(“Abc Xyz 1 new”)
那么为什么它在搜索“Abc Xyz 1”时返回所有记录?
另请注意:我尝试了“简单”和“完整”查询类型
解决方案 根据 Matthew Gotteiner 提供的答案,我修改了这样的查询 -
&$filter=search.ismatch('"Abc Xyz 1"','GroupDetails','simple', 'all')
成功了!
最佳答案
由于您正在寻找确切的短语,因此您应该使用 phrase search operator将您的查询用双引号引起来。例如,您可以搜索 “Abc Xyz 1”
,而不是搜索 Abc Xyz 1
。
此外,如果您计划使用 and
将搜索与过滤器组合起来,则只需使用 search.ismatch
函数。否则,您可以使用 REST API 中的 search
参数。或 .NET SDK 中的 searchText
参数
关于.net - azure 搜索 search.ismatch 忽略末尾的 "1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619019/