2012-09-25 2 views
1

TopDocs 객체에서 "totalHits"속성을 요청하면 조회수가 표시됩니다. 하지만 "총 조회수"가 아니라 "얼마나 많은"문서가 있는지 알고 싶습니다.Lucene TopDocs에서 고유 한 문서 수를 얻는 방법은 무엇입니까?

예 :

나는 "docs.totalHits"를 요청 할 때, 나는 3 개 결과를 얻을 것이다 "foo는"을 검색하면
- document 1: field A: foo bar - field B: testjes 
- document 2: field A: bar foo - field B: foo bar 

. 하지만 2의 문서 수를 알고 싶습니다.

목록을 반복하여 집합에 "문서 ID"를 저장할 수 있습니다. 그리고 Set의 크기를 묻습니다. 그러나 Lucene이이를 해결하는 더 좋은 방법을 제공합니까?

요헨

답변

2

으로는 getTotalHits()를 사용하여 TopDocCollector에서 here 당신이 그것을 검색 할 수 있습니다 문서화.

편집 : 예

를 들어
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); 
searcher.search(query, collector); 
TopDocs topDocs = collector.topDocs(); 
int numResults = collector.getTotalHits(); 
+0

흠, 내가 어떻게 TopDocCollector 객체에받을 수 있나요? 나는 다음과 같이 찾고있다. TopDocs docs = searcher.search (query, blocksize); count = docs.totalHits; –

+0

추가 한 예를 참조하십시오. – dolbi

+0

@ 'dolbi': 감사합니다! 아주 좋아! –

관련 문제