代码之家  ›  专栏  ›  技术社区  ›  Pete Herc

查询/筛选Azure Search Edm。由多个字符串中的任何一个进行收集

  •  1
  • Pete Herc  · 技术社区  · 7 年前

    我正在尝试筛选azure搜索edm。如果集合中有多个字符串,则返回结果。我只能在查询一个项目时使其工作,这对于我的用例来说不够好。我找不到查询多个参数的语法。

    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 回复  |  直到 7 年前
        1
  •  4
  •   Bruce Johnston    7 年前

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

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

    对于大量值, 搜索在里面 比使用以下组合要快得多 or eq ,并且它可以处理更多的值,而不会达到过滤器复杂性的硬限制。

        2
  •  0
  •   Pete Herc    7 年前

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