首页 > 解决方案 > 关于 Json Facet 聚合的 Solr-Filter

问题描述

我有一个用例,我需要从方面过滤聚合值。

分面过滤器是否允许这样做?

示例: 获取大于 0 的数字字段的总和按国家/地区分组

所以我的杰森方面看起来像

json.facet={cty:{type:terms,field:country,facet:{sum_value:”sum(population)”}}}

在上述请求中,我需要添加一个过滤器以仅返回那些 cty 存储桶sum_value is >100

标签: apachesolr

解决方案


好吧,我们之前也遇到过类似的任务,我想说 Solr 无法过滤计算值。您可以通过将限制设置为 -1 来获取所有方面,然后您需要在搜索应用程序上编写一些包装器(WEB API)来过滤方面列表。

json.facet={cty:{type:terms,field:country,limit:-1,facet:{sum_value:”sum(population)”}}}

或者,您可以在编制索引之前预先计算每个国家/地区的人口总和。请看下表。

|国家|人口| Total_Population|

| C1 | 12 | 25 |
| C1 | 13 | 25 |
| C2 | 14 | 49 |
| C2 | 35 | 49 |

稍后,您可以使用过滤器查询直接过滤 Total_Population 字段。此外,通过不进行实时聚合,您将节省大量时间。


推荐阅读