При каких условиях безопасно выполнять операции ввода-вывода (перемещение / замена) по индексу люцен (компас)

Иногда возникает необходимость перестроить люцен-индекс с нуля. Поскольку я не хочу, чтобы индекс был неполным в течение нескольких часов при сборке, я использую отдельный экземпляр компаса, чтобы построить новый индекс и впоследствии заменить его в файловой системе. Перед этим все экземпляры компаса останавливаются с помощью SearchEngineIndexManager#stop()после этого они перезапускаются с помощью SearchEngineIndexManager#start()

Тем не менее, время от времени индекс кажется поврежденным во время этих операций.

Не безопасно ли заменить индекс в файловой системе, когда SearchEngineIndexManger остановлен? Есть ли другие необходимые меры предосторожности, чтобы рассмотреть, нужно ли мне работать с индексом lucene в файловой системе?

2 ответа

Решение

Мне удалось решить проблему, добавив 5 секунд sleep после остановки и перед повторным запуском IndexManager, Может быть, уродливое решение, но у меня работает.

Чтобы быть уверенным, я также добавил вызов SearchEngineIndexManager#clearCache() после перезапуска.

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

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