能否为Solr JSON Facet API统计函数添加域过滤?
Solr 9.0.0 实现带Domain Filter的唯一作者统计
你可以通过嵌套JSON Facet并在父级定义domain过滤的方式,让unique()统计函数和terms分面共享同一个过滤后的数据集,无需修改基础查询。具体实现如下:
核心请求示例
提交这样的JSON查询请求:
{ "query": "\"War and Peace\"", "facet": { "filtered_author_scope": { "domain": { "filter": "author:*doge*" }, "facet": { "top_100_doge_authors": { "terms": { "field": "author", "limit": 100 } }, "total_unique_doge_authors": "unique(author)" } } } }
逻辑说明
- 外层的
filtered_author_scope是自定义facet块,通过domain.filter指定作者字段包含'doge'的过滤条件,所有子facet都会基于这个过滤后的结果集执行。 top_100_doge_authors就是你需要的前100个符合条件的作者terms分面。total_unique_doge_authors通过unique(author)统计该过滤结果集中的唯一作者总数,直接得到目标数值。
注意事项
- 确保
author字段的Schema配置适合分面:如果是文本字段,建议使用keyword分词器或设置为string类型,避免分面时出现拆分后的碎词,导致统计和分面结果不准确。 domain.filter支持Solr标准查询语法,比如精确匹配用author:doge,模糊匹配用author:*doge*,可根据实际需求调整。
内容的提问来源于stack exchange,提问作者Ben Birney
相关产品推荐
相关产品推荐

