ConstantScoreRangeQuery в Lucene
Чем Lucene ConstantScoreRangeQuery лучше, чем старый RangeQuery?
В каком случае вы должны использовать все еще использовать RangeQuery?
1 ответ
Решение
Согласно документации RangeQuery в вашей ссылке, A ConstantScoreRangeQuery:
- быстрее, чем RangeQuery.
- не вызывает исключение BooleanQuery.TooManyClauses, если диапазон значений большой.
- не влияет на оценку, основанную на нехватке отдельных терминов, которые могут совпадать.
Предположим, вы заинтересованы в том, чтобы более короткие термины оценивались выше (скажем, вы смотрите в диапазоне часов, но хотите, чтобы более редкие часы оценивались выше - возможно, вы ищете "медленный" период дня для запуска процесса резервного копирования), В этом случае более старый RangeQuery кажется предпочтительным.
Следующее поколение будет TrieRangeQuery, в настоящее время в разделе contrib. Это, вероятно, будет частью ядра Lucene 2.9. Он обеспечивает более быстрый диапазон запросов, чем оба других метода.