【问题标题】:What is the correct search.in syntax for Azure Search?Azure 搜索的正确 search.in 语法是什么?
【发布时间】:2018-04-11 18:23:28
【问题描述】:

我已经使用Microsoft Docs page relating to this topic 很长时间了。我一直在阅读文档和 cmets,但找不到适合我的查询的正确语法。

我有一个文档,其中有一个PrimaryUnitTypeId 字段,其类型为Edm.Int32。我想过滤该字段返回的文档,并想一次使用多个值。我正在使用该 .NET 客户端库以及 Azure 门户中的搜索资源管理器。

如果过滤器如下,我的查询有效: (PrimaryUnitTypeId eq 1 or PrimaryUnitTypeId eq 2)

文档页面顶部的一条注释指出,这是解决此问题的次优方法,应改用 search.in 函数。

我尝试将过滤器切换为 search.in(PrimaryUnitTypeId, '1,2')search.in(PrimaryUnitTypeId, '1,2', ','),根据文档,这似乎是正确的语法,但我一直收到以下错误:

无效的表达式:具有名称的函数没有函数签名 'search.in' 匹配指定的参数。函数签名 考虑的是:search.in(Edm.String, Edm.String, Edm.String); search.in(Edm.String, Edm.String)。\r\n参数名称:$filter

我尝试使用 API 的 2016-09-012016-09-01-Preview 版本均无济于事。

我需要如何修改上述过滤器才能让 Azure 搜索识别并应用过滤器?

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

    search.in 函数目前仅支持Edm.String 类型的字段。您可以通过添加一个新的字符串字段并用您的整数数据填充它,或者通过更改 PrimaryUnitTypeId 字段的类型并重新创建/重新填充您的索引来使这个场景工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多