Я только что интегрировал Lucene.NET в BugTracker.NET. Я не уверен, что то, что я сделал, является лучшим, но, похоже, работает хорошо.
Я создаю индекс при запуске приложения.
Я создаю поисковик и сохраняю его так, чтобы индекс не перезагружался при каждом поиске. Все темы используют один и тот же поисковик. Когда поисковик ищет, он захватывает блокировку.
Между тем, у меня есть IndexWriter, который обновляет индекс при изменении данных. Он просто немного меняется, поэтому быстро выполняет свою задачу. Когда он запускается, он захватывает ту же самую блокировку, уничтожает поисковик, обновляет индекс и повторно воссоздает поисковик. Новый поисковик остается до следующего обновления индекса. Поисковик всегда работает с актуальным индексом.
Вы можете получить исходный код BugTracker.NET и посмотреть файлы my_lucene.cs и search_text.aspx. Это все в этих двух файлах, и кода не так много.