2009-08-03 4 views
1

다른 누군가가 만든 Lucene 색인부터 시작하겠습니다. 나는 주어진 단어를 따르는 모든 단어를 찾고 싶다. 나는 인덱스의 관심의 기간 (org.apache.lucene.index.Term)를 추출했습니다, 나는이 용어가 포함 된 문서를 찾을 수 있습니다 나를을 찾을 수있는 방법이 있나요Lucene 지수에서 다음 용어를 얻는 방법은 무엇입니까?

segmentTermDocs = segmentReader.termDocs(term); 
while (segmentTermDocs.next) { 
     doc = segmentReader.document(segmentTermDocs.doc); 
... 
} 

을 문서에서 용어의 위치와 그 뒤에 오는 용어를 추출 하시겠습니까?

답변

1

상황에 따라 n-gram을 인덱싱하는 것은 옵션이 아니므로 일부 무차별 한 공격이 필요합니다. IndexReader's terms and termPositions을 열거 할 수는 있지만 그럴 가능성은 매우 낮습니다.

더 빠른 접근 방법은 용어를 열거하고 MultiPhraseQuery을 사용하여 한 번에 그룹을 확인함으로써 분할 및 정복 검색 알고리즘을 구현하는 것입니다. 잠재적 인 용어를 합리적 크기의 그룹 (예 : 1000)으로 분할하고 각 청크와 접두어로 MultiPhraseQuery 검색을 실행하십시오. 조회수가있는 경우 단일 용어에 도달 할 때까지 하위 그룹을 반복적으로 호출합니다.

+0

아이디어를 제공해 주셔서 감사합니다. 이것은 보고서를 생성하기위한 것이므로 성능은 실제로 문제가되지 않습니다. 나는 용어의 모든 기간과 관심 용어로 구성된 PhraseQuerys를 작성하여 무차별 강제 검색을 수행했습니다. 히트를 가졌던 쿼리는 관심 기간을 지키는 조건을 나타 냈습니다. –

관련 문제