针对Azure认知搜索Int32Collection字段的OData筛选语法疑问
Azure认知搜索Int32Collection字段筛选问题解答
筛选失败原因
你用的wi_is/any(p: p eq 8 and p eq 10)逻辑有误:any的作用是检查集合中是否存在单个元素满足括号内的条件。但单个整数不可能同时等于8和10,这个条件永远无法成立,所以匹配不到目标文档。而wi_is/any(p: p eq 10)是检查集合中存在等于10的元素,刚好符合目标文档的情况,所以能匹配成功。
正确筛选语法
要找出同时包含8和10的文档,需要分别检查集合中是否存在这两个元素,再用and连接条件,有两种常用写法:
写法一:使用两次any
wi_is/any(p: p eq 8) and wi_is/any(p: p eq 10)
写法二:使用contains函数
对于Int32Collection类型,contains函数可以直接检查集合是否包含指定元素,语法更简洁:
contains(wi_is, 8) and contains(wi_is, 10)
内容的提问来源于stack exchange,提问作者authentic Sailor
相关产品推荐
相关产品推荐

