2013-06-28 3 views
5

Lucene과 같은 코드가 있습니다. 누군가 Lucene과 페이지 매김을 만드는 방법에 대한 샘플이나 팁을 제공 할 수 있습니까?TopScoreDocCollector를 사용한 Lucene 페이지 매김

Query q = queryParser.parse(useQuery); 
TopScoreDocCollector collector = TopScoreDocCollector.create(maxReturn, true); 
searcher.search(q, collector); 

감사합니다.

+0

검사 승인 된 답 : 그것은 시작해야에 start 인수가, 좋아하지 얼마나 많은 "페이지", 그래서 뭔가를 얼마나 많은 문서를 나타낸다는 것을 기억하십시오 이 게시물 : [루씬 4 매김] [1] [1] : http://stackoverflow.com/a/24533377/1080485 나는 이것이'Sort' 객체와 어떻게 결합 할 –

답변

2

TopDocsCollector.topDocs(int)을 사용하여 특정 결과 페이지를 나타내는 TopDocs를 가져올 수 있습니다.

TopDocs hits = collector.topDocs(maxReturn*page); 

은 일반적으로 적합합니다 (page는 0부터 번호입니다)

+1

? 정렬하고 슬라이스를 추출하고 싶습니다. –

+1

@ Michael-O 그렇지 않습니다. 'TopScoreDocCollector'를'Sort'와 함께 사용하는 것은 의미가 없습니다. 'TopScoreDocCollector'는 최고 점수로 명시 적으로 정렬합니다. 컬렉터를 사용하려면 [TopFieldCollector'] (http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/TopFieldCollector.html)를 대신 사용하십시오. 첫 번째 질의에 대해'IndexSearcher.search (Query query, int n, 정렬 정렬)'을 호출 한 다음 후속 페이지에 대해서는'IndexSearcher.searchAfter (ScoreDoc after, Query query, int n, 정렬 정렬)'을 호출 할 수도 있습니다. , "after"인수로 반환 된 마지막 결과를 전달합니다. – femtoRgon

+0

좋습니다, 감사합니다. 이미 언급 한'search' 메쏘드를 사용하지만'searchAfter'는 도움이되지 않습니다. 왜냐하면 나는 REST API로 그것들을 드러내고 후속 호출에서'after' 문서를 가지지 않기 때문입니다. 'search (query, from, size, sort)'와 같은 것이 필요할 것입니다. 불행히도'TopScopeDocC ...','TopFieldC ... '는'searchAfter'가 아닙니다. 내가 볼 수있는 유일한 옵션은 모든 ScoreDocs를 얻고 수동으로 페이지 매김을 구현하는 것입니다. –

관련 문제