Lucene 如何使用searchAfter方法获取总结果计数

Lucene 如何使用searchAfter方法获取总结果计数,lucene,pagination,Lucene,Pagination,在我目前的Lucene 4.3实现中,有数百万条索引记录,我会定期搜索()并获得topDocs.totalHits作为结果计数 作为这项工作的一部分,我将所有结果存储在会话中,然后让用户对结果进行分页。这样,我就可以显示“第一”、“上一”、“下一个”和“最后一个”导航链接以及“第1页,共500页”显示 显然,这导致了内存问题,我现在决定使用searchAfter()方法,从而避免将庞大的结果集存储在内存中 问题1:在这种情况下,如何获得总结果计数?有没有可能因为我无法得到整个结果集 问题2:我知

在我目前的Lucene 4.3实现中,有数百万条索引记录,我会定期搜索()并获得topDocs.totalHits作为结果计数

作为这项工作的一部分,我将所有结果存储在会话中,然后让用户对结果进行分页。这样,我就可以显示“第一”、“上一”、“下一个”和“最后一个”导航链接以及“第1页,共500页”显示

显然,这导致了内存问题,我现在决定使用searchAfter()方法,从而避免将庞大的结果集存储在内存中

问题1:在这种情况下,如何获得总结果计数?有没有可能因为我无法得到整个结果集

问题2:我知道我可以为分页提供“上一页”和“下一页”选项,但无论如何,我仍然可以提供“最后一页”选项,因为我需要在最后一页开始之前提供文档对象

请建议

问候,,
Raghu

1-它仍将在
totalHits
中。听起来,它会告诉你点击的总数,即使这个数字大于你要求的点击数

2-它确实在某种程度上提出了一个问题,即为什么你想跳到最后一页,即最糟糕的结果。无论如何,最好的方法是使用一个。例如,传入a将允许您获得最后一页,类似于:

intpagesize=10;
TopScoreDocCollector=TopScoreDocCollector.create(maxHits,true);
searcher.search(查询、收集器);
collector.topDocs(collector.getTotalHits()-pageSize);