You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Solr Facet中添加带条件的统计字段(无法使用fq过滤器)

Solr Facet新增条件统计(无需fq)的实现方案

可行,你可以直接在Facet的统计函数里嵌入条件判断,不用依赖全局的fq过滤器。

修改后的查询示例:

{
    "facet":{
        "total_game_plays" : "count",
        "unique_game_players" : "unique(uuid)",
        "total_play_time":"sum(play_time)",
        "from_usa": "unique(case(country='US', uuid, null))"
    }
}

逻辑说明:

  • 用case函数做字段级条件过滤:当country等于US时返回用户的uuid,否则返回null
  • unique函数会自动忽略null值,最终统计的就是仅来自美国的唯一用户数

扩展场景:

  • 如果需要统计符合条件的记录总数(而非唯一用户),可以替换成:
    "from_usa_play_count": "sum(case(country='US', 1, 0))"
    
  • 如果country是多值字段(一条记录可能关联多个国家),可以用exists函数判断是否包含US:
    "from_usa": "unique(case(exists(query({!term f=country}US)), uuid, null))"
    

注意:确保你的Solr版本在4.0及以上,case和exists函数是这个版本之后才支持的。

内容的提问来源于stack exchange,提问作者Pit Digger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:55:28