Solr пейджинговая производительность - PullRequest
2 голосов
/ 23 января 2010

Я прочитал (http://old.nabble.com/using-q%3D--,-adding-fq%3D-to26753938.html#a26805204):

FWIW: ограничение количества строк в просьба до 50, но не ограничивающая начало не имеет особого смысла - такой же объем работы необходим для начало ручки = 0 & строки = 5050 и начать = 5000 & строк = 50.

Чем он завершил:

Существует очень мало вариантов использования для позволяя людям перебирать все строки, которые также требуют сортировки.

Это правильно? Это правда только для отсортированных результатов?

Сколько страниц по 10 строк вы рекомендуете пользователю выполнять итерацию?

Имеет ли Solr 1.4 такое же ограничение?

Ответы [ 2 ]

4 голосов
/ 23 января 2010

Да, это правда, также для Solr 1.4. Это означает, что не означает, что start=0&rows=5050 имеет ту же производительность, что и start=5000&rows=50, поскольку первый должен возвращать 5050 документов, а второй - только 50. Меньше данных для передачи -> быстрее.

У Solr нет способа получить ВСЕ результаты на одной странице, так как в этом нет особого смысла. Для сравнения, вы не можете получить весь индекс Google в одном запросе. Никто на самом деле не должен этого делать.

Размер страницы вашего приложения должен определяться пользователем (т. Е. Пользователь может выбрать одновременный просмотр 10, 25, 50 или 100 результатов).

Размер страницы по умолчанию зависит от того, какие данные вы пейджинговые, и насколько релевантны результаты на самом деле. Например, при поиске в Google вы обычно не смотрите за первые несколько результатов, поэтому достаточно 10 элементов. eBay, с другой стороны, больше о просмотре результатов, поэтому он показывает 50 результатов на страницу по умолчанию и даже не предлагает 10 результатов на страницу.

Вы также должны принять во внимание прокрутку. Вероятно, пользователи будут потеряны при попытке просмотреть страницу результатов 200 , не говоря уже о том, что загрузка занимает значительно больше времени.

0 голосов
/ 23 января 2010

начало = 0 & строки = 5050 и начало = 5000 & строки = 50

Зависит от того, как вы прыгаете, чтобы начать = 5000. Если вы прокрутите все результаты от 0 до 4999, игнорируя их все, а затем продолжите прокручивать от 5000 до 5050, тогда да, то же самое количество работы здесь сделано. Лучше всего ограничить число строк, извлекаемых из самой базы данных, используя в Oracle что-то вроде ROWNUM.

.

итерация по всем строкам, которые также требуют сортировки

Мало, но да, есть варианты использования, которые имеют это требование. Примерами могут служить экспорт в CSV / Excel / PDF.

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