.net - azure 搜索 search.ismatch 忽略末尾的 "1"

标签 .net azure azure-cognitive-search

我有以下记录 -

{

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

相关文章:

Azure服务总线: Can't add rules to a subscription under Topics with partitioning enabled?

python - 在没有 Visual Studio 的情况下将 python 代码发布到 Azure 辅助角色

c# - NHibernate 一对多映射 : Insert Child Item Problem

c# - 表达式列表 <Func<T, TProperty>>

.net命令列表包--在azure管道中格式化json

c# - Azure 搜索查询字符串中的文字 & 符号

azure - Azure 搜索中所需的字符数

c# - System.Timers.Timer 与 System.Threading.Timer 的线程安全

c# - 为什么 object.ToString() 存在?

azure-cognitive-search - Azure 搜索 : use a single index on multiple data sources