Как индексировать числовые поля и искать их по диапазону в Lucene.Net?

Я ищу эффективный способ индексировать и искать числовые поля в Lucene.Net. Сейчас мне нужны только целочисленные значения.

Я хочу искать по диапазонам значений (между x и y, больше чем x...). Прямо сейчас я индексирую число как есть и вручную создаю предложения для каждого значения между двумя значениями, но оно быстро генерирует множество предложений и достигает предела по умолчанию (1024), когда я ищу значение между 1000 и 5000, например. Я уверен, что есть лучший способ сделать это...

1 ответ

Решение

Решил это с помощью RangeQuery. Это также можно сделать с помощью анализатора запросов со следующим синтаксисом:

FieldName:[startValue TO endValue]

Имейте в виду, что запрос диапазона работает со строками, поэтому ваши числа должны быть нормализованы как в индексе, так и в запросе. В моем случае я нормализовал до 5 цифр с.ToString("00000"). Специальная обработка была бы необходима для отрицательных чисел и десятичных чисел, но это не было проблемой в моем случае.

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