在 Azure 搜索中搜索空\null 字符串字段的查询

Nat*_*ats 6 azure-cognitive-search

您好,我有一个字符串字段,对于某些文档可以为空\null。我想知道如何搜索这些文档。

我想通过 searchquery 而不是 ODatFilter 了解,因为我可能想解决以下情况:

  1. 在此字段 A 中搜索空\null
  2. 在此字段 A 中搜索子字符串(例如:A:test)
  3. 搜索空\null 或包含测试的值。

因此,ODataFilter 建议无助于实现 #2,因此 #1 应该使用 searchQuery。

任何帮助表示赞赏。

Bru*_*ton 7

search.ismatch实际上,您可以使用或search.ismatchscoring函数将 OData 过滤器与搜索查询结合起来。这些函数允许您将全文搜索查询嵌入到过滤器中,这将允许您解决所有场景:

  1. $filter=A ne null
  2. $filter=A ne null and search.ismatchscoring('A:test', null, 'full', null)或同等地,$filter=A ne null&search=A:test&queryType=full
  3. $filter=A eq null or search.ismatchscoring('A:test', null, 'full', null)--由于“或”运算符,这只能通过过滤器和search.ismatch/来实现。search.ismatchscoring

上面情况 2 中的过滤器A ne null实际上是多余的,因为空值不会匹配任何全文搜索查询,但在情况 3 中您想要匹配空值,过滤器就是实现这一点的方法。