Подтвердить что ты не робот

Результаты поиска пейджинга Lucene

Я использую Lucene, чтобы показать результаты поиска в веб-приложении. Я также настраиваю пейджинг для отображения того же. Результаты поиска могут варьироваться от 5000 до 10000 или более. Может кто-нибудь, пожалуйста, скажите мне лучшую стратегию для подкачки и кеширования результатов поиска?

4b9b3361

Ответ 1

Я бы порекомендовал вам не кэшировать результаты, по крайней мере, не на уровне приложений. Запуск Lucene на коробке с большим объемом памяти, которую операционная система может использовать для кеша файла, поможет.

Просто повторите поиск с другим смещением для каждой страницы. Кэширование представляет собой состояние, которое, в конце концов, подрывает производительность. У нас есть сотни одновременных пользователей, которые ищут индекс более 40 миллионов документов. Поиск выполняется в течение менее одной секунды без использования явного кэширования.

Используя объект Hits, возвращенный из поиска, вы можете получить доступ к документам для такой страницы:

Hits hits = searcher.search(query);
int offset = page * recordsPerPage;
int count = Math.min(hits.length() - offset, recordsPerPage);
for (int i = 0; i < count; ++i) {
  Document doc = hits.doc(offset + i);
  ...
}