我有一个solr集合,我需要一些基于数据的计算。我有TotalLapTime和DrivingTime,驱动程序的完成速度是DrivingTime*100/TotalLapTime。我想找出每个队的平均完成时间。如何查询Solr以获得此结果?我只能使用统计数据得到DrivingTime之和。我在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%发布于 2022-09-16 07:16:01
首先,基于文档的搜索索引和分析的一个特点是,您通常应该尽可能多地进行预处理,因为您的数据通常只读取一次,然后在许多不同的上下文中进行分析。因此,在这种情况下,将completion_time作为一个单独的字段添加并在将文档提交到索引时进行计算将是最好的做法。
这使得在字段上进行任何进一步的分析变得容易得多,然后我们可以使用JSON Facet API每次创建桶,然后计算落入该桶中的条目的平均完成时间。
从Solr按嵌套函数排序方面的示例示例中获得:
{
"query": "*:*",
"facet": {
"categories":{
"type": "terms",
"field": "TEAM",
"limit": 3,
"sort": "avg_completion_time asc",
"facet": {
"avg_completion_time": "avg(completion_time)",
}
}
}
}https://stackoverflow.com/questions/73722999
复制相似问题