Сортировка по многозначному полю в 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

Другие вопросы по тегам