Solr中计算列的平均值

nwlls2ji  于 2022-09-27  发布在  Solr
关注(0)|答案(1)|浏览(240)

我有一个solr集合,需要根据数据进行一些计算。我有TotalLapTime和DrivingTime,驱动程序的完成率是DrivingTime*100/TotalLapTime。我想了解每个团队的平均完成时间。我如何向Solr查询此信息?我只能通过统计数据得到驾驶时间的总和。我在Solr5

Solr系列:

ID |DrivingTime|TotalLapTime| Team
    1  |   50    |    100       |  A
    2  |   25    |    100       |  A
    3  |   30    |    60        |  B
    4  |   50    |    60        |  B
    5  |   25    |    200       |  C

预期产出:

TEAM | AvgCompletionRate
  A  |      37%
  B  |      66.5%
  C  |      12.5%
slsn1g29

slsn1g291#

首先,基于文档的搜索索引和分析的一个特点是,您通常应该做尽可能多的预处理,因为您的数据“通常”只读取一次,然后在许多不同的上下文中进行分析。因此,在这种情况下,最好将completion_time添加为单独的字段,并在将文档提交到索引时计算它。
这使得对字段进行进一步分析变得更加容易,然后我们可以使用JSON Facet API为每次创建bucket,然后计算落入该bucket的条目的平均完成时间。
采用Solr的示例,通过嵌套函数对面进行排序示例:

{
  "query": "*:*",
  "facet": {
    "categories":{
      "type": "terms",
      "field": "TEAM",
      "limit": 3,
      "sort": "avg_completion_time asc",
      "facet": {
        "avg_completion_time": "avg(completion_time)",
      }
    }
  }
}

相关问题