json.facet может быть полезным здесь. Вы можете использовать ниже запрос, и он даст вам ответ в соответствии с вашими потребностями. В этом запросе сначала создаются сегменты для поля категории, отсортированные в порядке возрастания, а затем вложенные сегменты идентификаторов, отсортированные с учетом значения lucene для запроса, прошедшего через параметр " qq ".
Я использовал функциональный запрос, который мы используем, чтобы оценить количество люценов для данного запроса. Пока это простой запрос, но вы также можете создать комплекс и передать его в параметр qq. Прочитайте здесь: - https://lucene.apache.org/solr/guide/6_6/function-queries.html не получите больше информации о функциональных запросах.
q=*&qq=category:a&json.facet={
categories:{
type:terms,
field:category,
sort:{index:asc},
facet:{
id:{
type:terms,
field:id,
sort:"query_score desc",
facet:{
query_score:"min(if(exists(query($qq)),query($qq),0))"
}
}
}
}
}
[ Ответ на вышеуказанный запрос ]
{
"responseHeader":{
"status":0,
"QTime":7,
"params":{
"qq":"category:a",
"q":"*",
"json.facet":"{ categories:{ type:terms, field:category, sort:{index:asc}, facet:{ id:{ type:terms, field:id, sort:\"query_score desc\", facet:{ query_score:\"min(if(exists(query($qq)),query($qq),0))\" } } } } }",
"indent":"on",
"fl":"*,query($qq,-1)",
"rows":"0",
"wt":"json"}},
"response":{"numFound":5,"start":0,"docs":[]
},
"facets":{
"count":5,
"categories":{
"buckets":[{
"val":"a",
"count":3,
"id":{
"buckets":[{
"val":"1",
"count":1,
"query_score":0.5389965176582336},
{
"val":"3",
"count":1,
"query_score":0.5389965176582336},
{
"val":"5",
"count":1,
"query_score":0.5389965176582336}]}},
{
"val":"b",
"count":2,
"id":{
"buckets":[{
"val":"1",
"count":1,
"query_score":0.5389965176582336},
{
"val":"2",
"count":1,
"query_score":0.0}]}},
{
"val":"c",
"count":2,
"id":{
"buckets":[{
"val":"5",
"count":1,
"query_score":0.5389965176582336},
{
"val":"2",
"count":1,
"query_score":0.0}]}},
{
"val":"d",
"count":2,
"id":{
"buckets":[{
"val":"2",
"count":1,
"query_score":0.0},
{
"val":"4",
"count":1,
"query_score":0.0}]}},
{
"val":"e",
"count":3,
"id":{
"buckets":[{
"val":"3",
"count":1,
"query_score":0.5389965176582336},
{
"val":"2",
"count":1,
"query_score":0.0},
{
"val":"4",
"count":1,
"query_score":0.0}]}}]}}}
Для получения дополнительной информации о json.facet: - https://lucene.apache.org/solr/guide/7_2/json-facet-api.html