我正在尝试框显Azure搜索查询。字段类型是Azure搜索索引中的集合(Edm.String)。我要过滤的JSON数据是这样的:"A","B“。
当我尝试使用'A‘中的查询字母表进行过滤时,它会带出其中包含"A“的所有条目。但是当我试图在我的代码中构造相同的查询时,比如“字母表中的‘A’”,它抛出了一个异常,声明:
“无效的表达式:表达式包含不支持的OData语言功能。请修改您的查询,然后重试。
参数名称:$filter“。
是否有其他Azure查询可以用来过滤我的JSON数据?
注意:我不能使用eq,因为我的字段是多值的,而eq只能处理单值。
发布于 2019-05-09 15:09:21
如果你想过滤一个需要包含多个值的集合,例如,你想查询所有集合都有"A“和"B”的结果,可以尝试下面的过滤表达式:
假设您的集合字段名为"alphabet“
$filter=alphabet/any(s: s eq 'A') and alphabet/any(s: s eq 'B')
发布于 2019-05-10 03:54:30
解决这个问题的方法是使用像search.ismatch('A,B','Alphabet','simple','any')这样的search.ismatch查询。因此,结果将包含包含A和/或B的所有记录的搜索结果。
参考:https://docs.microsoft.com/en-us/azure/search/query-odata-filter-orderby-syntax
https://stackoverflow.com/questions/56045916
复制相似问题