带TopCoreDocCollector的Lucene分页

带TopCoreDocCollector的Lucene分页,lucene,Lucene,我对Lucene有这样的代码。有人能提供一个关于如何使用Lucene进行分页的示例或提示吗 Query q = queryParser.parse(useQuery); TopScoreDocCollector collector = TopScoreDocCollector.create(maxReturn, true); searcher.search(q, collector); 谢谢。您可以使用获取代表特定结果页面的TopDocs。请记住,start参数表示其中应该启动多少文档

我对Lucene有这样的代码。有人能提供一个关于如何使用Lucene进行分页的示例或提示吗

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

谢谢。

您可以使用获取代表特定结果页面的TopDocs。请记住,
start
参数表示其中应该启动多少文档,而不是多少“页面”,因此类似于:

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

通常是合适的(其中
页面
从0开始编号)

如何将其与
排序
对象相结合?我想排序,然后从中提取一个片段。@Michael-O你没有。将
TopCoreDocCollector
排序一起使用没有意义<代码>TopCoreDocCollector
按最高分数显式排序。如果您更喜欢使用收集器,请使用。您也可以调用
IndexSearcher.search(Query-Query,int-n,Sort-Sort)
进行第一次查询,然后调用
IndexSearcher.searchAfter(ScoreDoc-after,Query-Query,int-n,Sort-Sort)
,将最后返回的结果作为“after”参数传递。好的,谢谢。我已经使用了前面提到的
search
方法,但是
searchAfter
没有帮助,因为我确实使用RESTAPI公开了它们,并且在后续调用中没有
after
文档。我需要类似于
搜索(查询、发件人、大小、排序)
。不幸的是,
TopScopeDocC…
TopFieldC…
not
searchAfter
都不行。我看到的唯一选项是获取所有
ScoreDocs
,并手动执行分页。请在此帖子中检查批准的答案:[Lucene 4分页][1][1]: