Lucene.NET (4.0) 색인에 문서가 이미 있는지 확인하고 싶습니다. this post에서 다음 코드를 사용해 보았습니다.Lucene.NET - 문서가 색인에 있는지 확인하십시오.
IndexReader reader;
Term indexTerm = new Term("filepath", "C:\\my\\path");
TermDocs docs = reader.TermDocs(indexTerm);
if (docs.Next())
{
continue;
}
그러나 reader
이 지정되지 않았습니다. 나는 이것을 많이 봤고 Lucene.NET 4에서 작동하는 대답을 찾을 수 없다.
편집 : IndexReader
은 추상 클래스입니다. 이 문서에서는 IndexReader.Open()
을 Lucene.Net.Store.Directory
으로 매개 변수로 호출하지만 자체는 추상이라고 말합니다. 코드 샘플은 마치 사용하지 않는 것처럼 사용합니다. 또한, 게시물에 나는 사용자에게 링크 된 코드의 첫 번째 세그먼트를 말했다.
EDIT2 : 이제 컴파일하는 코드가 있습니다.
이bool exists = false;
IndexReader reader = IndexReader.Open(Lucene.Net.Store.FSDirectory.Open(lucenePath), false);
Term term = new Term("filepath", "\\myFile.PDF");
TermDocs docs = reader.TermDocs(term);
if (docs.Next())
{
exists = true;
}
파일 myFile.PDF
이 분명히 존재하지만, 항상 다시 거짓 제공 : 여기있다. 내가 디버그 docs
을 볼 때, 그 Doc
및 Freq
속성들은 " 'System.NullReferenceException
'형식의 예외를 던졌다 상태.
[Lucene.NET - 문서가 색인에 있는지 확인 중일 수 있습니다.] (http://stackoverflow.com/questions/20993676/lucene-net-checking-if-document-exists-in-index) – DIF