Сортировка по многозначному полю в Solr
Я знаю, что многозначная сортировка полей не поддерживается в Solr . Но есть ли способ сортировки многозначных полей в Solr . У меня есть два документа с полем custom_code и значения, как показано ниже,
Док 1: 11, 78, 45, 22
Док 2: 56, 74, 62, 10
Когда я сортирую это в порядке возрастания, порядок должен быть,
Док 2: 56, 74, 62, 10
Док 1: 11, 78, 45, 22
Здесь Doc 2 будет первым, потому что он имеет наименьший элемент 10 (который больше, чем 11 документа 1).
Как мы можем достичь этого в Solr . Какой самый простой способ?
3 ответа
Создайте поле копирования, чтобы скопировать содержимое многозначных данных в отсортированное объединенное одиночное значение без запятых и использовать его для сортировки.
Например:
Док 1:
multiValuedData: 11, 78, 45, 22
sortedConcatenatedSingleValue: 11224578
Документ 2:
multiValuedData: 56, 74, 62, 10
sortedConcatenatedSingleValue: 10566274
Если вы не можете создать это однозначное поле во время генерации данных из источника, то вы можете использовать преобразователь сценария ( https://wiki.apache.org/solr/DataImportHandler) в течение индексного времени, чтобы создать это поле sortedConcatenatedSingleValue, используя функция JavaScript.
Вы можете получить из коробки в 5.3 - https://issues.apache.org/jira/browse/SOLR-2522
Хорошее описание здесь - https://lucidworks.com/blog/2015/09/10/minmax-on-multivalued-field/
Если бы эта проблема была реализована, вы могли бы просто использовать это, как в описании заявки. Но это еще не так.
Итак, еще одна вещь, которую вы можете сделать, это проиндексировать дополнительное поле min_code
, не многозначный и положить минимальное значение custom_code
там. Вы можете сделать это на стороне клиента или в Solr в UpdateRequestProcessor. Тогда вы просто сортируете на min_code