XML - результаты поиска/Поиск туров/Буфер поиска
Буфер поиска - искусственное ограничение на возможное количество найденных туров в результатах поиска.
Необходимость введения буфера продиктована большими объемами данных которые потенциально могут быть выбраны в результате поискового запроса. Простыми словами архитектура поиска не позволяет выбирать более N туров, где N размер буфера.
Если вам кажется это странным, посмотрите на Яндекс и Google, если пролистать их результаты будет видно что они позволяют находить не более 1000 сайтов.
Автоматическая корректировка размера буфера
Для поиска туров наиболее критично время ответа пользователя, которое значительно увеличилось с введением технологии онлайн-поиска. Поэтому поиск даже 2500 записей может отнять продолжительное время. Для оптимизации этого в нашей системе используется автоматическая корректировка размера буфера. Это означает что размер буфера выбирается на основе запрошенной страницы данных и ее размера.
- Минимальный размер буфера - 500 записей.
- Максимальный размер буфера - 2500 записей.
Именно это количество будет возвращено сервисом как количество найденных туров, в случае если в системе их больше. Это не означает что это все туры которые есть в системе по данному запросу, это означает что найдено туров больше чем размер буфера.
Буфер выбирается таким образом чтобы в него попало данных чуть больше чем необходимо для запрошенной страницы.
Например:
Если вы запросили 5-ю страницу размером 50 записей, будет выбран буфер 500 записей. Если же теперь запросить 10-ю страницу размером 50 записей, будет выбран буфер в 1000 записей.
Обратите внимание: при изменении размера буфера инициируется новый поиск (т.е. закешированный результат использоваться не будет).
Организация постраничной навигации на сайте
Не смотря на всю сложность в получении результата и выбора размера буфера, организация постраничной навигации в этом случае предельно проста. Вы в каждый момент поиска просто рассчитываете количество страниц исходя из количества найденных туров, которые вернул сервис.
Единственное на что стоит обращать внимание это поле exactCount объекта Статус поиска. В случае если оно true, это означает что найдено ровно такое количество туров. В случае если оно false это означает что количество туров ограничено буфером поиска. В этом случае необходимо это обозначить для пользователя (например - "найдено более 500 туров", ">500", "500+"), и дать возможность кликнуть на несколько страниц вперед. В случае если он это сделает, поисковый запрос к этой странице инициирует новый поиск с увеличенным буфером, и пользователь получит данные.