2013-01-16 5 views
0

Java 응용 프로그램을 Lucene 2에서 Lucene 4로 마이그레이션 중이므로 코드를 변환하는 좋은 방법을 찾을 수 없습니다. 나는 또한 http://lucene.apache.org/core/4_0_0-ALPHA/MIGRATE.html로 가려고했지만 예제 코드가 작동하지 않는다. (예를 들어 reader.termDocsEnumIndexReader 또는 DirectoryReader은 존재하지 않지만 AtomicReader은 내가 들어 본 적이 없다). IndexReader라는 indexReader, 이전 코드 감안할 때Lucene 2에서 Lucene 4

이었다

Term find = new Term("field", "value"); 
TermDocs td = indexReader.termDocs(find); 
while (termDocs.next()) { 
    Document d = termDocs.doc(); 
    // do stuff 
} 

가 어떻게 그 코드를 변환 할 수 있습니다

? 감사합니다.

+0

실수가 있습니다 : while 루프에서'termDocs'는'td'로 대체되어야합니다. –

답변

1

다음은 사건과 관련이 있어야한다 :

워드 프로세서가/열거 형이 용어 추구 할 수 배치합니다. 대신, TermsEnum은 해당 TermsEnum에서 문서/위치 열거 형을 요청할 수 있습니다. 이 최고 성능 유일한 방법이기 때문에

TermsEnum termsEnum = atomicReader.terms("fieldName").iterator(); 
BytesRef text = new BytesRef("searchTerm"); 
if (termsEnum.seekExact(text, true)) { 
    ... 
} 

낮은 수준의 API는 이제 명확하게 원자 (비 복합) 독자 지향한다 :

난 당신이 필요 같아요. 당신 수도 당신이 DirectorySlowCompositeReaderWrapper에서 얻는 랩 합성 리더이지만 클래스 이름이 이미 경고하므로 이 될 것입니다.