Lucene: Non-Range запросы к числовому полю - PullRequest
3 голосов
/ 07 января 2012

В настоящее время мы используем люцен 2.3.2.Мы дополняем целые числа ведущими нулями и индексами, чтобы мы могли также поддерживать запросы диапазона.Мы работаем над обновлением до версии 3.4 и хотим использовать NumericRangeQueries.Мы также хотим поддерживать не-диапазонные запросы для числовых полей.Есть ли способ использовать числовые поля и поддерживать запросы в виде списка на числовых полях в lucene.

request_id:(123, 124, 253)

Я знаю, что приведенный выше запрос может быть переведен в

request_id:[123 TO 123] OR request_id:[124 TO 124] OR request_id:[253 TO 253]

Нозапрос будет слишком длинным, когда пользователь выдаст огромный список.Есть ли способ получить лучшее из обоих подходов?(выигрыш в производительности при запросах диапазона от индексирования в виде числовых полей и поддержки запросов в списке без преобразования их в запросы псевдодальности)

1 Ответ

0 голосов
/ 01 октября 2012

Похоже, что для этого нужно использовать org.apache.lucene.util.NumericUtils, например:

new TermQuery(new Term("field",
NumericUtils.intToPrefixCoded(myInt)));

Хотя, насколько я понимаю, он должен быть оптимизирован для обработки запросов диапазона с одинаковыми минимальными и максимальными значениями, поэтому приведенный вами пример запроса не должен вызывать больше затрат, чем приведенный здесь пример.

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