Как сгруппировать результаты моего запроса Solr, используя числовое поле, в x сегментов, где начальные и конечные значения сегмента определяются при выполнении запроса?
Например, если я хочу сосчитать и сгруппироватьдокументы в 5 блоков по полю wordCount, результаты должны быть:
250-500 слов: 3438 результатов
500-750 слов: 4554 результатов
750-1000 слов: 9854 результатов
1000-1250 слов: 3439 результатов
1250-1500 слов: 38 результатов
Документы по API граней Solr предполагают, что сегменты фасетов известны заранее, но это не такЭто возможно для числовых полей, поскольку нижний и верхний сегменты зависят от результатов поиска.
Мой текущий запрос (который не работает):
curl http://localhost:8983/solr/pages/query -d '
q=*:*&
rows=0&
json.facet={
wordCount : {
type: range,
field : wordCount,
start : max(wordCount),
end : min(wordCount),
gap : 1000
}
}'
Я прочитал этот вопрос , который предлагает вычислять сегменты в коде приложения перед отправкой их в Solr для подсчета. Это не идеально, поскольку требует многократных запросов к базе данных, а также ответ устарел на несколько лет, и с тех пор Solr добавил API-интерфейс граней JSON, который допускает более сложные параметры фасетирования.
В SQLэтот тип динамического группирования возможен с запросами объединения, в которых каждый запрос в объединении вычисляет нижнюю и верхнюю границы конкретного сегмента и подсчитывает результаты в этом сегменте. Поэтому кажется странным, что в Solr, где много усилий было сделано для упрощения огранки, такой запрос невозможен.