我有一個問題,它在我的單元測試中間歇性地出現,我無法解決原因。Lucene.net間歇索引文件沒有出現在
單元測試本身將多個文檔添加到索引,然後試圖查詢索引以重新獲取文檔。
因此,95%的工作時間沒有任何問題。然後,另外5%的時間無法將文檔從索引中提取出來。
我的單元測試代碼如下:
[Test]
public void InsertMultipleDocuments()
{
string indexPath = null;
using (LuceneHelper target = GetLuceneHelper(ref indexPath))
{
target.InsertOrUpdate(
target.MakeDocument(GetDefaultSearchDocument()),
target.MakeDocument(GetSecondSearchDocument()));
var doc = target.GetDocument(_documentID.ToString()).FirstOrDefault();
Assert.IsNotNull(doc);
Assert.AreEqual(doc.DocumentID, _documentID.ToString());
doc = target.GetDocument(_document2ID.ToString()).FirstOrDefault();
Assert.IsNotNull(doc);
Assert.AreEqual(doc.DocumentID, _document2ID.ToString());
}
TidyUpTempFolder(indexPath);
}
我不會從我的LuceneHelper發佈完整的代碼,但它的基本思想是,它擁有一個IndexSearcher的參考是封閉的,每次一個項目被寫入索引(所以它可以重新打開所有的最新文檔)。
收集第二個文檔時,實際的單元測試通常會失敗。我認爲這是與搜索器沒有關閉並看到緩存數據有關,但事實並非如此。
Lucene是否有延遲向索引添加文檔?我認爲,只要您關閉了任何舊的搜索索引器並打開了一個新索引器,它就會立即將索引文件添加到索引中。
任何想法?
這聽起來像它會解決它,但我仍然intermitently遇到同樣的問題。 我其實不介意在後臺執行此操作,但是我希望在完成操作後收到通知。這可能嗎? – 2009-11-20 00:07:16
我不認爲有可能在沒有調用閉合Close(true)方法的情況下找出合併完成的時間。 – HakonB 2009-11-20 07:37:15