Первое, что нужно проверить, действительно ли вам нужно, чтобы это поле заголовка было многозначным, или у ваших документов действительно есть несколько заголовков?Если нет, вам просто нужно исправить определение поля, установив multivalued="false"
.
При этом сортировка по многозначному полю не имеет смысла, если только не определено, какое из этих нескольких значений следует использовать для сортировки или как объединить их в одно.
Допустим, нам нужно отсортировать заданный набор результатов по заголовку (в алфавитном порядке), сначала используя однозначное поле заголовка:
# Unsorted
"docs": [
{ "id": "1", "title": "One" },
{ "id": "2", "title": "Two" },
{ "id": "3", "title": "Three" },
]
# Sorted
"docs": [
{ "id": "1", "title": "One" },
{ "id": "3", "title": "Three" },
{ "id": "2", "title": "Two" },
]
# -> ok no problem here
Теперь применяем ту же логику с многозначнымПоле невозможно как есть, вам необходимо определить, какой заголовок использовать в каждом документе, чтобы правильно их отсортировать:
# Unorted
"docs": [
{ "id": "1", "title": ["One", "z-One", "a-One"] },
{ "id": "2", "title": ["Two", "z-Two", "a-Two"] },
{ "id": "3", "title": ["Three", "z-Three", "a-Three"] }
]
Надеемся, что Solr позволяет сортировать результаты по выводу функции, то есть выможет использовать любой из запросов функции Solr , чтобы «получить» одно значение для каждого поля заголовка.Ответ, на который вы ссылались, является хорошим примером, даже если он может не сработать для вас (поскольку в заголовке потребуется включить docValues - зависит от определения поля - и зная, что функции max / min следует использовать только с числовыми значениями), просто чтобы получитьидея:
# here the 2nd argument is a callback to max(), used precisely to get a single value from title
sort=field(title,max) asc