ConstantScoreRangeQuery в Lucene

Чем Lucene ConstantScoreRangeQuery лучше, чем старый RangeQuery?

В каком случае вы должны использовать все еще использовать RangeQuery?

1 ответ

Решение

Согласно документации RangeQuery в вашей ссылке, A ConstantScoreRangeQuery:

  • быстрее, чем RangeQuery.
  • не вызывает исключение BooleanQuery.TooManyClauses, если диапазон значений большой.
  • не влияет на оценку, основанную на нехватке отдельных терминов, которые могут совпадать.

Предположим, вы заинтересованы в том, чтобы более короткие термины оценивались выше (скажем, вы смотрите в диапазоне часов, но хотите, чтобы более редкие часы оценивались выше - возможно, вы ищете "медленный" период дня для запуска процесса резервного копирования), В этом случае более старый RangeQuery кажется предпочтительным.

Следующее поколение будет TrieRangeQuery, в настоящее время в разделе contrib. Это, вероятно, будет частью ядра Lucene 2.9. Он обеспечивает более быстрый диапазон запросов, чем оба других метода.

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