azuresearch search.ismatch 忽略末尾的“1”

azuresearch search.ismatch is ignoring "1" at the end

我有以下记录 -

{

"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 ")

那么为什么在搜索“Abc Xyz 1”时返回所有记录?

另请注意:我尝试了 "simple" 和 "full" querytype

解决方案 根据 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 or the searchText parameter in the .NET SDK

中使用 search 参数