我正在创建一个Lucene
的网络应用,我需要实现分页。我在这里看到了关于在收集器上使用偏移的不同示例。然而,那些似乎是旧的。我相信Lucene 3.5
(或3.6不记得是哪个)添加了这个。我见过IndexSearcher
方法searchAfter
。但是,它要求您在最后ScoreDoc
传递它。因为这是一个Web应用程序,所以我无法将最后一个结果(作为ScoreDoc对象)传递给下一个请求。所以,我的问题是这通常是如何完成的?
我真正想到的唯一方法是在构建时在索引中添加一个唯一键。然后,在尝试获取下一页时将该键作为post参数传递。然后,我将不得不搜索该密钥以获取文档ID并将该文档拉到searchAfter使用。我想我必须使用自己独特的密钥,因为我不能依赖文档ID保持不变。我对此是否正确?
如果有更好的方法,请告诉我。这是我第一次尝试Lucene。
答案 0 :(得分:1)
但是,它要求你传递最后一个ScoreDoc。因为这是一个Web应用程序,所以我无法将最后一个结果(作为ScoreDoc对象)传递给下一个请求。所以,我的问题是这通常是如何完成的?
我不明白你的问题,如果你想使用searchAfter,只需让ScoreDoc传递给它。你的webapp可以通过整数和浮动吗?
/** Constructs a ScoreDoc. */
public ScoreDoc(int doc, float score) {
答案 1 :(得分:0)
据我所知,你现在正在做的事情是正确的。使用整数和浮点数自己构建的ScoreDoc将不起作用。看到我的类似问题: