Огранка на ограненном поле в Solr - PullRequest
0 голосов
/ 09 июля 2019

У меня есть коллекция документов, таких как:

{
  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 голосов
/ 09 июля 2019

Возможно сделать это за один запрос, но вы можете сделать это, по крайней мере, с двумя отдельными запросами (или одним запросом, если вы не возражаете против сортировки).

Вы можете отсортировать фасеты по значению, возвращенному вашей avg функцией , и получить первое значение:

sort: "avgMyVal desc"

.. в вашем tempi определении. Если вам нужно отсортировать результат по интервалам в tempi, вы можете либо отсортировать его для отображения после извлечения, либо сделать два запроса - используйте limit: 1 для получения наибольшего значения в avgMyVal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...