【问题标题】:Lucene : Pagination returning duplicatesLucene:分页返回重复项
【发布时间】:2019-09-02 23:29:29
【问题描述】:

我正在努力在 Lucene 中实现分页。目前我已经用 TopDocs 实现了它,并且我得到了很多重复的结果。我究竟做错了什么?这里 index 是我从 1 开始并在每次搜索后递增 1 的页码,resultSize 是请求的对象数。

代码:

 Directory directory = FSDirectory.open(path);
  IndexReader indexReader = DirectoryReader.open(directory);
  IndexSearcher indexSearcher = new IndexSearcher(indexReader);
  Query query = new WildcardQuery(new Term("contents", "*" + text + "*"));
  TopScoreDocCollector collector = TopScoreDocCollector.create(9999);
  indexSearcher.search(query, collector);
  TopDocs topDocs = collector.topDocs(index-1, resultSize);
          for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
               Document document = indexSearcher.doc(scoreDoc.doc);
               IndexableField value = document.getField("score");
          }

谢谢。

【问题讨论】:

    标签: java search indexing pagination lucene


    【解决方案1】:

    第一个参数是起始索引,而不是页面。您需要将其乘以每页:

    TopDocs topDocs = collector.topDocs((index-1) * perPage, resultSize);

    https://lucene.apache.org/core/8_0_0/core/org/apache/lucene/search/TopDocsCollector.html#topDocs-int-int-

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2019-11-27
      • 2016-05-08
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多