У меня много данных в 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, диапазоном и т. Д., Но, похоже, не могу получить что-то, что работает.