1

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

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

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

4

2 回答 2

1

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

我不明白你的问题,如果你想使用searchAfter,只需制作一个ScoreDoc 传递给它。您的 webapp 可以传递整数和浮点数吗?

  /** Constructs a ScoreDoc. */
  public ScoreDoc(int doc, float score) {
于 2012-09-20T02:02:02.993 回答
0

据我所知,您目前所做的事情是正确的。您自己使用整数和浮点数构建的 ScoreDoc 将不起作用。请参阅我的类似问题:

工作 Lucene SearchAfter 示例

于 2014-06-09T15:14:58.993 回答