обязательно ли оптимизировать индекс lucene после записи? - PullRequest
9 голосов
/ 12 октября 2010

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

Итак

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

Приветствие

Ответы [ 2 ]

14 голосов
/ 12 октября 2010

В FAQ по Lucene написано:

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

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

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

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

1 голос
/ 12 октября 2010

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

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

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

...