首页 > 解决方案 > 在 Solr 中的分面字段上分面

问题描述

我有一系列文件,例如:

{
  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。

标签: solrlucene

解决方案


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

您可以按函数返回的值对构面进行排序avg并检索第一个值:

sort: "avgMyVal desc"

..在您的tempi定义中。如果您需要按 中的间隔对结果进行排序tempi,您可以在检索后对其进行排序以显示,或者进行两次查询 - 用于limit: 1检索 中的最大值avgMyVal


推荐阅读