Объем свободного дискового пространства, необходимый для Lucene IndexWriter.ExpungeDeletes () - PullRequest
4 голосов
/ 04 января 2012

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

Я понимаю, что если кто-то хочет навсегда удалить документы, помеченные для удаления из индекса Lucene, у него есть два варианта:

  1. Indexwriter.Optimize () ИЛИ

  2. Indexwriter.ExpungeDeletes ()

Поскольку оптимизация индекса для каждого сеанса удаления стоит дорого и занимает много времени, а также требует 2X свободного дискового пространства , поэтому в ситуациях, когда дискового пространства не хватает, Optimize (), похоже, не хороший выбор.

Так что, очевидно, мне пришлось пойти на ExpungeDeletes (), который, как утверждается, требует меньше времени и не требует объединения всех сегментов, так что, надеюсь, он не требует 2х свободного пространства.

Но, тем не менее, эта операция требует некоторого свободного дискового пространства для успешного объединения определенных сегментов.

Итак, мой вопрос:

Сколько свободного диска требуется ExpungeDeletes () для успешного выполнения задачи?

Я задаю этот вопрос, потому что я проверил его с некоторыми индексами, которые уже были оптимизированы и объединены в один сегмент ... и я обнаружил, что expungedeletes () в этом случае преуспевает только тогда, когда свободное место на диске составляет по крайней мере тот же размер, что и индекс, иначе оно выдает исключение: MergePolicy-MergeException

Кроме того, можно ли как-нибудь предотвратить это исключение в вышеупомянутом случае?

Заранее спасибо.

1 Ответ

1 голос
/ 04 января 2012

Вас может заинтересовать выпуск JIRA 3577 .Подводя итог: expungeDeletes - плохое имя, потому что оно не просто удаляет удаления и оставляет остальную часть индекса в покое.

Если вы хотите узнать точную производительность: expungeDeltes просто вызывает объединение для каждого сегмента, который удаляет.Что в вашем случае звучит так, как будто это может быть каждый сегмент, так что ... примерно эквивалентно вызову optimize.

А что с вашими поисками не работает, что, по вашему мнению, необходимо для оптимизации?

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