Lucene: нумерация страниц с возвратом дубликатов - PullRequest
0 голосов
/ 12 апреля 2019

Я работаю над внедрением нумерации страниц в 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");
          }

Спасибо.

1 Ответ

1 голос
/ 12 апреля 2019

Первый параметр - это начальный индекс, а не страница.Вам нужно умножить его на страницу:

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-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...