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

Solr Facet查询:如何按公司维度统计唯一播放记录数?

问题解答

你的需求完全可以实现,但当前的查询语句存在问题——你定义的unique_internal_plays和unique_external_plays只是普通的Query Facet,只会返回匹配company:100或-company:100的文档总数,并非你需要的唯一播放记录数。

修正后的查询语句

只需在这两个Query Facet中加入unique(uuid)的聚合逻辑即可,具体写法如下:

{
  "facet": {
    "unique_viewers": "unique(uuid)",
    "internal_plays": {
      "type": "query",
      "q": "company:100"
    },
    "external_plays": {
      "type": "query",
      "q": "-company:100"
    },
    "unique_internal_plays": {
      "type": "query",
      "q": "company:100",
      "func": "unique(uuid)"
    },
    "unique_external_plays": {
      "type": "query",
      "q": "-company:100",
      "func": "unique(uuid)"
    }
  }
}

说明

  • 通过在Query Facet中使用func字段指定unique(uuid),可以直接计算出该查询范围内(company:100或非company:100)的唯一uuid数量,也就是你要的唯一播放记录数。
  • 如果需要更结构化的返回结果,也可以采用嵌套子Facet的写法:
{
  "facet": {
    "unique_viewers": "unique(uuid)",
    "internal_plays": {
      "type": "query",
      "q": "company:100"
    },
    "external_plays": {
      "type": "query",
      "q": "-company:100"
    },
    "unique_internal_plays": {
      "type": "query",
      "q": "company:100",
      "facet": {
        "count": "unique(uuid)"
      }
    },
    "unique_external_plays": {
      "type": "query",
      "q": "-company:100",
      "facet": {
        "count": "unique(uuid)"
      }
    }
  }
}

两种写法都能满足你的统计需求,可根据返回结果的格式偏好选择。

内容的提问来源于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 04:05:54