에 나타나지 않습니다. 단위 테스트에서 간헐적으로 나타나는 문제가 있는데 그 이유는 알 수 없습니다.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은 문서를 색인에 추가하는 데 지연이 있습니까? 일단 문서를 색인에 추가하면 이전 검색 색인 작성자를 닫고 새 색인 색인을 열면 즉시 사용할 수 있다고 가정했습니다.
아이디어가 있으십니까?
이 문제는 해결 될 것 같지만, 여전히 동일한 문제가 간헐적으로 발생하고 있습니다. 실제로 백그라운드에서이 작업을 수행하는 것을 신경 쓰지는 않지만 일단 완료되면 알림을 받고 싶습니다. 이것이 가능합니까? –
차단 닫기 (true) 메서드를 호출하지 않고 병합이 완료되면 알아낼 수 있다고 생각하지 않습니다. – HakonB