ОБНОВЛЕНИЕ : Как сказал @basZero в своем комментарии, начиная с Lucene 2.9, вы можете добавить числовые поля к своим документам. Просто не забудьте использовать NumericRangeQuery вместо RangeQuery при поиске.
Оригинальный ответ
Lucene рассматривает числа как слова, поэтому их порядок в алфавитном порядке:
0
1
12
123
2
22
Это означает, что для Lucene 12 находится между 0 и 2. Если вы хотите сделать правильный числовой диапазон, вам нужно проиндексировать числа с нулем, а затем выполнить поиск диапазона [0000 TO 0002]. (Необходимое количество отступов зависит от ожидаемого диапазона значений).
Если у вас отрицательные числа, просто добавьте еще один ноль для неотрицательных чисел. (РЕДАКТИРОВАТЬ: НЕПРАВИЛЬНО НЕПРАВИЛЬНО . См. Обновление)
Если ваши числа включают дробную часть, оставьте все как есть и добавьте в ноль только целую часть.
* * Пример тысяча двадцать-один: * * 1 022
-00002.12
-00001
000000
000001
000003.1415
000022
ОБНОВЛЕНИЕ : Отрицательные числа немного сложнее, так как -1 идет перед -2 в алфавитном порядке. Эта статья дает полное объяснение о работе с отрицательными числами и числами в целом в Lucene. По сути, вы должны «кодировать» числа во что-то, что делает порядок элементов понятным.