Lucene.Net поддерживает индексы при использовании MultiSearcher

Чтобы поддерживать мой индекс в актуальном состоянии, мне нужно добавлять / изменять поисковый индекс каждые 5 минут. Я настроил его с двумя индексами, один в полном каталоге, а другой в дополнительном, и для их поиска я использую MultiSearcher.

Сейчас я пишу процесс для поддержки индекса. Я передаю дату последнего индекса в хранимую процедуру, а БД возвращает все новые / измененные записи на основе поля «UpdatedOn» в БД. Затем я просматриваю 2 каталога, открывая IndexReader для каждого каталога и удаляя документ на основе TermQuery для первичного ключа. Затем я добавляю записи в инкрементный индекс с помощью IndexWriter и оптимизирую его.

Но что происходит, когда я выполняю последующий поиск, это то, что записи, которые, как я знаю, находятся в индексе, не возвращаются.

Я неправильно выполняю обслуживание индекса?


person druta    schedule 14.10.2009    source источник


Ответы (1)


Ваш {Multi} IndexSearcher закрывается и снова открывается в интерфейсе поиска? По соображениям производительности я видел, что некоторые приложения сохраняют объект SearchIndexer в памяти, чтобы избежать накладных расходов, связанных с повторным открытием объекта и его базового каталога при каждом поиске, однако при этом IndexSearcher не принимает изменения / дополнения. к базовому индексу.

Я не уверен, что это происходит в вашем случае, но обычно, когда я вижу, что поисковик не берет новые документы, это происходит потому, что поисковик был открыт до того, как элемент был добавлен в индекс ... просто мысль.

person James Conigliaro    schedule 14.10.2009
comment
Да, я закрываю IndexSearcher после каждого поиска. - person druta; 14.10.2009