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

Solr5中按团队统计计算列平均值的查询方法

按Team分组统计平均完成率(Solr5)

针对你的需求,Solr5可以通过函数查询结合Stats组件直接实现,无需预处理数据,具体方案如下:

核心查询逻辑

利用Solr内置函数实时计算每个文档的完成率,再通过stats.facet按Team字段分组统计平均值。完成率公式对应Solr函数表达式:div(mul(DrivingTime, 100), TotalLapTime)

具体查询参数

q=*:*&stats=true&stats.facet=Team&stats.field=div(mul(DrivingTime,100),TotalLapTime)

参数说明:

  • q=*:*:匹配集合中所有文档
  • stats=true:启用Stats统计组件
  • stats.facet=Team:指定按Team字段进行分组统计
  • stats.field=div(mul(DrivingTime,100),TotalLapTime):定义实时计算完成率的函数字段,Stats组件会自动对每个分组内的该函数值求平均

查询结果解析

返回的JSON结果中,stats.facet.Team节点下会包含各Team的统计数据:

  • 每个Team分组内的stats_fields.div(mul(DrivingTime,100),TotalLapTime).avg即为该组的平均完成率
  • 将平均值按需求保留小数位数并添加百分号,即可得到预期格式(比如Team A的平均完成率为37.5%,可按需四舍五入为37%)

备选方案:预处理字段(性能优化场景)

如果数据量极大,实时函数计算影响查询性能,可提前在索引阶段完成完成率计算:

  1. 修改schema.xml,新增存储完成率的字段:
    <field name="CompletionRate" type="float" indexed="false" stored="true"/>
    
  2. 索引数据时,提前计算每个文档的CompletionRate = (DrivingTime * 100) / TotalLapTime并写入该字段
  3. 查询时使用简化的统计参数:
    q=*:*&stats=true&stats.facet=Team&stats.field=CompletionRate
    

内容的提问来源于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.19 06:45:41