什麼是LINQ到Lucene的Index<T>
的正確使用模式?正確的LINQ到Lucene索引<T> ASP.NET的使用模式?
它實現IDisposible
所以我想它包裹在一個using語句將最有意義:
IEnumerable<MyDocument> documents = null;
using (Index<MyDocument> index = new Index<MyDocument>(new System.IO.DirectoryInfo(IndexRootPath)))
{
documents = index.Where(d => d.Name.Like("term")).ToList();
}
我偶爾會遇到磁盤索引的不必要的刪除。如果指數的多個實例同時存在,那麼100%似乎就會發生。我使用PLINQ編寫了一個測試,並行運行2個搜索,1個搜索工作,另一個返回0結果,因爲索引被清空。
- 我應該使用一個單一的靜態實例呢?
- 我應該把它包裝在
Lazy<T>
? - 當我有多個用戶同時訪問靜態索引時,我是否會解決其他問題?
我也想根據需要定期重新編制索引,可能使用Windows服務等其他進程。如果用戶在索引重建期間搜索,我是否也會遇到問題?