天蓝色搜索中$ filter和facet之间的区别是什么

dax*_*axu 4 azure-cognitive-search

相当新的天蓝色搜索,只是想知道facet和filter有什么区别?

假设我有一个产品表,它有类别和子类别.如果我想在一个类别下返回东西,我应该使用$ filter还是使用facet?这两者有什么区别?

非常感谢

Bru*_*ton 9

过滤器用于限制查询返回的文档.Faceting用于生成这些文档的字段值摘要.细节在这里,你可以找到有关如何使用刻面和过滤一起更一般的信息在这里.

对于您的特定示例,要检索一个类别的文档,请使用过滤器.如果您想要查看该类别的每个子类别中有多少文档(例如),请使用构面.


小智 6

如果与 SQL 进行比较,过滤器 equalsWhere 子句和 Facet 类似于 groupBy,尽管不完全一样。

下面是一个例子:

在此输入图像描述

现在,如果您想了解列表中每个国家/地区的数量,您可以按如下方式查询。

{
    search: '*',
    queryType: 'full',
    facets: [
      'country',
    ],
    count: true,
    searchMode: 'any',
    }
Run Code Online (Sandbox Code Playgroud)

它将返回完整的数据以及方面数据,例如:

{ "count": 2, "value": "India" }

否则要获取仅印度这样的国家的数据,您可以如下查询。

{
    search: '*',
    queryType: 'full',
    filter: "country:India",
    count: true,
    searchMode: 'any',
    }
Run Code Online (Sandbox Code Playgroud)

而你只得到 2 个数据作为回报。