Apache lucene: сортировка чисел и немецкий умлаут - PullRequest
0 голосов
/ 23 ноября 2018

Есть ли возможность в Apache lucene правильно сортировать числа и немецкие умлауты, что означает, например, "Ü" следует интерпретировать как "Ue", что означает, что порядок сортировки равен

U, Ü, Z 

, а не:

U, Z, Ü

как по умолчанию в lucene.

Сортировка чисел, таких как

1, 2, 3, 100, 101, 102 

и не как по умолчанию в lucene:

1, 100, 101, 102, 2, 3

Howя могу решить записи таким образом?

Спасибо!

1 Ответ

0 голосов
/ 18 декабря 2018

Да, это возможно.Сначала о немецком языке, лучший способ разобраться с языком в Lucene - это использовать ICU library .Для Lucene у нас есть соответствующая lucene-analyzers-icu зависимость.

Вы можете использовать ICUCollationDocValuesField для сортировки значений.

final Collator instance = Collator.getInstance(ULocale.GERMAN);
final ICUCollationDocValuesField contents = new ICUCollationDocValuesField("contents", instance);

Позже, используя это поле для создания документов, вы сможете позже отсортировать по этому полю и получить ожидаемые результаты (например, U, Ü, Z) * ​​1012 *

Полный рабочий пример можно найти там

Что касается сортировки чисел - вам просто нужно отсортировать их не как строки (что, похоже, вы делаете), но на самом деле сортировать их как числа SortField.Type.INT должно помочь вам в этом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...