apache - 关于 Json Facet 聚合的 Solr-Filter
问题描述
我有一个用例,我需要从方面过滤聚合值。
分面过滤器是否允许这样做?
示例: 获取大于 0 的数字字段的总和按国家/地区分组
所以我的杰森方面看起来像
json.facet={cty:{type:terms,field:country,facet:{sum_value:”sum(population)”}}}
在上述请求中,我需要添加一个过滤器以仅返回那些 cty 存储桶sum_value is >100
解决方案
好吧,我们之前也遇到过类似的任务,我想说 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 字段。此外,通过不进行实时聚合,您将节省大量时间。
推荐阅读
- asp.net - 即使在 asp.net core razor 页面中选中,复选框列表也会返回 false
- python-3.x - 无法从“google.cloud”(未知位置)导入名称“dataproc_v1”
- regex - 如何使用 RewriteBase 将 `localhost` 更改为 `localhost/subdir`?
- java - 有没有办法在 Spring RSocket 中查看 REQUEST_N 交换
- linux - 将 Ubuntu 中不存在的命令映射到现有命令
- c# - 将列表中每一项的值提交给控制器(MVC)
- c++ - 如何将字节从 uint64_t 转换为 double?
- php - 循环不会在返回时停止?
- typescript - Deno logger FileHandler 不写入文件
- html - 在第一个字符上输入占位符样式