Solr - Группировка по часам и полю из поля даты - PullRequest
0 голосов
/ 07 марта 2019

У меня много документов в Solr 7 со схемой, приведенной ниже: (Я упростил данные). У меня есть большие возможности для значений "пользователь" и "дата".

{
    "user":"user1",
    "date":"2019-01-01T00:00:00Z",
},
{
    "user":"user1",
    "date":"2019-01-01T01:00:00Z",
},
{
    "user":"user2",
    "date":"2019-01-02T00:00:00Z",
},
{
    "user":"user3",
    "date":"2019-01-03T01:00:00Z",
},

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

Ожидаемый результат запроса, как показано ниже:

"00:00:00Z",2
 "user1",
 "user2"
"01:00:00Z",2
 "user1",
 "user3"

Я пытался использовать «facet.range and facet.range.gap», но я не уверен, что это актуально для моего варианта использования, так как в нем отсутствует пользователь «group by» и по часам. Вот что я попробовал:

select?q=*:*&facet=true&facet.range=date&facet.range.start=NOW/DAY-5YEARS&facet.range.end=NOW/DAY&facet.range.gap=%2B1HOUR

Что дает мне вывод, как показано ниже (1 строка в час в течение 5 лет):

"facet_counts":{
    "facet_queries":{},
    "facet_fields":{},
    "facet_ranges":{
      "date":{
        "counts":[
          "2014-03-07T00:00:00Z",432,
          "2014-03-07T01:00:00Z",832,
          "2014-03-07T02:00:00Z",334,
          "2014-03-07T03:00:00Z",213,
          "2014-03-07T04:00:00Z",614,
          ...

Мне страшно, что в моей схеме отсутствует поле для хранения только часов, чтобы можно было вычислять фасеты по часам. Но даже тогда я не смог бы сгруппировать по часам и пользователю.

Мой вопрос: как я могу получить ожидаемый результат запроса выше?

...