XML - результаты поиска/Поиск туров/Тип поиска - Комбинированный — различия между версиями

Материал из TourClient - Руководство пользователя
Перейти к: навигация, поиск
(Новая страница: «Используется для организации сервиса подобного нашему модулю Поиск туров - результаты …»)
 
м (Artemandreev переименовал страницу XML экспорт/Поиск туров/Тип поиска - Комбинированный в [[XML - результаты поиска/Поиск туров/Тип поиска - Комби…)
 
(не показаны 8 промежуточные версии 1 участника)
Строка 1: Строка 1:
Используется для организации сервиса подобного нашему модулю [[Поиск туров - результаты поиска]], когда клиент хочет самостоятельно управлять его работой. Позволяет получить результат в текущий момент наиболее соответствующий данным в системах туроператоров.
+
__TOC__
 
+
'''Тип поиска: комбинированный'''
+
  
  
Строка 12: Строка 10:
 
[http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg <img src="http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg" width="200px" style="float: right">]
 
[http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg <img src="http://wiki.tourclient.ru/w/images/d/d6/Search_tour.svg" width="200px" style="float: right">]
  
# Приложение формирует поисковый запрос и отправляет его сервису '''Результаты поиска'''.
+
# Приложение формирует поисковый запрос и отправляет его сервису [[XML_экспорт/Поиск_туров/Интерфейс_-_Результаты_поиска|Результаты поиска]].
 
# Сервис инициирует новый поиск.
 
# Сервис инициирует новый поиск.
 
# Приложение ожидает ответа от сервиса.  
 
# Приложение ожидает ответа от сервиса.  
 
# Сервис возвращает данные по запрошенной странице, данные о количестве найденных туров и ключ поиска.
 
# Сервис возвращает данные по запрошенной странице, данные о количестве найденных туров и ключ поиска.
 
# Сервис в фоновом режиме продолжает поиск до нахождения всех данных для запроса.
 
# Сервис в фоновом режиме продолжает поиск до нахождения всех данных для запроса.
# Приложение периодически опрашивает сервис '''Статус поиска''', для обновления найденного количества туров и проверки что поиск не завершен.
+
# Приложение периодически опрашивает сервис [[XML экспорт/Поиск туров/Интерфейс - Статус поиска|Статус поиска]], для обновления найденного количества туров и проверки что поиск не завершен.
 
# Получив информацию что поиск завершен приложение может:
 
# Получив информацию что поиск завершен приложение может:
 
#* сообщить пользователю что поиск завершен
 
#* сообщить пользователю что поиск завершен
 
#* предложить обновить результаты поиска (т.к. могли быть найдены новые данные)
 
#* предложить обновить результаты поиска (т.к. могли быть найдены новые данные)
 
#* обновить результаты поиска автоматически
 
#* обновить результаты поиска автоматически
# Для обновления результатов поиска приложение отправляет сервису '''Результаты поиска''' поисковый запрос, идентичный тому что был отправлен ранее.
+
# Для обновления результатов поиска приложение отправляет сервису [[XML_экспорт/Поиск_туров/Интерфейс_-_Результаты_поиска|Результаты поиска]] поисковый запрос, идентичный тому что был отправлен ранее.
  
 
<br>
 
<br>
Строка 49: Строка 47:
 
** если данные для формирования запрошенной страницы уже найдены, будет возвращен результат
 
** если данные для формирования запрошенной страницы уже найдены, будет возвращен результат
 
** если данные для формирования запрошенной страницы еще найдены, результат будет возвращен как только будут найдены данные
 
** если данные для формирования запрошенной страницы еще найдены, результат будет возвращен как только будут найдены данные
 +
* Исползуется [[XML_экспорт/Поиск_туров/Буфер_поиска|Буфер поиска]]
 +
 +
<br>
  
 
==== Ограничения ====
 
==== Ограничения ====
Строка 55: Строка 56:
  
  
'''Обратите внимание:''' Большее число запросов необходимо согласовывать индивидуально, и может повлечь за собой увеличение тарифов. Если не было соответствующей договоренности, то при превышении нагрузки сервис может быть отключен без предварительного предупреждения.
+
'''Обратите внимание:''' Большее число запросов необходимо согласовывать индивидуально, и может повлечь за собой увеличение тарифов. Если не было соответствующей договоренности, то при превышении нагрузки сервис может быть временно отключен без предварительного предупреждения.

Текущая версия на 16:03, 22 декабря 2014


Сервис предоставляет данные полученные в текущий момент из всех возможных источников: сохраненные в БД, полученные "на лету" из системы туроператора, а также некоторыми другими способами.


Обратите внимание: данный тип поиска предназначен для обработки запросов от конечных пользователей, и не предназначен для обработки автоматических запросов. Ограничение вызвано тем что запросы в конечном счете передаются в системы туроператоров, которые зачастую не адаптированы к большой нагрузке. Для автоматических запросов должен использоваться тип поиска БД поиск.

Алгоритм организации поиска

  1. Приложение формирует поисковый запрос и отправляет его сервису Результаты поиска.
  2. Сервис инициирует новый поиск.
  3. Приложение ожидает ответа от сервиса.
  4. Сервис возвращает данные по запрошенной странице, данные о количестве найденных туров и ключ поиска.
  5. Сервис в фоновом режиме продолжает поиск до нахождения всех данных для запроса.
  6. Приложение периодически опрашивает сервис Статус поиска, для обновления найденного количества туров и проверки что поиск не завершен.
  7. Получив информацию что поиск завершен приложение может:
    • сообщить пользователю что поиск завершен
    • предложить обновить результаты поиска (т.к. могли быть найдены новые данные)
    • обновить результаты поиска автоматически
  8. Для обновления результатов поиска приложение отправляет сервису Результаты поиска поисковый запрос, идентичный тому что был отправлен ранее.


Особенности работы

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


Ограничения

  • Количество данных возвращаемое одним запросом: не более 2500 туров.
  • Макс. допустимое количество запросов в сутки: 3000


Обратите внимание: Большее число запросов необходимо согласовывать индивидуально, и может повлечь за собой увеличение тарифов. Если не было соответствующей договоренности, то при превышении нагрузки сервис может быть временно отключен без предварительного предупреждения.