Как индексировать числовые поля и искать их по диапазону в Lucene.Net?
Я ищу эффективный способ индексировать и искать числовые поля в Lucene.Net. Сейчас мне нужны только целочисленные значения.
Я хочу искать по диапазонам значений (между x и y, больше чем x...). Прямо сейчас я индексирую число как есть и вручную создаю предложения для каждого значения между двумя значениями, но оно быстро генерирует множество предложений и достигает предела по умолчанию (1024), когда я ищу значение между 1000 и 5000, например. Я уверен, что есть лучший способ сделать это...
1 ответ
Решил это с помощью RangeQuery. Это также можно сделать с помощью анализатора запросов со следующим синтаксисом:
FieldName:[startValue TO endValue]
Имейте в виду, что запрос диапазона работает со строками, поэтому ваши числа должны быть нормализованы как в индексе, так и в запросе. В моем случае я нормализовал до 5 цифр с.ToString("00000"). Специальная обработка была бы необходима для отрицательных чисел и десятичных чисел, но это не было проблемой в моем случае.