【问题标题】:Is it possible to query an Azure Search Index for a specified field of type Collection being not null?是否可以在 Azure 搜索索引中查询类型为 Collection 的指定字段不为空?
【发布时间】:2021-12-24 05:13:45
【问题描述】:

我需要查询一个大型 Azure 索引以查找特定字段(只是字符串的集合或数组)为空的所有记录,但我无法尝试使用 Odata 表达式来识别它们,因为显然这种类型的数据无法量化以用于过滤器:

{
   "search": "*",
   "queryType": "full",
   "select": "Email",
   "count": true,
   "filter": "Skills eq null"
}

尝试这种方式会抛出以下错误:

二元运算符“NotEqual”的操作数不是单个值。二元运算符要求两个操作数都是单个值。\r\n参数名称: $filter

那么在对应的 Collection(Edm.String) 是一个空数组的情况下,我该如何实现这些记录的列表呢?


      UPDATED

谢谢各位。根据推荐的解决方案,以下仅返回具有记录的集合。

{
    "searchMode": "any",
    "queryType": "full",
    "select": "QualifiedFor",
    "count": true,
    "filter": "Skills/any()"
}  

【问题讨论】:

标签: azure azure-cognitive-search


【解决方案1】:

$filter 使用 OData:

any 运算符将布尔表达式应用于 a 的每个成员 如果表达式对任何成员为真,则集合并返回真 集合,否则返回 false。任意运算符 如果集合不为空,则不带参数返回 true。

来源:http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html#_Toc371341806

正如@Guarav Matri 所说,只需使用$filter=Skills/any()

【讨论】:

  • 谢谢!这就是我追求的结果
猜你喜欢
  • 2019-08-05
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2021-03-13
相关资源
最近更新 更多