В книге "Lucene in Action, второе издание" есть раздел о поиске почти в реальном времени.По сути, вы получаете IndexReader, вызывая метод IndexWriter.GetReader (), и сохраняете его.При запуске поиска вызовите IndexWriter.GetReader () и сравните возвращенный читатель с сохраненным значением.Если это то же самое, просто используйте существующий ридер.Несколько потоков могут использовать один и тот же считыватель.
Если он отличается, закройте старый и сохраните новый.Используйте сохраненное значение для поиска.
За сценой новый читатель включает все ожидающие (незафиксированные) документы в указатель.Ожидающие изменения сбрасываются на диск (или RamDirectory), но не фиксируются.