2009-10-14 89 views
0

爲了使索引保持最新,我需要每5分鐘添加/修改一次搜索索引。我設置的方式是使用2個索引,一個位於Full目錄中,另一個位於增量目錄中,並使用MultiSearcher搜索它們。Lucene.Net使用MultiSearcher時維護索引

我現在正在編寫一個過程來維護索引。我正在做的是將最後一個索引日期傳遞給存儲過程,並且數據庫根據數據庫中的「UpdatedOn」字段返回所有新的/已修改的記錄。然後,我循環遍歷2個目錄,爲每個目錄打開一個IndexReader並根據主鍵的TermQuery刪除文檔。然後,我使用IndexWriter將記錄添加到增量索引並對其進行優化。

當我做後續搜索時發生了什麼,雖然我知道在索引中的記錄沒有被返回。

我在做索引維護是否錯誤?

回答

1

您的{Multi} IndexSearcher是否在搜索界面上被關閉並重新打開?出於性能原因,我已經看到一些應用程序將SearchIndexer對象保存在內存中,以避免每次搜索都重新打開對象及其底層目錄的開銷,但是,這樣做,IndexSearcher不會獲取更改/添加到基礎指數。

我不確定這是什麼在你的情況下 - 但通常當我看到一個搜索器沒有拿起新文件,這是因爲搜索器被打開之前,項目被添加到索引。 .. 只是一個想法。

+0

是的,我在每次搜索後關閉IndexSearcher。 – druta 2009-10-14 14:37:29