通过多个字符串中的任何一个查询/过滤Azure搜索Edm.Collection

时间:2017-11-15 19:01:03

标签: azure lambda azure-search azure-search-.net-sdk

我正在尝试过滤天蓝色搜索edm.collection,以便在集合中有多个字符串中的任何一个时返回结果。我只能在查询一个项目时才能使用它,这对我的用例来说还不够好。我找不到查询多个参数的语法。

filter += "FirmTypes / any (x: x eq 'Big 4')";

以上工作并返回公司类型为Big 4的所有文件。

我尝试了多种方式(下面的一些方法)来过滤多个参数但没有成功

//filter += " OR any (x: x eq 'Industry')";
//filter += "FirmTypes / any (x: x eq 'Industry')";
//filter += "FirmTypes / any (x: x eq 'Big 4', 'Industry', 'PLC')"
//filter += "FirmTypes / any (x: x eq 'Big 4' or 'Industry' or 'PLC')"
//filter += "FirmTypes / any (x: x eq 'Big 4') or (x: x eq 'Industry')"
//filter += "FirmTypes / any (x: x eq 'Big 4')|(x: x eq 'Industry')"

有人能指出我正确的方向吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

过滤多个值的最佳方法是使用新的search.in函数:

FirmTypes/any(x: search.in(x, 'Big 4|Industry', '|'))

对于大量值,search.in明显快于使用oreq的组合,并且它可以处理更大数量的值而不会达到硬限制过滤复杂性。

答案 1 :(得分:0)

我发布后立即知道了。如果其他人有同样的问题

"FirmTypes / any (x: x eq 'Big 4') or FirmTypes / any (x: x eq 'Industry')"