我怎样才能在 Azure 搜索中获得不同的字段计数
How could I go about getting distinct field counts in Azure Search
我有一个包含大约 3500 万个文档的索引。当用户使用搜索词和过滤器的任意组合发出查询时,我需要在另一个字段上获取唯一值的计数。目的是回答问题"How many unique (field x) are there with a given query?".
我很确定 Azure 搜索没有任何功能可以做到这一点,所以我想我会尝试做另一个查询,我 select 只是我想计算不同值的字段,但我认为对于如此大的索引,这将非常耗时。我也觉得我最多只能跳过 100,000 条记录,如果查询返回超过 100,000 个结果,我将无法执行此操作。
关于如何解决这个问题有什么想法吗?
谢谢!
Azure 搜索目前不直接支持不同的值计数。为了在与 $filter
结合的单个查询中支持它,它要么必须作为新的方面类型得到支持,要么可能与 $count
和 $filter
的组合一起支持,其中字段being counting是关键字段(注意$count
和$filter
今天不能合并)
随时向 Azure Search feedback forum 添加不同的计数以帮助确定功能的优先级。
原答案
如果您想要每个唯一值的文档计数,您可以使用构面。例如,如果您要搜索 100 美元以下的鞋子,并且想知道在所有匹配项中每种颜色的鞋子有多少,您可以这样做:
GET /indexes/products/docs?search=shoes&$filter=price+lt+100&facet=color&api-version=2015-02-28
响应将包含一个 @search.facets
属性,其中包含每个唯一值的存储桶以及一个计数。您可以找到更多信息 here and here.
我有一个包含大约 3500 万个文档的索引。当用户使用搜索词和过滤器的任意组合发出查询时,我需要在另一个字段上获取唯一值的计数。目的是回答问题"How many unique (field x) are there with a given query?".
我很确定 Azure 搜索没有任何功能可以做到这一点,所以我想我会尝试做另一个查询,我 select 只是我想计算不同值的字段,但我认为对于如此大的索引,这将非常耗时。我也觉得我最多只能跳过 100,000 条记录,如果查询返回超过 100,000 个结果,我将无法执行此操作。
关于如何解决这个问题有什么想法吗?
谢谢!
Azure 搜索目前不直接支持不同的值计数。为了在与 $filter
结合的单个查询中支持它,它要么必须作为新的方面类型得到支持,要么可能与 $count
和 $filter
的组合一起支持,其中字段being counting是关键字段(注意$count
和$filter
今天不能合并)
随时向 Azure Search feedback forum 添加不同的计数以帮助确定功能的优先级。
原答案
如果您想要每个唯一值的文档计数,您可以使用构面。例如,如果您要搜索 100 美元以下的鞋子,并且想知道在所有匹配项中每种颜色的鞋子有多少,您可以这样做:
GET /indexes/products/docs?search=shoes&$filter=price+lt+100&facet=color&api-version=2015-02-28
响应将包含一个 @search.facets
属性,其中包含每个唯一值的存储桶以及一个计数。您可以找到更多信息 here and here.