2聚合函数的Solr构面除法

时间:2018-07-08 11:15:49

标签: solr aggregation facet

我在Solr核心中为每种记录存储2种数据类型。第一个是每天(total)的任务总数,第二个是每天完成的任务总数(finished)。我想使用solr json方面查询来计算每个完成了多少百分比的任务。像这样:

{
  finishedRate : {
    type : range,
    field : date,
    gap : "+1MONTH"
    facet: "div(sum(finished),sum(total))"
  }
}

但它说

  

org.apache.solr.search.SyntaxError:未知聚合   agg_div

我测试了以下查询来解决SyntaxError,但它为我提供了每个月一天内完成的最大任务百分比:

{
  finishedRate : {
    type : range,
    field : date,
    gap : "+1MONTH"
    facet: "max(div(sum(finished),sum(total)))"
  }
}

如何实现此查询?

1 个答案:

答案 0 :(得分:1)

前一段时间有类似的用例。搜索了Solr官方文档后,我最终放弃了将其划分为查询本身的想法。

我采用了另一种方法,即只计算Solr查询中的两个值,然后处理代码中的除法。

类似的东西-

{
  finishedRate : {
    type : range,
    field : date,
    gap : "+1MONTH",
    facet : {
      "finished tasks" : sum(finished),
      "total tasks" : sum(total)
    }
  }
}