Эта статья блога , вероятно, поможет вам понять, как использовать NRTManager и SearcherManager. Он объясняет, как обрабатывать commit
с и reopen
с в контексте, близком к реальному.
Что касается ваших вопросов по IndexWriter, да, использование одного IndexWriter приветствуется, но в какой-то момент вам всегда нужно закрывать IndexWriter. Закрытие IndexWriter будет выполнять несколько вещей:
- ожидание завершения текущих операций слияния (необязательно),
- данные ожидающие фиксации,
- удалить файл блокировки каталога.
Вот почему документы могут не отображаться, если IndexWriter не был закрыт, в то время как в индексе еще не было изменений.
В долго работающем приложении вы должны закрыть свой IndexWriter при выходе из приложения (в настольном приложении это можно сделать, когда пользователи закрывают приложение, а в веб-приложении это можно сделать с помощью метода destroy: сервлет).