XML - результаты поиска/Поиск туров
Содержание
Назначение сервиса
Сервис предназначен для:
- Импорт данных в систему клиента (тип поиска: БД).
- Организация поиска на сайте клиента (тип поиска: комбинированный).
В зависимости от выбранного клиентом способа использования администрацией TourClient выставляется соответствующая настройка сервиса - тип поиска. Клиенту изменение данной настройки недоступна.
Тип поиска определяет поведение сервиса и предоставляемые им данные.
Импорт данных в свою систему
Импорт данных в свою систему может производиться для получения каких-то статистических показателей. Например расчета минимальных по каким-то параметрам. Или же организации каких-то своих сервисов.
Сервис предоставляет только те данные которые в текущий момент сохранены в нашей БД.
Обратите внимание: сервис не предназначен для полной синхронизации БД клиента с нашей (из-за большого объема данных и очень интенсивной скорости обновления нашей БД). Архитектура получения данных в текстовом формате через xml-шлюз маленькими блоками не позволит работать с такими объемами данных, пропускной способности будет недостаточно для оперативного обновления данных (потенциально базу выкачать возможно, но она тут же устарает, и не будет успевать обновляться по данной технологии).
Сервис рекомендуется использовать для получения данных в рамках какого-то среза ограничивающего возможный объем данных: по ограниченному набору отелей, на ближайшие даты, по нескольким странам и т.п.
Особенности работы
- максимально быстрая скорость получения результата
- ответ на запрос формируется сразу полностью
- минимальная цена точная (та которая в текущий момент минимальна в нашей БД по данным параметрам)
- по непопулярным запросам можно получить данных меньше чем в комбинированном поиске, если они в текущий момент не присутствуют в нашей БД (принципы работы комбинированного поиска не позволяют использовать его для выгрузки данных)
- ответы сервиса не кешируются
Ограничения
- Количество данных возвращаемое одним запросом: не более 2500 туров.
- Макс. допустимое количество запросов в сутки: не регламентировано (определяется индивидуально в случае создания клиентом высокой нагрузки на сервис).
Организация поиска на сайте клиента
Используется для организации сервиса подобного нашему модулю Поиск туров - результаты поиска, когда клиент хочет самостоятельно управлять его работой. Позволяет получить результат в текущий момент наиболее соответствующий данным в системах туроператоров.
Сервис предоставляет данные полученные в текущий момент из всех возможных источников: сохраненные в БД, полученные "на лету" из системы туроператора, а также некоторыми другими способами.
Обратите внимание: данный тип поиска для обработки запросов от конечных пользователей, и не предназначен для обработки автоматических запросов. Ограничение вызвано тем что запросы в конечном счете передаются в системы туроператоров, которые зачастую не адаптированы к большой нагрузке. Для автоматических запросов должен использоваться тип поиска БД поиск.
Алгоритм организации поиска
- Приложение формирует поисковый запрос и отправляет его сервису Поиск туров.
- Сервис инициирует новый поиск.
- Приложение ожидает ответа от сервиса.
- Сервис возвращает данные по запрошенной странице, данные о количестве найденных туров и ключ поиска.
- Сервис в фоновом режиме продолжает поиск до нахождения всех данных для запроса.
- Приложение периодически опрашивает сервис Статус поиска, для обновления найденного количества туров и проверки что поиск не завершен.
- Получив информацию что поиск завершен приложение может:
- сообщить пользователю что поиск завершен
- предложить обновить результаты поиска (т.к. могли быть найдены новые данные)
- обновить результаты поиска автоматически
- Для обновления результатов поиска приложение отправляет сервису Поиск туров поисковый запрос, идентичный тому что был отправлен ранее.
Особенности работы
Время поиска
- Т.к. в момент поиска приходится ждать ответа из разных систем, полный поиск может занимать продолжительное время.
- Ограничение на время полного поиска 30 сек., после этого в результаты поиска попадают туры найденные за это время.
- Приложение должно запрашивать у сервиса нужную ему страницу данных. Страница определяется параметрами dataLimit, dataOffset.
- После запроса сервис возвращает данные в момент когда:
- либо найдено достаточное количество данных для формирования запрошенной страницы
- либо истек таймаут
- Таймаут на возврат запрошенной страницы 10 сек. По истечении таймаута сервис вернет все найденные на этот момент предложения.
- Таймаут может быть автоматически увеличен до 30 сек, если за это время ни одного предложения не найдено, но все еще ожидается ответ от медленного поставщика данных.
Минимальная цена
- При возврате запрошенной страницы первым туром будет тур с минимальной ценой из всех найденных в текущий момент.
- Если на момент возврата страницы таймаут еще не истек, это тур с минимальной ценой по данному запросу.
- Если страница возвращена из-за таймаута, то потенциально в процессе поиска могут быть найдены туры с ценой меньше. Они будут доступны по данному запросу после окончания поиска.
Кеширование
- Результаты всех запросов кешируются.
- Последующий запрос с аналогичными параметрами (без учета dataLimit, dataOffset) будет возвращен из кеша.
- Время жизни кеша 15 минут.
- В случае если при обращении к сервису с определенными параметрами поиск по таким параметрам уже идет, то:
- если данные для формирования запрошенной страницы уже найдены, будет возвращен результат
- если данные для формирования запрошенной страницы еще найдены, результат будет возвращен как только будут найдены данные
Ограничения
- Количество данных возвращаемое одним запросом: не более 2500 туров.
- Макс. допустимое количество запросов в сутки: 3000
Обратите внимание: Большее число запросов необходимо согласовывать индивидуально, и может повлечь за собой увеличение тарифов. Если не было соответствующей договоренности, то при превышении нагрузки сервис может быть отключен без предварительного предупреждения.