В моем приложении Spring/Lucene я использую Lucene IndexWriter
, TrackingIndexWriter
, SearcherManager
и ControlledRealTimeReopenThread
.Индексы Lucene, удаляемые после перезапуска приложения
Сейчас я пытаюсь проиндексировать тысячи документов. Для этого я добавил Apache ActiveMQ и индексировал каждый документ в отдельном сообщении.
Я заметил одну серьезную проблему - в случае аномального завершения JVM после перезапуска следующего приложения мой индекс Lucene пуст, потому что операция IndexWriter.commit()
не была выполнена.
Если я вызываю IndexWriter.commit()
после каждого trackingIndexWriter.addDocument(document);
все работает нормально.
Я не думаю, что рекомендуется использовать IndexWriter.commit()
после каждого trackingIndexWriter.addDocument(document);
особенно с точки зрения производительности.
Как правильно управлять моим индексом, чтобы не потерять его после аномального завершения приложения?