2014-09-02 2 views
0

문서를 색인하고 검색해야합니다. 쿼리 할 필드가 여러 개 있습니다. 색인 파일을 검색 할 때 반복되는 문서가 있습니다. 쿼리를 작성한 방법은 다음과 같습니다.lucene에서 색인 된 문서를 검색 할 때 고유 한 문서를 얻는 방법

MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_40, new String[] {"title", "abs"}, analyzer); 

쿼리 쿼리 = parser.parse (querystr); 당신이 docId 값을 인쇄하는 경우, 그러나 그것은 도움이 될 것입니다,

TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true); 
     searcher.search(query, collector); 
     ScoreDoc[] hits = collector.topDocs().scoreDocs; 
     // 4. display results 
     System.out.println("Found " + hits.length + " hits."); 

     for(int i=0;i<hits.length;++i) { 
      int docId = hits[i].doc; 
      Document d = searcher.doc(docId); 
      System.out.println((i + 1) + ". " + d.get("pmid") + "\t" + d.get("title")); 
     } 

답변

0

에 코드를 확인 같습니다

여기 내 디스플레이입니다.

이 값이 다른 경우 수정해야 할 색인에 문서를 여러 번 추가했을 가능성이 큽니다.

Lucene에는 기본 제공되는 ID 개념이 없습니다. Lucene의 경우 정확히 동일한 용어가 있더라도 모든 문서가 다릅니다. 이 문제를 해결하는 표준 접근법은 일부 외부 ID (예 : 데이터베이스 ID)가 포함 된 분석되지 않은 필드를 가지며 변경이 발생하면 업데이트 된 문서를 제거하거나 다시 추가하는 것입니다.

+0

내 문서가 여러 번 색인 생성되었습니다. 감사. – user2161903

관련 문제