Группа SOLR по разным диапазонам дат - PullRequest
0 голосов
/ 22 ноября 2018

У меня много данных в solr, например:

{
    id: some_id
    date: 2008-01-01T00:00:00Z
    price: 34.20
    currency: "CAD"
    weight: 39.9
    etc
}

Я бы хотел выполнить поиск по нему, чтобы найти уникальный набор идентификаторов и сгруппировать их по времени.Поэтому иногда я хочу найти элементы, которые удовлетворяют поиску для каждого дня, недели или месяца.

Первый способ, которым я попытался это сделать, - установить fq (запрос поля) в диапазоне датЯ хочу, и установить facet.field=id, чтобы получить уникальный идентификатор для этого диапазона, но если я хочу делать это каждый день, мне нужно будет выполнить 365 (+ 0 / + 1) запросов, что довольно болезненно иочень медленно.

Решением этой проблемы было использование facet.pivot=date,id, которое разбивало бы это на каждый день, а затем для каждого дня давало набор идентификаторов.Это идеально подходит для дневного случая!Тем не менее, как мы можем добиться того же за неделю?Или ежемесячно?

Я хочу, чтобы первый facet.pivot, который является датой, был диапазоном значений.Таким образом, вместо того, чтобы получить это:

{
  "responseHeader":{
    ...
  },
  "facet_counts":{
    ...
    "facet_pivot":{
      "date,id":[{
          "field":"date",
          "value":"2008-01-01T00:00:00Z",
          "count":923,
          "pivot":[{
              "field":"id",
              "value":18,
              "count":1},
            {
              "field":"id",
              "value":66,
              "count":1},
            {
              "field":"id",
              "value":70,
              "count":1},
        ]
      }
      ...]
    }
}

Мы получаем что-то вроде этого:

{
  "responseHeader":{
    ...
  },
  "facet_counts":{
    ...
    "facet_pivot":{
      "date,id":[{
          "field":"date",
          "value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
          "count":923,
          "pivot":[...similar to above]
      }
      ...]
    }
}

Другими словами, вместо того, чтобы группировать на основе значения date, он группирует на основев диапазоне / интервале / и т. д.Я играл с интервалом SOLR, диапазоном и т. Д., Но, похоже, не могу получить что-то, что работает.

1 Ответ

0 голосов
/ 23 ноября 2018

Пожалуйста, попробуйте, как показано ниже, чтобы получить месячный диапазон с разрывом недели.

facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id

Надеюсь, это поможет!

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