Lucene.Net의 큰 색인에 대해 색인 된 (그러나 저장되지 않은) 용어를 모두 검색하려면 어떻게해야합니까?큰 Lucene.Net 색인에서 모든 색인 된 용어를 얻는 방법은 무엇입니까?
내가 Lucene.Net에서 최신 Apache Lucene 릴리스로 이동하고 인덱스 형식이 릴리스에서 여러 번 변경 되었기 때문에 내가이 작업을 수행하는 이유가 있습니다. 용어를 읽고 새로운 형식으로 다시 색인을 지정하여 데이터를 이전합니다. 나는 Lucene 코덱 패키지에 대해 알고 있지만, Lucene.Net에서 사용하는 형식에 대해서는 충분히 뒤집을 수있는 호환성을 제공하지 않습니다.
비슷한 질문이 있습니다. Find list of terms indexed by Lucene
그러나 위의 방법의 문제점은 IndexReader.Terms
이 색인에서 모든 용어를 읽음으로써 큰 색인에서 OutOfMemoryException
이 발생한다는 것입니다.
큰 인덱스의 모든 용어를 메모리 부족없이 정상적으로 가져올 수 있습니까?
예제 코드 (즉 reader.Terms(orderBy)
에 대한 호출에 OutOfMemoryException
를 throw) :
var results = new List<string>();
var orderBy = new Term("MyField", string.Empty);
using (var reader = IndexReader.Open(FSDirectory.Open(_indexPath), true))
using (var termEnum = reader.Terms(orderBy))
{
for (var term = termEnum.Term; term != null; termEnum.Next(), term = termEnum.Term)
{
if (term.Field != "MyField")
{
break;
}
results.Add(term.Text);
}
}