Java Lucene searchAfter返回与上一个查询相同的结果

Java Lucene searchAfter返回与上一个查询相同的结果,java,lucene,Java,Lucene,我刚刚发现Lucene支持使用searchAfter方法进行分页,所以我将其添加到我的实现中。不幸的是,它返回与前一个查询相同的结果,我不知道为什么 基本上,我所做的是调用我的search方法并存储Query和collector.topDocs()返回的最后一个ScoreDoc。然后,当用户想要加载下一页时,我调用searcher.searchAfter(previousResult,previousQuery,MAX_HITS),但我收到的结果与运行searcher.search(query,

我刚刚发现Lucene支持使用
searchAfter
方法进行分页,所以我将其添加到我的实现中。不幸的是,它返回与前一个查询相同的结果,我不知道为什么

基本上,我所做的是调用我的
search
方法并存储
Query
collector.topDocs()返回的最后一个
ScoreDoc
。然后,当用户想要加载下一页时,我调用
searcher.searchAfter(previousResult,previousQuery,MAX_HITS)
,但我收到的结果与运行
searcher.search(query,collector)
时收到的结果相同

请注意,我每页返回15个文档,我的查询有32次点击,所以我希望它至少有2页

代码如下:

private Query previousQuery;
private ScoreDoc previousResult;
private float previousMaxScore;

private ScoreDoc[] search(String query) throws ParseException, IOException {
    Query q = parser.parse(query);
    TopScoreDocCollector collector = TopScoreDocCollector.create(MAX_HITS_PER_PAGE);
    searcher.search(q, collector);
    TopDocs result = collector.topDocs();
    // Let's normalize scores
    for (ScoreDoc scoreDoc : result.scoreDocs) {
        scoreDoc.score /= result.getMaxScore();
    }
    // If the query had some results then we save the last one to support paging
    if (collector.getTotalHits() > 0) {
        previousQuery = q;
        previousResult = result.scoreDocs[result.scoreDocs.length - 1];
        previousMaxScore = result.getMaxScore();
    }        
    return result.scoreDocs;
}

private ScoreDoc[] searchNextPage() throws IOException {
    // previosuResult is CORRECT, it's the last one from the previous query so it's not part of the issue.
    TopDocs result = searcher.searchAfter(previousResult, previousQuery, MAX_HITS_PER_PAGE);        
    // Let's normalize scores        
    for (ScoreDoc scoreDoc : result.scoreDocs) {
        scoreDoc.score /= previousMaxScore;            
    }
    // Let's update previous result with the new one
    if (result.scoreDocs.length > 0) {
        previousResult = result.scoreDocs[result.scoreDocs.length - 1];
    }        
    return result.scoreDocs;
}
我做错了什么