在Solr中的多面场上刻面

时间:2019-07-09 10:43:40

标签: solr lucene

我有一些文件,例如:

{
  myTime : <a date_time>,
  myVal : <a number>
}

我想知道该数字的最大每小时平均值。因此,基本上,我希望每个小时都有一个平均值为myVal的时段,然后找到该平均值的最大值。

我曾尝试使用Json Faceting进行如下操作,但它毫无用处,抱怨avgMyVal不是一个已知字段:

json.facet={
  maxAvgMyVal : "max(avgMyVal)",
  tempi: {
    type: range,
    field: myTime,
    start: "NOW-7DAYS",
    end: "NOW",
    gap: "%2B1HOUR",
    facet: {
      avgMyVal: "avg(myVal)"
    }
  }
}

有没有办法让Solr做到这一点?还是我错过了什么?

使用Solr 7.2.1。

1 个答案:

答案 0 :(得分:0)

可能可以在一个请求中执行此操作,但是您至少可以对两个单独的请求(或者如果您不介意排序,则可以执行一个请求)。

您可以sort the facets by the value returned by your avg function并检索第一个值:

sort: "avgMyVal desc"

..在您的tempi定义中。如果您需要按tempi中的间隔对结果进行排序,则可以对结果进行排序以在检索后显示,也可以进行两次查询-使用limit: 1来检索{{1}中的最大值}。