我试图使用lucene 4.8.1的searchafter方法在web应用程序中实现搜索结果的分页。
以前也有人问过类似的问题,但我不认为这是一个公认的答案:
Stack Overflow Question: Lucene web paging
当我从头开始创建Lucene ScoreDoc时,以这种方式将其用作searchAfter的参数:

   ScoreDoc sd = new ScoreDoc(14526, 0.0f);
   TopDocs td = indexSearcher.searchAfter(sd, query, null, PAGEHITS);

我有个例外:
java.lang.IllegalArgumentException: after must be a FieldDoc

这似乎与文件相反。但无论如何,当我创建一个field doc时,我会得到:
java.lang.IllegalArgumentException: after.fields wasn't set

after.fields是一个对象数组,所以我很难用一个uri来设置它!
我找不到任何使用searchafter的工作代码示例。我最初的计划显然是按照前面的问题创建一个新的ScoreDoc。有谁能建议我可能做错了什么,或者链接到searchafter的任何工作代码示例吗?
谢谢!

最佳答案

我不相信你能创建一个ScoreDoc然后把它传递给SearchAfter。您需要使用上次搜索返回的ScoreDocs。

09-25 21:36