Lucene网页分页

时间:2012-09-18 21:06:02

标签: lucene

我正在创建一个Lucene的网络应用,我需要实现分页。我在这里看到了关于在收集器上使用偏移的不同示例。然而,那些似乎是旧的。我相信Lucene 3.5(或3.6不记得是哪个)添加了这个。我见过IndexSearcher方法searchAfter。但是,它要求您在最后ScoreDoc传递它。因为这是一个Web应用程序,所以我无法将最后一个结果(作为ScoreDoc对象)传递给下一个请求。所以,我的问题是这通常是如何完成的?

我真正想到的唯一方法是在构建时在索引中添加一个唯一键。然后,在尝试获取下一页时将该键作为post参数传递。然后,我将不得不搜索该密钥以获取文档ID并将该文档拉到searchAfter使用。我想我必须使用自己独特的密钥,因为我不能依赖文档ID保持不变。我对此是否正确?

如果有更好的方法,请告诉我。这是我第一次尝试Lucene。

2 个答案:

答案 0 :(得分:1)

  

但是,它要求你传递最后一个ScoreDoc。因为这是一个Web应用程序,所以我无法将最后一个结果(作为ScoreDoc对象)传递给下一个请求。所以,我的问题是这通常是如何完成的?

我不明白你的问题,如果你想使用searchAfter,只需让ScoreDoc传递给它。你的webapp可以通过整数和浮动吗?

  /** Constructs a ScoreDoc. */
  public ScoreDoc(int doc, float score) {

答案 1 :(得分:0)

据我所知,你现在正在做的事情是正确的。使用整数和浮点数自己构建的ScoreDoc将不起作用。看到我的类似问题:

Working Lucene SearchAfter Example