如何在Azure Search中实现集合的双字符串“与”筛选?多值ID筛选咨询
Azure Search 多条件集合筛选问题解答
问题1:如何在Azure Search中通过两个字符串筛选集合?
要看你具体的筛选逻辑来选对应的写法:
要是想找集合里包含任意一个目标字符串的文档:
用search.in()能简化代码,假设你的集合字段叫tags,要匹配"foo"和"bar",过滤器可以这么写:$filter=search.in(tags, 'foo,bar', ',')这和
tags/any(t: t eq 'foo' or t eq 'bar')效果一致,会返回集合里有foo或者bar的文档。要是想找集合里同时包含两个目标字符串的文档:
就得用and把两次any()判断连起来,比如:$filter=tags/any(t: t eq 'foo') and tags/any(t: t eq 'bar')这种写法会确保集合里同时存在foo和bar才会命中。
如果是想用两个字符串分别匹配不同的字段,直接用and连接字段判断就行,比如:
$filter=productName eq 'laptop' and category eq 'electronics'
问题2:实现集合同时包含1和11的“与”筛选
你说的search.in()确实是逻辑或的匹配逻辑,所以会返回包含1或11的结果。要实现同时包含两个值的“与”筛选,得针对每个目标值单独做存在性检查,再用and拼接:
假设你的ID集合字段叫idCollection,正确的过滤器写法是:
$filter=idCollection/any(id: id eq 1) and idCollection/any(id: id eq 11)
如果你的ID是字符串类型(比如存储的是"1"、"11"),把值改成字符串形式就行:
$filter=idCollection/any(id: id eq '1') and idCollection/any(id: id eq '11')
这种写法会逐个验证集合里是否存在每个目标值,只有两个值都存在时,文档才会被筛选出来,正好满足你要的“与”条件需求。
内容的提问来源于stack exchange,提问作者Carlos Alves Jorge
相关产品推荐
相关产品推荐

