2010-10-12 3 views
9

В настоящее время я вызываю метод оптимизации индексатора после завершения записи. Поскольку мой набор данных огромен, для оптимизации индекса требуется много времени (и требуется больше места (2 * фактический размер)). Меня это очень беспокоит, потому что в индекс часто входит множество документов.Обязательно ли оптимизировать индекс lucene после записи?

Так

  1. это нормально, чтобы выключить Оптимизировать?
  2. Каковы последствия производительности, например, насколько медленнее запрос, когда он не optmized?

Приветствия

ответ

14

Lucene FAQ говорит:

Что такое оптимизация индекса и когда я должен использовать?

Класс IndexWriter поддерживает метод optimize(), который уплотняет базу данных индексов и ускоряет запросы. Вы можете использовать этот метод после полной индексации вашего набора документов или после инкрементных обновлений индекса. Если ваше инкрементное обновление часто добавляет документы, вы хотите выполнить оптимизацию только один раз в то время, чтобы избежать дополнительных накладных расходов на оптимизацию.

Если я решил не оптимизировать индекс, когда удаленные документы действительно удаляются?

Удаленные документы помечены как удаленные. Однако пространство, которое они потребляют в индексе, не восстанавливается до тех пор, пока индекс не будет оптимизирован. Это пространство также будет восстановлено, поскольку в индекс добавляется больше документов, даже если индекс не оптимизируется.

+0

это действительно полезно ....... :) – RameshVel

1

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

Согласно javadocs, «в средах с частыми обновлениями оптимизация лучше всего выполняется при малых томах, если вообще». Вы должны только оптимизировать, когда это необходимо. Если только 5% ваших документов изменились с момента последнего оптимизации, тогда это не обязательно, поэтому ознакомьтесь с тем, как часто меняются ваши документы. Может быть, вы можете optimise реже, раз в несколько часов или раз в день.

Также обратите внимание на this thread, в котором они советуют вообще не оптимизировать вызов в среде, индексы которой постоянно обновляются и вместо этого устанавливают низкий mergeFactor.

+0

спасибо за ссылку .. :) – RameshVel

Смежные вопросы