RU2738590C1 - Method and system for searching for ticket offers - Google Patents

Method and system for searching for ticket offers Download PDF

Info

Publication number
RU2738590C1
RU2738590C1 RU2019142437A RU2019142437A RU2738590C1 RU 2738590 C1 RU2738590 C1 RU 2738590C1 RU 2019142437 A RU2019142437 A RU 2019142437A RU 2019142437 A RU2019142437 A RU 2019142437A RU 2738590 C1 RU2738590 C1 RU 2738590C1
Authority
RU
Russia
Prior art keywords
search
gateway
request
user
received
Prior art date
Application number
RU2019142437A
Other languages
Russian (ru)
Inventor
Иван Андреевич Садовой
Игорь Анатольевич Суханов
Иван Сергеевич Рудев
Original Assignee
Общество С Ограниченной Ответственностью "Глобус Медиа"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Глобус Медиа" filed Critical Общество С Ограниченной Ответственностью "Глобус Медиа"
Priority to PCT/RU2019/000977 priority Critical patent/WO2021125997A1/en
Priority to RU2019142437A priority patent/RU2738590C1/en
Application granted granted Critical
Publication of RU2738590C1 publication Critical patent/RU2738590C1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/02Reservations, e.g. for tickets, services or events
    • G06Q10/025Coordination of plural reservations, e.g. plural trip segments, transportation combined with accommodation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Marketing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Economics (AREA)
  • Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

FIELD: physics.
SUBSTANCE: invention relates to the computer equipment. Method for searching ticket offers includes the following steps: receiving at least one request from a user to search for ticket offers; converting at least one request from a user obtained at a previous step into a set of requests for booking system gateways; distributing a set of requests for gateways, obtained at previous step, by modules of interaction with gateway by means of dispatcher; determining, by means of at least one interaction module with gateway, whether this gateway will execute request and how many requests to given gateway are required; performing at least one search request in the reservation system gateway for those requests, which are determined as available at previous step; obtaining ticket offers data from at least one reservation system; generating, based on the received proposals, at least one response to the user for a request which was received from the user.
EFFECT: technical result consists in improvement of speed of user obtaining ticket search offers.
18 cl, 7 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

[001] Настоящее изобретение, в общем, относится к области вычислительной техники, а в частности к способам и системам для осуществления поиска предложений билетов.[001] The present invention relates generally to the field of computing, and in particular to methods and systems for searching for ticket offers.

УРОВЕНЬ ТЕХНИКИLEVEL OF TECHNOLOGY

[002] В настоящее время существующие в уровне техники решения поиска предложений билетов обладают рядом серьезных недостатков, не позволяющих быстро получать пользователям поисковые предложения. Шлюзы систем бронирования в разное время отвечают на запросы, что увеличивает время ожидания клиентом поисковой выдачи.[002] Currently, prior art ticket search solutions have a number of serious drawbacks that prevent users from quickly retrieving search suggestions. The gateways of booking systems respond to requests at different times, which increases the client's waiting time for search results.

[003] В большинстве случаев (кроме совсем региональных направлений) ни один шлюз систем бронирования не содержит весь возможный ассортимент предложений. Кроме того, информация, возвращаемая шлюзами, зачастую неполна или неудобна для понимания неспециалистом.[003] In most cases (except for completely regional destinations), no gateway of booking systems contains the entire possible range of offers. In addition, the information returned by gateways is often incomplete or inconvenient for a layman to understand.

[004] Из уровня техники известна международная заявка WO2018135834 (А1) «Plane ticket search system and method using modified plane ticket» (Заявитель: FLTGRAPH CO LTD [KR], Дата публикации: 2018-07-26). В данном решении раскрыты система и способ поиска рейсов с использованием модифицированного билета на самолет. Система поиска рейсов в соответствии с вариантом осуществления настоящего изобретения содержит: модуль управления для предоставления информации о существующем билете на самолет в пользовательском терминала; и модуль модификации для приема запроса на модификацию для заранее определенного компонента выбора среди компонентов существующего билета на самолет, предоставленных пользовательскому терминалу, причем компоненты включают в себя место отправления, место остановки, место назначения и информацию о пребывании в месте остановки, указанном в билете на самолет, причем модуль управления выполняет обработку таким образом, что пользовательский терминал может искать целевой билет на самолет, используя модифицированный компонент и унаследованный компонент, которые включены в компоненты модифицированного билета на самолет, отражающие запрос на изменение, при этом измененный компонент является компонентом, отражающим запрос на изменение в отношении компонента выбора среди компонентов существующего билета на самолет, а унаследованный компонент является компонентом среди компонентов существующего билета на самолет, для которого нет запроса на изменение.[004] International application WO2018135834 (A1) "Plane ticket search system and method using modified plane ticket" is known from the prior art (Applicant: FLTGRAPH CO LTD [KR], Publication date: 2018-07-26). This solution discloses a system and method for searching for flights using a modified plane ticket. A flight search system according to an embodiment of the present invention comprises: a control module for providing information about an existing plane ticket in a user terminal; and a modification module for receiving a modification request for a predetermined selection component among the components of an existing airplane ticket provided to the user terminal, the components including a departure place, a stopping place, a destination, and information about staying at a stopping place indicated on the airplane ticket where the control module performs processing such that the user terminal can search for the target plane ticket using the modified component and the legacy component that are included in the modified plane ticket components reflecting the change request, the changed component being the component reflecting the request for a change to a selection component among the components of an existing airplane ticket, and the legacy component is a component among the components of an existing airplane ticket for which there is no change request.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[005] Технической проблемой или технической задачей, решаемой в данном изобретении, является осуществление способа и системы быстрого поиска предложений билетов.[005] A technical problem or a technical problem solved in the present invention is the implementation of a method and system for fast search of ticket offers.

[006] Техническим результатом, достигаемым при решении вышеуказанной технической проблемы, является повышение скорости получения пользователем поисковых предложений билетов.[006] The technical result achieved by solving the aforementioned technical problem is to increase the speed at which the user receives search ticket offers.

[007] Дополнительным техническим результатом является предоставление пользователю более точных предложений, повышение количества выбора механизмов помощи пользователю в выборе предложения.[007] An additional technical result is the provision of more accurate proposals to the user, an increase in the number of mechanisms for assisting the user in choosing an offer.

[008] Указанный технический результат достигается благодаря осуществлению способа для осуществления поиска предложений билетов, который выполняет посредством по меньшей мере одним процессором, в котором получают по меньшей мере один запрос от пользователя на поиск предложений билетов; осуществляют преобразование по меньшей мере одного запроса от пользователя, полученного на предыдущем шаге, в набор запросов для шлюзов систем бронирования; распределяют набор запросов для шлюзов, полученных на предыдущем шаге, по модулям взаимодействия со шлюзом посредством диспетчера; определяют посредством по меньшей мере одного модуля взаимодействия со шлюзом будет ли данный шлюз выполнять запрос и сколько необходимо запросов к данному шлюзу; выполняют по меньшей мере один поисковый запрос в шлюзе системы бронирования билетов для тех запросов, которые определили как доступные на предыдущем шаге; получают данные предложений по билетам по меньшей мере от одной системы бронирования билетов; формируют на основании полученных предложений по меньшей мере один ответ пользователю на запрос, который был от него получен.[008] The specified technical result is achieved by implementing a method for searching for ticket offers, which is performed by at least one processor, in which at least one request is received from a user to search for ticket offers; transforming at least one request from the user received in the previous step into a set of requests for gateways of reservation systems; distribute the set of requests for gateways received in the previous step among the modules for interacting with the gateway through the dispatcher; determining by means of at least one module for interaction with the gateway whether the given gateway will fulfill the request and how many requests are required to the given gateway; performing at least one search query in the gateway of the ticket booking system for those queries determined to be available in the previous step; receive ticket offer data from at least one ticket booking system; on the basis of the received proposals, at least one response to the user request that was received from him is formed.

[009] В некоторых вариантах реализации изобретения при получении запроса от пользователя на поиск предложений билетов преобразовывают его в формат gRPC или REST и JSON.[009] In some embodiments, upon receiving a request from a user to search for ticket offers, convert it to gRPC or REST and JSON format.

[0010] В некоторых вариантах реализации изобретения при получении запроса от пользователя, который содержит направление туда и обратно, разделяют его на два поисковых запроса посредством модуля преобразования запроса в рамках одной или нескольких партнерской схемы результатов.[0010] In some embodiments, upon receiving a request from a user that includes a round trip, it is split into two search queries by a query transform module within one or more partner results schemas.

[0011] В некоторых вариантах реализации изобретения для каждого направления цену формируют отдельно.[0011] In some embodiments of the invention, the price is formed separately for each direction.

[0012] В некоторых вариантах реализации изобретения полученные запросы от пользователя на поиск предложений билетов объединяют в группы.[0012] In some embodiments of the invention, received requests from the user to search for ticket offers are combined into groups.

[0013] В некоторых вариантах реализации изобретения полученный запрос от пользователя на поиск предложений билетов преобразовывают посредством стратегии поиска через хабы.[0013] In some embodiments, the received request from the user to search for ticket offers is transformed by a search strategy across the hubs.

[0014] В некоторых вариантах реализации изобретения получают данные предложений по билетам из шлюза системы бронирования и/или кэша.[0014] In some embodiments, ticket offer data is obtained from a reservation system gateway and / or cache.

[0015] В некоторых вариантах реализации изобретения данные предложений билетов получают из кэша после уточнения его актуальности по конкретному предложению.[0015] In some embodiments of the invention, ticket offer data is retrieved from the cache after its relevance to a particular offer has been verified.

[0016] В некоторых вариантах реализации изобретения осуществляют неточный поиск посредством модуля преобразования запроса.[0016] In some embodiments, a fuzzy search is performed by a query transform module.

[0017] В некоторых вариантах реализации изобретения поисковый запрос в модуль взаимодействия со шлюзом является сетевым запросом SOAP или RPC, или XML.[0017] In some embodiments, the lookup request to the gateway interaction module is a SOAP or RPC or XML network request.

[0018] В некоторых вариантах реализации изобретения поисковый запрос в модуль взаимодействия со шлюзом имеет разный формат в зависимости от шлюза.[0018] In some embodiments, the search query to the gateway interaction module has a different format depending on the gateway.

[0019] В некоторых вариантах реализации изобретения поисковый запрос в модуль взаимодействия со шлюзом содержит набор направлений и дат, на которые пользователи ищет билет, конфигурация пассажиров и сервисный класс.[0019] In some embodiments, the search query to the gateway interaction module contains a set of directions and dates for which users are searching for a ticket, a passenger configuration, and a service class.

[0020] В некоторых вариантах реализации изобретения поисковый запрос в модуль взаимодействия со шлюзом содержит информацию о пользователе шлюза для аутентификации и авторизации, а также рекомендации шлюза по тому, какие предложения выбрать.[0020] In some embodiments of the invention, the search request to the gateway interaction module contains information about the user of the gateway for authentication and authorization, as well as the gateway's recommendations on which offers to choose.

[0021] В некоторых вариантах реализации изобретения при получении запросов диспетчер[0021] In some embodiments, upon receipt of requests, the dispatcher

• формирует выходную очередь, которая содержит уникальное имя;• forms an output queue that contains a unique name;

• посылает в шину данных команду на создание данной выходной очереди с таким уникальным именем;• sends a command to the data bus to create a given output queue with such a unique name;

• сообщает модулям взаимодействия со шлюзом, что направлять данные необходимо из систем бронирования в данную очередь.• informs the modules of interaction with the gateway that it is necessary to send data from the reservation systems to this queue.

[0022] В некоторых вариантах реализации изобретения шина данных представляет из себя программный брокер RabbitMQ или Nats.[0022] In some embodiments, the data bus is a RabbitMQ or Nats software broker.

[0023] В некоторых вариантах реализации изобретения при определении того, будет ли шлюз выполнять запрос и сколько необходимо запросов к нему используют базу данных с заранее заданными правилами.[0023] In some embodiments of the invention, a database with predefined rules is used to determine whether the gateway will execute a request and how many requests to it are required.

[0024] В некоторых вариантах реализации изобретения на всех шагах способа используют поточную обработку данных.[0024] In some embodiments, all method steps use streaming data processing.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS

[0025] Признаки и преимущества настоящего изобретения станут очевидными из приведенного ниже подробного описания и прилагаемых чертежей, на которых:[0025] The features and advantages of the present invention will become apparent from the following detailed description and the accompanying drawings, in which:

[0026] На Фиг. 1 показан пример реализации архитектуры многослойной системы для осуществления умного поиска предложений билетов.[0026] FIG. 1 shows an example of the implementation of the architecture of a multilayer system for smart search for ticket offers.

[0027] На Фиг. 2 показан пример реализации архитектуры слоя 140, который отправляет поисковые запросы в поисковые шлюзы и обогащает результаты информацией, не зависящей от конкретного пользователя (англ. AviaGateSearch).[0027] FIG. 2 shows an example implementation of the architecture of layer 140, which sends search queries to search gateways and enriches the results with information that does not depend on a particular user (eng. AviaGateSearch).

[0028] На Фиг. 3 показан пример реализации синхронизации в слое 130 преобразования запросов пользователя в набор запросов к слою 140 для поиска лучших результатов по ассортименту (англ. Avia-Smart-Search).[0028] FIG. 3 shows an example of the implementation of synchronization in layer 130 of transforming user queries into a set of queries to layer 140 to search for the best results by assortment (Avia-Smart-Search).

[0029] На Фиг. 4 показан пример вычислительной архитектуры системы через компоненты для осуществления умного поиска предложений билетов.[0029] FIG. 4 shows an example of the computing architecture of a system through components for intelligently searching for ticket offers.

[0030] На Фиг. 5 показан пример реализации движения данных в слое 130 преобразования запросов пользователя в набор запросов к слою 140 для поиска лучших результатов по ассортименту (англ. Avia-Smart-Search).[0030] FIG. 5 shows an example of the implementation of data movement in layer 130 of transforming user queries into a set of queries to layer 140 for searching for the best results by assortment (Avia-Smart-Search).

[0031] На Фиг. 6 показан пример реализации синхронизации в слое 120 формирования поисковой выдачи для конкретного пользователя (англ. Avia-User-Search).[0031] FIG. 6 shows an example of the implementation of synchronization in the layer 120 of the formation of search results for a specific user (English Avia-User-Search).

[0032] На Фиг. 7 показан пример реализации движения данных в слое 120 формирования поисковой выдачи для конкретного пользователя (англ. Avia-User-Search).[0032] FIG. 7 shows an example of the implementation of the movement of data in the layer 120 of the formation of search results for a specific user (English Avia-User-Search).

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

[0033] Ниже будут подробно рассмотрены термины и их определения, используемые в описании изобретения.[0033] Below will be discussed in detail the terms and their definitions used in the description of the invention.

[0034] В данном изобретении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций), централизованные и распределенные базы данных, смарт-контракты.[0034] In this invention, a system means a computer system, a computer (electronic computer), a CNC (numerical control), a PLC (programmable logic controller), computerized control systems and any other devices capable of performing a given, well-defined sequence of operations. (actions, instructions), centralized and distributed databases, smart contracts.

[0035] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы), смарт-контракт, виртуальная машина Ethereum (EVM) или подобное. Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.[0035] By a command processor is meant an electronic unit or an integrated circuit (microprocessor) executing machine instructions (programs), a smart contract, an Ethereum virtual machine (EVM), or the like. A command processor reads and executes machine instructions (programs) from one or more storage devices. Data storage devices can be, but are not limited to, hard disks (HDD), flash memory, ROM (read only memory), solid-state drives (SSD), optical drives.

[0036] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.[0036] A program is a sequence of instructions for execution by a computer control device or command processing device.

[0037] Контрольный таймер (англ. watchdog timer букв, «сторожевой пес») - аппаратно реализованная схема контроля над зависанием системы. Представляет собой таймер, который периодически сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы. В некоторых случаях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же - перезагрузка происходит аппаратно (замыканием сигнального провода RST или подобного ему).[0037] Watchdog timer (English watchdog timer letters, "watchdog") - a hardware-implemented scheme to control system hangup. It is a timer that is periodically reset by a monitored system. If the reset does not occur within a certain time interval, a forced system reboot occurs. In some cases, the watchdog timer can send a signal to the system to reboot ("soft" reboot), while in others it can be rebooted in hardware (by shorting the RST signal wire or similar).

[0038] Также возможна софтверная эмуляция данного решения, когда функции таймера, а также сброса (перезагрузки) системы выполняет внешняя система по отношению к контролируемой. В данном случае используется реализация системных таймеров и сигналов управления, внешние по отношению к исполняемому алгоритму.[0038] A software emulation of this solution is also possible, when the functions of the timer, as well as reset (reboot) of the system, are performed by an external system in relation to the controlled one. In this case, the implementation of system timers and control signals external to the executable algorithm is used.

[0039] Поисковая система(англ. Search engine) - это компьютерная система, предназначенная для поиска информации.[0039] A search engine is a computer system designed to search for information.

[0040] Диспетчер - модуль системы, отвечающий за управление процессами.[0040] Dispatcher is a system module responsible for managing processes.

[0041] В данном изобретении реализован поисковый функционал, который более подробно ниже раскрыт.В качества примера использования для ясности понимания при прочтении используются предложения авиабилетов, однако любому специалисту в уровне техники очевидно, что могут быть использованы предложения ЖД билетов, автобусных билетов и так далее или в совокупности, в зависимости от системы бронирования.[0041] The present invention implements the search functionality, which is disclosed in more detail below. As an example of use, for clarity of understanding when reading, air ticket offers are used, however, it is obvious to any person skilled in the art that offers of railway tickets, bus tickets and so on can be used. or in aggregate, depending on the booking system.

[0042] Архитектура системы включает следующие компоненты (слои), как показано на Фиг. 1:[0042] The system architecture includes the following components (layers) as shown in FIG. one:

• Avia-Search-Gateway - слой 110 преобразования потока данных в пакет данных и форматов данных.• Avia-Search-Gateway - Layer 110 converting data stream to packet data and data formats.

• Avia-User-Search - слой 120 формирования поисковой выдачи для конкретного пользователя;• Avia-User-Search - layer 120 of the formation of search results for a specific user;

• Avia-Smart-Search - слой 130 преобразования запросов пользователя в набор запросов к слою 140 для поиска лучших результатов по ассортименту;• Avia-Smart-Search - layer 130 converting user queries into a set of queries to layer 140 to find the best results by assortment;

• Avia-Gate-Search - слой 140, который отправляет поисковые запросы в поисковые шлюзы и обогащает результаты информацией, не зависящей от конкретного пользователя.• Avia-Gate-Search - Layer 140 that sends search queries to search gateways and enriches the results with user-independent information.

[0043] Концепция слоев - одна из общеупотребительных моделей, используемых разработчиками в вычислительной области техники для разделения сложных систем на более простые части. В архитектурах компьютерных систем, например, различают слои кода на языке программирования, функций операционной системы, драйверов устройств, наборов инструкций центрального процессора и внутренней логики микросхем.[0043] The concept of layers is one of the common models used by computational designers to divide complex systems into simpler parts. Computer system architectures, for example, distinguish between layers of programming language code, operating system functions, device drivers, CPU instruction sets, and internal chip logic.

[0044] Слой n+1 использует слой n, следовательно, абстракция понятий слоя n+1 по меньшей мере не ниже, чем у слоя n, а если архитектура системы эффективна, то уровень абстракции слоя должен быть выше. Соответственно, слой n скрывает (инкапсулирует) логику работы с понятиями, определенными на этом слое, позволяя, таким образом, слою n+1 реализовать работу с более сложными понятиями, организовать более сложную логику, используя выразительные средства нижележащего слоя. Можно выбирать альтернативную реализацию базовых слоев: компоненты верхнего слоя способны работать без каких-либо изменений в нижележащих слоях при условии сохранения интерфейсов. Зависимость между слоями, т.е. фактически интерфейсы, предоставляемые нижними слоями верхним, можно свести к минимуму. Такая минимизация интерфейсов позволяет увеличивать гибкость системы.[0044] Layer n + 1 uses layer n, therefore, the abstraction of the concepts of layer n + 1 is at least not lower than that of layer n, and if the system architecture is efficient, then the level of abstraction of the layer should be higher. Accordingly, layer n hides (encapsulates) the logic of working with concepts defined on this layer, thus allowing layer n + 1 to implement work with more complex concepts, to organize more complex logic using the expressive means of the underlying layer. You can choose an alternative implementation of the base layers: the components of the upper layer are able to work without any changes in the underlying layers, provided that the interfaces are preserved. Dependency between layers, i.e. in fact, the interfaces provided by the lower layers by the upper can be minimized. This minimization of interfaces allows for increased system flexibility.

[0045] Слои способны удачно инкапсулировать многое, но не все: модификация одного слоя подчас связана с необходимостью внесения каскадных изменений в остальные слои. Наличие избыточных слоев нередко снижает производительность системы. При переходе от слоя к слою данные обычно подвергаются преобразованиям из одного представления в другое. Несмотря на это, инкапсуляция нижележащих функций зачастую позволяет достичь весьма существенного преимущества.[0045] Layers can successfully encapsulate much, but not all: modification of one layer is sometimes associated with the need to make cascading changes in other layers. Excessive layers often reduce system performance. When moving from layer to layer, data is usually transformed from one view to another. Despite this, encapsulating the underlying functions can often be very beneficial.

[0046] Каждый из слоев содержит один или более модулей. Модули, объединяются в слои по тому, с какими данными они работают.[0046] Each of the layers contains one or more modules. Modules are combined into layers according to what data they work with.

[0047] Ни один верхний слой не меняет данные из нижних слоев, т.е. на слое 130 преобразования запросов пользователя не происходит изменений в поисковых предложениях (см. далее параграф 0086). В данном техническом решении осуществляют поиск в шлюзах, каждый из которых предоставляет доступ к одной или нескольким системам бронирования поисковых предложений в соответствии с заданным пользователем запросом. Шлюз может использовать XML-протокол (XML-шлюз, но не ограничиваясь, который позволяет формировать справочные запросы, получать ответы, а также использовать весь контент, например, АРС "Сирена-Трэвел" для бронирования и продажи авиаперевозок.[0047] No upper layer changes data from the lower layers, i. E. on the user query conversion layer 130, no changes are made to the search suggestions (see paragraph 0086 below). In this technical solution, a search is carried out in gateways, each of which provides access to one or more booking systems for search proposals in accordance with a user-specified request. The gateway can use XML-protocol (XML-gateway, but not limited to, which allows to form reference queries, receive responses, and also use all content, for example, Sirena-Travel ARS for booking and selling air travel.

[0048] В некоторых вариантах реализации утвержден режим предоставления поисковых результатов на фронтенд - пакетный или поточный, и накладываемые ими ограничения. Пакетный режим подразумевает одномоментную отдачу данных от поисковой системы на фронтенд, но только в тот момент, когда будет обработано самое последнее предложение. Поточный режим позволяет отдавать каждое предложение сразу после обработки именно его, не дожидаясь остальных, но накладывает дополнительные требования на протокол передачи данных, плюс при поточном режиме невозможно использовать информацию о всей выдаче при обработке каждого конкретного предложения.[0048] In some implementations, the mode of providing search results to the frontend - batch or streaming, and the restrictions imposed by them are approved. Batch mode implies a one-time return of data from the search engine to the front-end, but only at the moment when the most recent offer is processed. The streaming mode allows you to give each offer immediately after processing it, without waiting for the rest, but imposes additional requirements on the data transfer protocol, plus in the streaming mode it is impossible to use information about the entire issue when processing each specific offer.

[0049] Запросом (для слоев 120 и 130 как будет раскрыто далее) является набор направлений, на которые пользователь хочет приобрести билеты, а также конфигурация пассажиров и классов обслуживания на каждое из этих направлений. Пользователь может таким образом формировать запрос в графическом интерфейсе пользователя веб-ресурса или посредством описания. Например, запросом может являться следующее: два направления «Москва - Спб» на 10 декабря, причем 1 взрослый и 1 ребенок в эконом классе, и «Спб - Москва» на 15 декабря, причем 1 взрослый и 1 ребенок в эконом классе. Поисковая система не ограничивает запросы одинаковой конфигурацией пассажиров и классов обслуживания. Конфигурация пассажиров и классов обслуживания в запросе указывается для каждого направления отдельно, в том числе в случае, если пользовательский интерфейс позволяет задать их один раз на все направления. Технически поисковый механизм, реализованный в системе, получает пользовательский запрос в виде запроса по сети, который затем преобразуется, например, в запрос во внутреннем формате, например, gRPC запрос) и передается между компонентами поискового механизма (иногда - «движка») или ядра другими словами. В других вариантах реализации вместо gRPC может использоваться связка технологий REST+JSON, но не ограничиваясь.[0049] The request (for layers 120 and 130, as will be discussed later) is a set of destinations for which the user wants to purchase tickets, as well as the configuration of passengers and service classes for each of these destinations. The user can thus form a request in the graphical user interface of a web resource or through a description. For example, the request may be the following: two directions "Moscow - St. Petersburg" for December 10, with 1 adult and 1 child in economy class, and "St. Petersburg - Moscow" for December 15, with 1 adult and 1 child in economy class. The search engine does not restrict requests to the same configuration of passengers and service classes. The configuration of passengers and service classes in the request is specified for each direction separately, including if the user interface allows you to set them once for all directions. Technically, the search engine implemented in the system receives a user request in the form of a request over the network, which is then converted, for example, into a request in an internal format, for example, a gRPC request) and transmitted between the components of the search engine (sometimes - the “engine”) or the kernel by others words. In other implementations, a bunch of REST + JSON technologies can be used instead of gRPC, but not limited to.

[0050] Затем полученный от пользователя запрос преобразуется посредством модуля преобразования запроса (в слое 130, как показано на Фиг. 1). Пользовательский запрос, состоящий из более чем одного направления с одинаковыми конфигурациями пассажиров и классов обслуживания, преобразуется в как минимум две группы поисковых запросов. В первой группе на каждое направление создается отдельный поисковый запрос. Во второй группе все направления комбинируются в атомарный поисковый запрос. Например, поиск "туда-обратно" (англ. roundtrip) Москва - Спб - Москва на 01.01.2020 и 07.01.2020 на одного взрослого пассажира в классе Эконом на оба направления будет преобразован в две группы поисковых запросов: в первой группе будут два отдельных запроса (англ. oneway) Москва - Спб и Спб - Москва, для каждого из которых будет указана конфигурация пассажиров и класс обслуживания; во второй группе будет один атомарный поиск Москва - Спб - Москва с единой конфигурацией пассажиров и классов обслуживания на все направления сразу. В некоторых реализациях более сложные пользовательские запросы могут быть трансформированы в большее число групп запросов. Полученные в рамках одной группы поисковых запросов Поисковые Предложения (см. п. 0086) затем комбинируются в Объединенные Предложения (см. п. 0084), в том числе и между различными Партнерскими Схемами.[0050] Then, the request received from the user is converted by the request transform unit (in layer 130, as shown in FIG. 1). A user request consisting of more than one direction with the same configurations of passengers and service classes is converted into at least two groups of search requests. In the first group, a separate search query is created for each direction. In the second group, all directions are combined into an atomic search query. For example, a roundtrip search Moscow - St. Petersburg - Moscow on 01/01/2020 and 01/07/2020 per adult passenger in Economy class for both directions will be converted into two groups of search queries: the first group will have two separate request (eng. oneway) Moscow - St. Petersburg and St. Petersburg - Moscow, for each of which the configuration of passengers and class of service will be indicated; in the second group there will be one atomic search Moscow - St. Petersburg - Moscow with a single configuration of passengers and service classes for all directions at once. In some implementations, more complex custom queries can be transformed into more query groups. The Search Offers received within one group of search queries (see p. 0086) are then combined into Combined Offers (see p. 0084), including between different Affiliate Schemes.

[0051] Партнерская Схема представляет собой канал бронирования и продажи предложения. Например, одно и то же предложение может быть получено из разных систем бронирования (например, предложения Аэрофлота могут быть получены из систем бронирования Сейбр, Галилео, Сирена и т.п.). У этого предложения могут немного отличаться тарифы и таксы в разных системах бронирования, кроме того, отличаются агентские вознаграждения, которые получает веб-сервис данного изобретения. В конкретном варианте реализации рассчитывают цену для каждого такого варианта отдельно, и эти цены могут отличаться, причем в таком случае предлагают пользователю самое дешевое (хотя есть исключения). В других вариантах реализации конечная цена является одной и той же для разных каналов продажи. Кроме того, даже предложения из одной и той же системы бронирования могут оформлять через разные юридические лица, что тоже влияет на доходность и цену.[0051] The Affiliate Scheme is a channel for booking and selling an offer. For example, the same offer can be received from different booking systems (for example, Aeroflot's offers can be received from the Sabre, Galileo, Sirena, etc. booking systems). This offer may have slightly different rates and taxes in different booking systems, in addition, the agency fees that the web service of this invention receives differ. In a particular implementation, the price is calculated for each such option separately, and these prices may differ, and in this case, the user is offered the cheapest (although there are exceptions). In other implementations, the final price is the same for different sales channels. In addition, even offers from the same booking system can be issued through different legal entities, which also affects the profitability and price.

[0052] В некоторых вариантах реализации запрос пользователя может преобразовываться посредством стратегии поиска через хабы. Необходимо отметить, что предложения с пересадкой комбинируют и сами системы бронирования. В данном же техническом решении можно комбинировать предложения от разных систем бронирования, а также путем явного разбиения маршрута на составляющие на основе собственных знаний посылать дополнительные запросы в системы бронирования, чтобы получить больше вариантов. Например, пользователь ищет «Чебоксары - Майами». Ни одна система бронирования такого перелета не найдет, потому что из Чебоксар летают только локальные рейсы, которых нет в системах бронирования, в которых есть рейсы Москва - Майами. Однако в данном техническом решении известно, что можно отдельно поискать «Чебоксары - Москва» и отдельно «Москва - Майами», а затем скомбинировать предложения из разных систем бронирования.[0052] In some implementations, the user's query may be translated by a search strategy across the hubs. It should be noted that offers with a transfer also combine the booking systems themselves. In this technical solution, it is possible to combine offers from different booking systems, and also by explicitly dividing the route into components based on your own knowledge, send additional requests to the booking systems in order to get more options. For example, a user searches for "Cheboksary - Miami". Not a single booking system will find such a flight, because only local flights fly from Cheboksary, which are not in booking systems that have flights Moscow - Miami. However, in this technical solution it is known that you can separately search for "Cheboksary - Moscow" and separately "Moscow - Miami", and then combine offers from different booking systems.

[0053] В некоторых вариантах реализации осуществляют неточный поиск в конкретном варианте реализации посредством модуля преобразования запроса, например, поиск в страну и из страны, тематический поиск, поиск на плавающие даты и т.п. Пользователь делает запрос «Москва - Теплое море в январе», а в данном техническом решении определяют, что в январе море теплое в Юго-Восточной Азии и на Карибах, и соответственно сделает запросы в ГДС «Москва - Пхукет», «Москва - Гавана» и т.д. Нечеткий поиск - это поиск информации, при котором выполняется сопоставление информации заданному образцу поиска или близкому к этому образцу значению.[0053] In some implementations, an imprecise search is performed in a particular implementation by a query transform module, for example, to and from country searches, subject searches, floating date searches, and the like. The user makes a request "Moscow - Warm sea in January", and in this technical solution it is determined that in January the sea is warm in Southeast Asia and the Caribbean, and accordingly makes inquiries to the GDS "Moscow - Phuket", "Moscow - Havana" etc. A fuzzy search is a search for information in which information is matched against a given search pattern or a value close to this pattern.

[0054] Дополнительно определяют тарифы посредством модуля определения тарифных правил (SegmentConditions) слоя 140, который обогащает результаты поиска, полученные из шлюзов, и информируют пользователя о доступных на каждом предложении тарифных опциях. В конкретном варианте реализации используют базу данных, наполняемую контент-отделом или автоматически посредством парсинга внешних систем,на основе текстов тарифных правил, описания тарифов на сайтах авиакомпаний, а также напрямую запросами в авиакомпании. В базе данных может содержаться структура из наиболее общего правила (например, "на всех рейсах Аэрофлота доступно одно место багажа") и исключений из него (например, "для тарифов Аэрофлота группы Лайт мест багажа нет") и исключений из исключений и т.д. В других вариантах реализации используют информацию, полученную в ответе от шлюза системы бронирования.[0054] In addition, tariffs are determined by the module for determining tariff rules (SegmentConditions) of layer 140, which enriches the search results obtained from the gateways, and informs the user about the tariff options available on each offer. In a specific implementation, a database is used that is filled by the content department or automatically through parsing of external systems, based on the texts of tariff rules, descriptions of tariffs on the websites of airlines, as well as directly by requests to the airline. The database may contain a structure from the most general rule (for example, "one piece of baggage is available on all Aeroflot flights") and exceptions from it (for example, "there are no baggage pieces for Aeroflot's Light group fares") and exceptions from exceptions, etc. ... Other implementations use the information received in the response from the reservation system gateway.

[0055] В некоторых вариантах реализации определяют и информируют пользователя об особенностях отдельных предложений (цена предложения, чартерный рейс, заказ раздельными билетами, технические посадки и т.п.).[0055] In some embodiments, the implementation determines and informs the user about the features of individual offers (offer price, charter flight, ordering separate tickets, technical landings, etc.).

[0056] В некоторых вариантах реализации, чартерный рейс это или нет определяется на слое 140. Например, из шлюза Sig23 приходят только чартеры, и чартеры приходят только из него.[0056] In some embodiments, whether it is a charter flight or not is defined on layer 140. For example, only charters come from gateway Sig23, and charters come only from it.

[0057] Определение возможности заказа раздельными билетами может происходить на разных слоях системы. В некоторых вариантах реализации шлюзы уже направляют предложения с оформлением билетов - это уровень 140. В другом варианте реализации это определяется объединителем со слоя 130 при комбинации предложений в единое целое.[0057] The determination of the possibility of ordering with separate tickets can occur on different layers of the system. In some implementations, gateways are already sending ticketing offers — this is level 140. In another implementation, this is determined by the combiner from layer 130 when the offers are combined into a coherent whole.

[0058] Определение технических посадок происходит в модуле определения промежуточных посадок (SegmentLegs, не показан на Фиг. ) слоя 140.[0058] The definition of technical fits occurs in the module for determining intermediate fits (SegmentLegs, not shown in Fig.) Of layer 140.

[0059] В конкретном варианте реализации цена предложения представляет собой сумму тарифа и такс (получаемые от ГДС), а также сервисного сбора. Для задания сервисного сбора используется отдельный модуль Pricing. Он может представлять собой модель, полученная методами машинного обучения(но не ограничиваясь). Модель строится на основе исторических данных о продажах и результатах поиска, которая генерирует множество конфигураций сервисных сборов, из которых потом выбирают оптимальную конфигурацию. Доходность определяется как сумма сервисного сбора и агентских вознаграждений, которые оплачивают авиакомпании и ГДС за продажу билета, минус расходы на платежный шлюз и минус партнерский сбор, который взимается партнерами за продажу билета через этого партнера. В зависимости от схемы продажи эти параметры могут быть как заданы непосредственно в программном коде заранее (например, процент платежного шлюза), так и рассчитываться на основе базы данных. В некоторых вариантах реализации в доходность закладывают ожидаемые расходы на поддержку пользователя (контакт-центр, каналы связи) и т.п., не ограничиваясь.[0059] In a particular implementation, the offer price is the sum of the tariff and taxes (received from the GDS), as well as a service charge. A separate Pricing module is used to set the service charge. It can be a machine learning model (but not limited to). The model is built on the basis of historical data on sales and search results, which generates many configurations of service charges, from which the optimal configuration is then selected. Profitability is defined as the sum of the service fee and agency fees that are paid by airlines and GDS for the sale of a ticket, minus the cost of the payment gateway and minus the affiliate fee that is charged by partners for selling a ticket through this partner. Depending on the sales scheme, these parameters can be either set directly in the program code in advance (for example, the percentage of a payment gateway), or calculated based on the database. In some embodiments, the profitability includes the expected costs of user support (contact center, communication channels), etc., but is not limited to.

[0060] В данном изобретении время от получения запроса до формирования ответа бэкендом в 95% случаев не превышает времени ответа самого медленного из включенных шлюзов плюс 3 секунды (надбавочное время). Бэкенд (англ. back-end) - программно-аппаратная часть изобретения. Полное время на формирование первого предложения, которое можно отобразить пользователю в 95% случаев не превышает полутора секунд (в данном случае именно полное, а не добавочное, но здесь это практически одно и то же, поскольку ответы шлюзов кэшируются).[0060] In the present invention, the time from receiving a request to generating a response by the backend in 95% of cases does not exceed the response time of the slowest of the enabled gateways plus 3 seconds (overhead). Back-end (English back-end) - software and hardware part of the invention. The total time for the formation of the first sentence, which can be displayed to the user in 95% of cases, does not exceed one and a half seconds (in this case, it is full, not additional, but here it is practically the same, since the gateway responses are cached).

[0061] При увеличении ассортимента, приходящего из какого-либо из шлюзов систем бронирования, либо добавлении нового шлюза, либо увеличении и усложнении комбинированных предложений, надбавочное время остается в пределах 3 секунд, либо возвращается в эти пределы путем горизонтального масштабирования вычислительных мощностей, что позволяет достичь технического результата данного изобретения, повышения скорости получения пользователем поисковых предложений. Надбавочное время представляет собой полное время получения предложения пользователем минус время на обращение и ожидание ответа от шлюза системы бронирования.. Смысл этого требования в том, чтобы в большинстве случаев при увеличении объема проходящих через поисковую систему данных, можно было сохранять надбавочное время в пределах, например, 3 секунд не путем модифицирования алгоритмов, переписывания программного кода системы, а путем выделения большего объема ресурсов (ОЗУ, процессорное время) и/или создания большего количества копий компонентов поисковой системы.[0061] With an increase in the assortment coming from any of the gateways of the reservation systems, or adding a new gateway, or increasing and complicating the combined offers, the overhead time remains within 3 seconds, or returns to these limits by horizontal scaling of computing power, which allows to achieve the technical result of this invention, to increase the speed of obtaining search proposals by the user. The overhead time is the total time the user received the offer minus the time spent on contacting and waiting for a response from the reservation system gateway. The meaning of this requirement is that in most cases, when the volume of data passing through the search engine increases, it would be possible to keep the overhead time within, for example , 3 seconds not by modifying algorithms, rewriting the system's program code, but by allocating more resources (RAM, CPU time) and / or creating more copies of the search engine components.

[0062] В некоторых вариантах реализации осуществляют поиск по кэшу вместо поиска по шлюзу. Заранее если получают какое-либо предложение из шлюза, то сохраняют его в кэш, например, на полчаса (время настраивается отдельно для каждого шлюза). Соответственно, если в течение получаса кто-то из пользователей сделает аналогичный запрос, то в данном решении не обращаются в шлюз, а загружают из кэша сохраненное предложение. Уточнение того, что кэш актуален, будет произведено уже для конкретного предложения, которое пользователь выберет для покупки.[0062] In some implementations, a cache search is performed instead of a gateway search. In advance, if they receive any offer from the gateway, they save it to the cache, for example, for half an hour (the time is set separately for each gateway). Accordingly, if within half an hour one of the users makes a similar request, then in this solution they do not contact the gateway, but download the saved offer from the cache. Clarification that the cache is up-to-date will be made for a specific offer that the user chooses to purchase.

[0063] Дополнительно учтена в архитектуре системы возможность предоставления API другим продуктам, в том числе и сторонним, с учетом кастомизации предоставляемого функционала.[0063] Additionally, the system architecture has taken into account the possibility of providing API to other products, including third-party ones, taking into account the customization of the provided functionality.

[0064] Под обогащенными результатами в данном изобретении подразумеваются данные, относящиеся непосредственно к предложению. Помимо базовой информации, которую сообщает шлюз системы бронирования, это:[0064] By enriched results in this invention is meant data related directly to the proposal. In addition to the basic information reported by the reservation system gateway, these are:

i. тарифные опции,i. tariff options,

ii. информация о промежуточных посадках (в авиационной терминологии отличаются пересадки, когда меняется номер рейса, и промежуточные посадки, когда он не меняется, хотя с точки зрения пользователя они выглядят одинаково - в большинстве случаев ему нужно выйти из самолета. В данном решении промежуточные посадки отображаются как дозаправки, причем иногда это действительно дозаправки самолета);ii. information about intermediate landings (in aviation terminology, transfers differ when the flight number changes, and intermediate landings when it does not change, although from the user's point of view they look the same - in most cases he needs to get off the plane. In this solution, intermediate landings are displayed as refueling, and sometimes it really is an aircraft refueling);

iii. элементы доходности за продажу предложения.iii. elements of the yield per sale of the offer.

iv. иные опцииiv. other options

[0065] С другой стороны, информация зависящая от пользователя, это:[0065] On the other hand, user-specific information is:

- персонифицированная рекомендация того или иного предложения;- a personalized recommendation of a proposal;

- способ сортировки и группировки предложений.- a way to sort and group offers.

[0066] Предварительно приходит запрос из слоя 130 преобразования запросов пользователя (например, запрос от пользователя «Москва-Спб-Москва» на конкретные даты) и попадает в диспетчер 210, как показано на Фиг. 2, который знает, что существует много шлюзов 230 и рассылает по ним поисковый запрос. Запрос приходит от пользовательского фронтенда, который представляет собой запрос по сети с датами, направлениями, конфигурациями пассажиров и сервисными классами. AviaGateway без изменения сути преобразует его в запрос во внутреннем формате (например gRPC), слой 120 формирования поисковой выдачи для конкретного пользователя прокидывает дальше в слой 130 преобразования запросов пользователя. А вот слой 130 преобразования запросов пользователя один пользовательский запрос преобразует в множество запросов слоя 140, который отправляет поисковые запросы в поисковые шлюзы, каждый из которых потом будет передан каждому шлюзу.[0066] Previously, a request comes from the layer 130 of transforming user requests (for example, a request from the user "Moscow-SPb-Moscow" for specific dates) and gets to the dispatcher 210, as shown in FIG. 2, which knows that there are many gateways 230 and sends out a search query to them. The request comes from a custom frontend, which is a network request with dates, destinations, passenger configurations, and service classes. AviaGateway, without changing its essence, converts it into a request in an internal format (for example, gRPC), the layer 120 for generating search results for a specific user passes further into the layer 130 for converting user requests. On the other hand, the user request conversion layer 130 transforms one user request into a plurality of requests from the layer 140, which sends search requests to search gateways, each of which will then be transmitted to each gateway.

[0067] Слой 140 направления поисковых запросов в поисковые шлюзы выполняет конкретные поисковые запросы в модули взаимодействия с конкретными шлюзами 230 (модуль взаимодействия с системой Galileo, модуль взаимодействия с системой Sabre и т.д.), которые расположены на этом слое, как показано на Фиг. 2. В общем случае поисковый запрос это сетевой запрос (запрос на основе HTTP, например, SOAP или RPC или XML запрос). Формат поискового запроса у каждого шлюза 230 свой. Например, IATA развивает протокол NDC, рекомендуемый для взаимодействия с шлюзами 230 систем бронирования. В одном из вариантов реализации протокол NDC используется для взаимодействия со шлюзами 230 бронирования отдельных авиакомпаний. В запросе всегда есть набор направлений и дат, на которые пользователь хочет найти билет, конфигурация пассажиров и сервисный класс. По крайней мере, некоторые шлюзы 230 требуют единую конфигурацию пассажиров и сервисный класс на все перелеты, тогда как поисковый запрос данного изобретения этого ограничения не содержит (однако, запрос к слою 140 направления поисковых запросов в поисковые шлюзы может содержать это ограничение), и если клиент хочет разную конфигурацию пассажиров на разные перелеты, то внутренними преобразованиями его запрос разбивается на несколько запросов к шлюзам 230.[0067] The search gateway search engine layer 140 performs specific searches in the interaction modules with specific gateways 230 (Galileo interaction module, Saber interaction module, etc.) that are located on this layer, as shown in FIG. 2. Generally, a search request is a network request (an HTTP-based request such as SOAP or RPC or XML request). The search query format is different for each gateway 230. For example, IATA is developing the NDC protocol recommended for interfacing with 230 reservation system gateways. In one implementation, the NDC protocol is used to communicate with individual airline reservation gateways 230. The request always contains a set of directions and dates for which the user wants to find a ticket, passenger configuration and service class. At least some gateways 230 require a single passenger configuration and service class for all flights, while the search query of the present invention does not contain this restriction (however, the query to the search gateway search query layer 140 may contain this restriction), and if the client wants a different configuration of passengers for different flights, then by internal transformations his request is split into several requests to gateways 230.

[0068] Кроме того, запрос к шлюзу 230 содержит информацию о пользователе шлюза 230 (данные для аутентификации и авторизации пользователя шлюза), а также рекомендации шлюза 230 по тому, какие предложения выбирать. Например, можно сделать запрос к шлюзу 230 поискать не любые перелеты по маршруту «Москва - Спб», но только без пересадок, или только Аэрофлота. В ряде случаев это позволяет несколькими запросами получить больший ассортимент. Правила указания таких параметров содержатся в базе данных.[0068] In addition, the request to the gateway 230 contains information about the user of the gateway 230 (data for authentication and authorization of the user of the gateway), as well as recommendations of the gateway 230 on which offers to choose. For example, you can make a request to gateway 230 to search not for any flights on the Moscow - St. Petersburg route, but only direct flights, or only Aeroflot. In some cases, this allows you to get a larger assortment with several requests. The rules for specifying such parameters are contained in the database.

[0069] Например, если из шлюзов 230 не приходит информация какой клиенту доступен багаж по предложению, данная информация определяется в модуле 260 определения тарифных правил (англ. SegmentConditions), основанный на базе данных, которая выше упоминалась. Если более развернуто, то у каждого предложения есть ряд свойств: аэропорты вылета и прилета, дата и время вылета и прилета, авиакомпания, выполняющая рейс (чей самолет), авиакомпания, назначающая тариф (не деньги, а именно условия перевозки, закодированные авиакомпанией каким-либо идентификатором - кодом тарифа) и т.д. База данных содержит базовые правила (в основном базовое правило зависит от авиакомпании, назначающей тариф, и кода тарифа), и исключения из этих правил.[0069] For example, if information does not come from the gateways 230 which client the luggage is available for, this information is determined in the SegmentConditions module 260 based on the database mentioned above. In more detail, then each proposal has a number of properties: airports of departure and arrival, date and time of departure and arrival, the airline operating the flight (whose plane), the airline that sets the fare (not money, namely the conditions of carriage, coded by the airline or identifier - tariff code), etc. The database contains basic rules (basically the basic rule depends on the airline that assigns the fare and the fare code) and exceptions to these rules.

[0070] Диспетчер 210 слоя 140 направления поисковых запросов в поисковые шлюзы копирует полученные запросы по представителям шлюза 230 (англ. GateRepresent на Фиг. 2) как показано на Фиг. 2. На каждый модуль взаимодействия со шлюзом есть свой представитель шлюза 230. Например, на модуль взаимодействия с Sabre есть представитель Sabre. Представителем шлюза 230 является модуль, который знает об особенностях конкретного шлюза 240 и соответственно решает, имеет ли смысл туда посылать запрос. Например, если пользователь хочет найти билеты в какой-нибудь маленький аэропорт, у которого нет IATA-кода, а есть только ГСГА-код, то бесполезно посылать запрос в Sabre - он не умеет работать с ГСГА-кодами. В некоторых вариантах реализации диспетчер 210 занимается созданием выходной очереди. Диспетчер 210 генерирует уникальное имя выходной очереди на основе алгоритмов, предоставляемых средой разработки. Затем он посылает в шину данных 150 (англ. Data Bus) (например, RabbitMQ) команду на создание очереди с таким именем), а затем сообщает представителям шлюза 230, что писать результаты нужно в эту очередь (точнее имя очереди через запросы прокидывается до конвейера обработки данных 710, который уже будет писать в очередь), а также сообщает на слой 130 преобразования запросов пользователя модулю чтения из очереди 330, показанному на Фиг. 3, что читать нужно из этой очереди.[0070] The manager 210 of the search query direction layer 140 copies the received queries to the representatives of the gateway 230 (GateRepresent in FIG. 2) as shown in FIG. 2. Each gateway communication module has its own gateway 230 representative. For example, a Saber communication module has a Saber representative. The representative of the gateway 230 is a module that knows about the peculiarities of a particular gateway 240 and accordingly decides whether it makes sense to send a request there. For example, if a user wants to find tickets to some small airport that does not have an IATA code, but only has a GSGA code, then it is useless to send a request to Saber - he does not know how to work with the GSGA codes. In some implementations, dispatcher 210 is responsible for creating an output queue. The dispatcher 210 generates a unique output queue name based on algorithms provided by the development environment. Then he sends a command to create a queue with this name to the data bus 150 (for example, RabbitMQ), and then informs the representatives of gateway 230 that the results need to be written to this queue (more precisely, the queue name is passed through requests to the pipeline processing data 710, which will already write to the queue), and also informs the user request conversion layer 130 to the reader from the queue 330 shown in FIG. 3 that you need to read from this queue.

[0071] Диспетчер 210 слоя 140 направления поисковых запросов в поисковые шлюзы может создавать очередь в некоторых вариантах реализации в шине данных 150 (например, RabbitMQ) (RabbitMQ - программный брокер сообщений на основе стандарта AMQP- тиражируемое связующее программное обеспечение, ориентированное на обработку сообщений), в которую будет попадать ответ, и сообщает ее имя слою 130 преобразования запросов пользователя. Также диспетчер 210 может использовать, например, брокер сообщений Nats, не ограничиваясь. Модуль представителя шлюза 230 решает, будет ли шлюз 240 выполнять запрос и сколько всего необходимо запросов (поисковые схемы), сообщает наверх диспетчеру 210 сколько поисков запущено. Диспетчер 210 в свою очередь суммирует эти числа, получает таким образом общее число ожидаемых ответов и сообщает их через модуль направления поисковых ответов 250 наверх модулю чтения из очереди 330 слоя 130 преобразования запросов пользователя. Выше приведен пример с ГСГА-кодами, где модуль 230 решает посылать в шлюз 240 запрос или нет. Это либо технические особенности работы шлюза 240, либо в техническом решении решается, что те или иные запросы посылать в конкретный шлюз 240 не имеет смысла (ассортимент скудный, предложения дороже и т.д.) и описываются эти правила во внутренней базе данных. Модуль взаимодействия со шлюзом формируют запрос к API соответствующего шлюза 240 и отправляют его, после чего получают ответ и преобразуют его в формат GateOffer, причем в некоторых вариантах проверяет наличие ответа в кэше.[0071] The manager 210 of the search routing layer 140 may create a queue in some implementations on the data bus 150 (eg, RabbitMQ) (RabbitMQ is an AMQP-based message broker, a replicable message-centric middleware) , into which the response will fall, and gives its name to the layer 130 of the transformation of user requests. Also, the dispatcher 210 may use, for example, but not limited to the Nats message broker. The proxy module of the gateway 230 decides whether the gateway 240 will execute the request and how many requests (search patterns) are needed, reports up to the dispatcher 210 how many searches have been started. The dispatcher 210, in turn, sums these numbers, thus obtaining the total number of expected responses and communicating them through the search response module 250 upward to the reader from the queue 330 of the user query conversion layer 130. Above is an example with GSGA codes, where module 230 decides to send a request to gateway 240 or not. These are either technical features of the operation of the gateway 240, or in the technical solution it is decided that it makes no sense to send certain requests to a specific gateway 240 (the assortment is scarce, offers are more expensive, etc.) and these rules are described in the internal database. The module of interaction with the gateway forms a request to the API of the corresponding gateway 240 and sends it, after which a response is received and converted into the GateOffer format, and in some cases checks for the presence of a response in the cache.

[0072] Во всей архитектуре изобретения во всех модулях осуществляется поточная обработка данных. Каждое предложение обрабатывается как только появились все данные, необходимые для этой обработки. Как показано выше на примере из описания стратегии поиска через хабы: чтобы получить предложение по маршруту «Чебоксары - Майами», необходимо хотя бы по одному предложению по каждому из маршрутов «Чебоксары - Москва» и «Москва - Майами». В данном случае гарантируется обработка зависимых друг от друга данных одним и тем же процессом. Гарантия достигается за счет того, что после трансформации пользовательского запроса в набор групп запросов к слою 140 направления поисковых запросов в поисковые шлюзы существует диспетчер 210, который назначает задание на комбинацию предложений из конкретной группы конкретному экземпляру модуля объединителя 310, как показано на Фиг. 3. Зависимыми данными являются предложения по каждой из частей перелета, необходимые для составления скомбинированного предложения.[0072] Throughout the architecture of the invention, all modules are streaming data. Each offer is processed as soon as all the data necessary for this processing has appeared. As shown above using the example from the description of the search strategy through the hubs: to get an offer on the Cheboksary - Miami route, you need at least one offer for each of the Cheboksary - Moscow and Moscow - Miami routes. In this case, the processing of data dependent on each other is guaranteed by the same process. The assurance is achieved by the fact that after the transformation of the user query into a set of query groups for the search query to search gateways layer 140, there is a dispatcher 210 that assigns a task for a combination of sentences from a specific group to a specific instance of combiner module 310, as shown in FIG. 3. Dependent data are proposals for each of the parts of the flight, necessary for the preparation of a combined proposal.

[0073] Также модуль чтения из очереди 330 определяет состояние обработки и принимает решения о прекращении обработки посредством опроса состояний (каждый сервис, который ожидает каких-то данных не знает о состоянии нижележащих процессов, но может принять решение о завершении ожидания с помощью описанных далее методов), заранее оговоренного количества сообщений (например, от 0 до 15, не ограничиваясь), заранее оговоренного времени приема сообщений, терминирующих сообщений. Каждый модуль работает с одним конкретным способом, конкретно модуль чтения из очереди 330 знает ожидаемое количество сообщений. Терминирующее сообщение представляет собой сообщение, которое содержит не данные, а информацию о том, что больше данных не будет, например, строку «finish». Может возникнуть проблема, что терминирующее сообщение придет в принимающий модуль не последним, несмотря на то, что было отправлено последним. Это решается указанием в терминирующем сообщении количества сообщений с данными, например, сообщение finish:45 означает, что нужно обработать 45 сообщений с данными.[0073] Also, the reader from the queue 330 determines the state of processing and decides to stop processing by polling the states (each service that is waiting for some data does not know about the state of the underlying processes, but can decide to end the wait using the methods described below ), a predetermined number of messages (for example, from 0 to 15, not limited), a predetermined time for receiving messages, terminating messages. Each module operates in one particular way, specifically the reader from queue 330 knows the expected number of messages. A termination message is a message that does not contain data, but information that there will be no more data, for example, the line "finish". There may be a problem that the termination message will not arrive at the receiving module last, despite the fact that it was sent last. This is solved by specifying the number of data messages in the termination message, for example, the message finish: 45 means that 45 data messages need to be processed.

[0074] При поточной обработке данных, как показано на Фиг. 3, модуль скоринга 740 (показан на Фиг. 6 и 7) одинаковых с точки зрения пользователя предложений слоя 120 формирования поисковой выдачи для конкретного пользователя осуществляет скоринг предложений и принимает решения о целесообразности дальнейшей обработки в различных вариантах реализации:[0074] When streaming data as shown in FIG. 3, the scoring module 740 (shown in Figs. 6 and 7), from the user's point of view, offers of the layer 120 of generating search results for a particular user scores the offers and makes decisions about the expediency of further processing in various implementations:

• на уровне создания предложений;• at the level of creating proposals;

• на уровне обработки предложений.• at the level of processing proposals.

[0075] Целью скоринга является выбор из набора одинаковых с точки зрения пользователя предложений для показа.[0075] The goal of scoring is to select from a set of offers that are identical from the user's point of view for display.

[0076] Диспетчер 340 слоя 130 преобразования запросов пользователя оптимизирует количество запросов к слою 140 направления поисковых запросов в поисковые шлюзы, после чего создает мультиплексер 320 (англ. Multiplexer) результатов, запускает механизм транспортировки запросов и данных между слоями, а именно передает запрос модулю транспортировки запросов и данных 350 между слоем 140 направления поисковых запросов в поисковые шлюзы и слоем 130 преобразования запросов пользователя, создает входную очередь в шине данных 150 (например, RabbitMQ). Данный механизм нужен для того, чтобы была возможность физически разделить инсталляции шины данных 150 (например, RabbitMQ) в соответствии со слоями. Мультиплексер 320 представляет собой способ организации транспорта данных, ставящий своей целью получение копий одного и того же набора данных несколькими получателями.[0076] The manager 340 of the user query conversion layer 130 optimizes the number of queries to the search query direction layer 140 to the search gateways, and then creates a multiplexer 320 (Multiplexer) of the results, starts the mechanism for transporting queries and data between the layers, namely, transfers the request to the transport module queries and data 350 between the search query routing layer 140 and the user query conversion layer 130, creates an input queue on the data bus 150 (eg, RabbitMQ). This mechanism is needed in order to be able to physically separate data bus 150 installations (for example, RabbitMQ) according to layers. Multiplexer 320 is a data transport method with the goal of obtaining copies of the same data set by multiple recipients.

[0077] Модуль транспортировки запросов и данных 350 передает запрос на слой 140 направления поисковых запросов в поисковые шлюзы, получает имя выходной очереди (представляет собой уникальную строку. Выше описано как диспетчер 210 слоя 140 направления поисковых запросов в поисковые шлюзы создает ее и передает), слушает ее и перекладывает ответы в мультиплексер 320, а также выполняет роль контрольного таймера (англ. watchdog). Контрольный таймер фиксирует заранее оговоренное время приема сообщений (например, 15 секунд). По истечении времени ожидание завершается.[0077] The query and data transport module 350 transmits a request to the search query layer 140 to search gates, obtains the name of the output queue (is a unique string. Described above is how the manager 210 of the search gateway layer 140 creates and transmits it), listens to it and transfers the responses to the multiplexer 320, and also acts as a watchdog timer. The watchdog timer fixes a predetermined time for receiving messages (for example, 15 seconds). When the time expires, the wait ends.

[0078] Мультиплексер 320 дублирует каждое предложение в каждый модуль объединения 310, указанный при создании мультиплексера 320.[0078] Multiplexer 320 duplicates each sentence to each combiner 310 specified when multiplexer 320 was created.

[0079] Модуль объединения 310 аккумулирует результаты по всем отдельным поискам, входящим в группу, при этом еще и исполняет функцию контрольного таймера. Группа представляет собой набор поисковых запросов к слою 140 направления поисковых запросов в поисковые шлюзы, в который был преобразован пользовательский запрос. Как только в каждом отдельном поиске из группы есть хотя бы одно предложение, данный модуль 310 формирует SmartOffer и SmartVariant. Также данный компонент ведет статистику сформированных SmartOffer'ов и принимает решение о передачи каждого из них на уровень AviaUserSearch, отправляет SmartOffer'ы в шину данных 150, как показано на Фиг. 5. Данное решение принимается для того, чтобы не передавать слишком много информации, а это в свою очередь, чтобы не усложнять выбор пользователя и убрать лишнюю нагрузку на вычислительные и транспортные мощности. Например, существует поиск «туда-обратно». Туда 100 предложений, обратно 100. Если комбинировать и отдавать пользователю все со всем, получится 10000, что повышает сильно вычислительную нагрузку.[0079] The merging module 310 accumulates the results for all individual searches included in the group, while also performing the function of a watchdog timer. A group is a collection of search queries against the search gateway search query layer 140 into which the user query has been transformed. As soon as there is at least one offer in each individual search from the group, this module 310 generates a SmartOffer and a SmartVariant. Also, this component maintains statistics of the generated SmartOffers and decides to transfer each of them to the AviaUserSearch level, sends SmartOffers to the data bus 150, as shown in FIG. 5. This decision is made in order not to transmit too much information, and this, in turn, so as not to complicate the user's choice and remove unnecessary load on computing and transport capacities. For example, there is a round trip search. There are 100 sentences, back 100. If you combine and give the user everything with everything, you get 10,000, which increases the computational load.

[0080] Объединенное Предложение (или SmartOffer) - объединенный набор поисковых предложений из разных ответов, полученных на запросы к слою 140 направления поисковых запросов в поисковые шлюзы, и соответствующий набор объединенных вариантов. Например, если мы искали RT (англ. RoundTrip - поиск туда-обратно), то это может быть атомарный ответ, либо же объединение двух OW. (англ. Oneway - поиск в одну сторону).[0080] Combined Offer (or SmartOffer) - a combined set of search suggestions from different responses received for queries to the layer 140 of sending search queries to search gateways, and the corresponding set of combined options. For example, if we were looking for RT (RoundTrip - search back and forth), then it could be an atomic answer, or a union of two OWs. (English Oneway - one way search).

[0081] Объединенный Вариант (или SmartVariant) - комбинация различных поисковых вариантов (OfferVariant) из разных поисковых предложений (SearchOffer) в рамках одного объединенного предложения.[0081] Combined Option (or SmartVariant) is a combination of different search options (OfferVariant) from different search offers (SearchOffer) within one combined offer.

[0082] Поисковое предложение (или SearchOffer) представляет из себя конкретную комбинацию рейсов по поисковому запросу (например полученная по атомарному поиску Москва - СПб - Москва на 01.01.2020 в СПб и 07.01.2020 обратно комбинация рейсов SU025 и SU026 в соответствующие даты) и набор вариантов тарифов, по которым может быть оформлена эта комбинация. Каждый такой вариант называется поисковым вариантом (или Search Variant). Поисковый вариант состоит из указания кода тарифа для каждого рейса в поисковом предложении, информацию о доступных тарифных опциях (багаж, возможность обмена и возврата, но не ограничиваясь ими), а также доступные варианты оформления (из какой системы бронирования получен вариант и каким юридическим лицом может быть оформлен) и соответствующие вариантам оформления тарифы и таксы[0082] A search proposal (or SearchOffer) is a specific combination of flights for a search query (for example, a combination of flights SU025 and SU026 on the corresponding dates obtained by atomic search Moscow - St. Petersburg - Moscow on 01.01.2020 in St. Petersburg and 07.01.2020 back) and a set of tariff options for which this combination can be issued. Each such variant is called a search variant (or Search Variant). The search option consists of specifying the fare code for each flight in the search offer, information on available fare options (baggage, exchange and refund options, but not limited to them), as well as available design options (from which booking system the option was received and which legal entity can be issued) and corresponding to the design options tariffs and taxes

[0083] Предварительно слой 120 формирования поисковой выдачи для конкретного пользователя передает запрос пользователя в неизменном виде на слой 130 преобразования запросов пользователя без преобразований, но при этом создает необходимую транспортную инфраструктуру для обработки результатов. Затем принимает данные (предложения в формате SmartOffer) со слоя 130 преобразования запросов пользователя и производит обработки, зависящие от конкретного пользователя (ценообразование и а/б компании, маркетинговые акции и т.п.).[0083] Previously, the layer 120 generating search results for a specific user transmits the user's request unchanged to the layer 130 for transforming user requests without transformations, but at the same time creates the necessary transport infrastructure for processing the results. Then it receives data (offers in the SmartOffer format) from the layer 130 of transforming user requests and performs processing depending on a particular user (pricing and a / b companies, marketing campaigns, etc.).

[0084] Диспетчер 210 слоя 120 формирования поисковой выдачи для конкретного пользователя запускает конвейер обработки данных 710 на прослушивание конкретной очереди, передает запрос слою 130 преобразования запросов пользователя, получает имена очередей, в которые поступит ответ, и сообщает их SmartSearchAdapter'y, чтобы тот слушал очереди и перекладывал сообщения в шину данных 150 (RabbitMQ) слоя 120 формирования поисковой выдачи для конкретного пользователя.[0084] The manager 210 of the layer 120 generation of search results for a specific user starts the processing pipeline 710 to listen to a specific queue, passes the request to the layer 130 of the transformation of user requests, gets the names of the queues to which the response will arrive, and tells them SmartSearchAdapter'y to listen queues and transferred messages to the data bus 150 (RabbitMQ) layer 120 of the formation of search results for a specific user.

[0085] Далее модуль SmartSearchAdapter получает имя выходной очереди, слушает ее, перекладывает в шину данных 150, причем данный модуль служит контрольным таймером (англ. watchdog).[0085] Next, the SmartSearchAdapter module receives the name of the output queue, listens to it, transfers it to the data bus 150, and this module serves as a watchdog timer.

[0086] Конвейер обработки данных 710 передает результаты предложения со слоя 130 преобразования запросов пользователя в модуль вычисления цены 720, как показано на Фиг. 6, который рассчитывает конечную цену предложения, затем рассчитывает скоринг с помощью модуля скоринга 740 одинаковых с точки зрения пользователя предложений и проводит фильтрации, зависящие от конкретного пользователя. Под скорингом в данном техническом решении понимается механизм, позволяющий управлять показом одинаковых с точки зрения пользователя предложений в поточном режиме путем присваивания предложениям некоторого рейтинга. Абсолютное значение рейтинга в данном случае не имеет значения, играют роль лишь их отношения сравнения. Например, если на выдачу ушло предложение за 2000 рублей с рейтингом 1, а затем было получено и обработано аналогичное предложение за 1990 рублей, то ему можно поставить рейтинг 2, чтобы у фронтенда был простой критерий для того, чтобы скрыть предложение за 2000 и вместо него показать предложение за 1990 рублей. Под фильтрацией понимается недопущение на выдачу предложений, недоступных конкретному пользователю. Например, существует акция одной из авиакомпаний, где обязательным условием является то, что пользователь вошел на сайт под своим логином, а незалогиненным предложения по акции не показывались. В некоторых вариантах реализации может быть реализована фильтрация низкоконверсионных предложений на больших выдачах с целью упрощения процесса выбора пользователем подходящего ему предложения. В некоторых вариантах реализации осуществляют валидацию предложений (например, маркетинговые акции) посредством валидатора 730.[0086] The processing pipeline 710 transmits the proposal results from the user request conversion layer 130 to the price calculator 720 as shown in FIG. 6, which calculates the final offer price, then calculates the scoring using the scoring module 740 of the same offers from the point of view of the user and performs filtering, depending on the specific user. Scoring in this technical solution is understood as a mechanism that allows you to manage the display of offers that are identical from the user's point of view in streaming mode by assigning a rating to the offers. The absolute value of the rating in this case does not matter, only their comparison ratios play a role. For example, if an offer for 2000 rubles with a rating of 1 went to issue, and then a similar offer for 1990 rubles was received and processed, then it can be rated 2 so that the frontend has a simple criterion to hide the offer for 2000 and instead show an offer for 1990 rubles. Filtering is understood as preventing the issuance of offers that are inaccessible to a specific user. For example, there is a promotion of one of the airlines, where a prerequisite is that the user entered the site under his username, and the offers for the promotion were not shown to those who were not logged in. In some implementations, filtering of low-conversion offers on large SERPs can be implemented in order to simplify the process of selecting a suitable offer by a user. In some implementations, offers (eg, marketing promotions) are validated by validator 730.

[0087] Модуль скоринга 740 оценивает "одинаковые" предложения, когда совпадает SearchOffer и SearchVariant. Т.е. одинаковыми считаются предложения, у которых одинаковый набор сегментов (например, конкретный рейс) и тарифных опций. Сегменты сравниваются по параметрам перелета, маркетинговому перевозчику и номеру рейса. Оперирующий перевозчик - авиакомпания, которой принадлежит самолет, выполняющий рейс. Маркетинговый перевозчик - авиакомпания, устанавливающая условия перевозки для конкретного пассажира и назначающая номер рейса. Например, если пользователь летит самолетом Аэрофлота, Аэрофлот - оперирующий перевозчик. Условия перевозки ему назначил Аэрофлот, и поставил номер рейса SU292. Для рейса SU292 Аэрофлот - маркетинговый перевозчик. Но на соседнем кресле летит человек, которому условия перевозки назначили Вьетнамские Авиалинии и номер рейса для него VN555. По рейсу VN555 маркетинговый перевозчик - Вьетнамские Авиалинии, хотя оперирующий по прежнему Аэрофлот.[0087] Scoring module 740 evaluates "like" sentences when SearchOffer and SearchVariant match. Those. offers are considered the same if they have the same set of segments (for example, a specific flight) and fare options. Segments are compared by flight parameters, marketing carrier and flight number. Operating Carrier - the airline that owns the aircraft in operation. Marketing carrier - an airline that sets the conditions of carriage for a specific passenger and assigns a flight number. For example, if a user is flying an Aeroflot plane, Aeroflot is the operating carrier. The conditions of carriage were assigned to him by Aeroflot, and given the flight number SU292. For flight SU292 Aeroflot is a marketing carrier. But on the next seat is a man who was assigned the conditions of carriage by Vietnam Airlines and the flight number for him is VN555. On flight VN555, the marketing carrier is Vietnam Airlines, although Aeroflot is still operating.

[0088] При проходе через конвейер обработки данных 710, осуществляется группировка по хэшу, где рассматриваются совокупности предложений, имеющих одинаковый хэш.[0088] As it passes through the processing pipeline 710, grouping by hash is performed, where collections of sentences having the same hash are considered.

[0089] Ниже приведен конкретный пример реализации данного изобретения.[0089] Below is a specific example of implementation of the present invention.

[0090] Пользователь хочет поискать билеты на рейс Москва - Спб - Москва на одного взрослого человека на 01.01.2020 и 07.01.2020 в классе Эконом. Он вводит эти параметры в форме поиска, которая передает их слою 110 преобразования потока данных в пакет данных и форматов данных в формате, где для каждого направления (Москва - СПб и СПб - Москва) продублирована конфигурация пассажиров и выбранный класс обслуживания (один взрослый в классе Эконом)[0090] The user wants to search for tickets for the Moscow - St. Petersburg - Moscow flight for one adult on 01.01.2020 and 07.01.2020 in Economy class. He enters these parameters in the search form, which transfers them to the layer 110 for converting the data stream into a data packet and data formats in a format where for each direction (Moscow - St. Petersburg and St. Petersburg - Moscow) the configuration of passengers and the selected class of service (one adult in the class Economy)

[0091] Слой 110 преобразования потока данных в пакет данных и форматов данных инициирует обмен данными с модулем диспетчер 210 слоя 120 формирования поисковой выдачи для конкретного пользователя по внутреннему протоколу (например gRPC) в режиме получения потока от сервера. То есть клиент (слой 110 преобразования потока данных в пакет данных и форматов данных) посылает серверу (диспетчеру 210) один запрос, а в ответ ожидает последовательно приходящие предложения. Запрос при этом не трансформируется.[0091] The layer 110 for converting the data stream into a data packet and data formats initiates data exchange with the manager module 210 of the layer 120 generating search results for a specific user using an internal protocol (eg gRPC) in the mode of receiving a stream from a server. That is, the client (layer 110 for converting the data stream into a data packet and data formats) sends a single request to the server (dispatcher 210), and waits for successively arriving offers in response. In this case, the request is not transformed.

[0092] Модуль Диспетчер 210 слоя 120 формирования поисковой выдачи для конкретного пользователя создает одну очередь в RabbitMQ, в которую будут поступать готовые к показу предложения. Затем он создает одну очередь, которая будет использоваться для транспортировки данных, полученных со слоя 130 преобразования запросов пользователя, в конвейер обработки 710 слоя 120 формирования поисковой выдачи для конкретного пользователя. Затем диспетчер 210 отсылает пользовательский запрос в неизменном виде модулю преобразователя слоя 130 преобразования запросов пользователя и получает от него имя очереди, в которую слой 130 преобразования запросов пользователя будет передавать результаты своей работы. После чего диспетчер отправляет полученное имя очереди модулю взаимодействия со слоем 130 преобразования запросов пользователя, который ожидает поступления объединенных предложений в эту очередь и служит контрольным таймером (см. Фиг. 6)[0092] The Manager 210 module of the layer 120 generating search results for a specific user creates one queue in RabbitMQ, which will receive offers ready for display. It then creates one queue that will be used to transport the data received from the user query conversion layer 130 to the processing pipeline 710 of the user-specific search engine layer 120. The dispatcher 210 then sends the user request unchanged to the transformer module of the user request transformation layer 130 and receives from it the name of the queue to which the user request transformation layer 130 will transmit its work. Then the dispatcher sends the received queue name to the module for interaction with the layer 130 of the transformation of user requests, which waits for the receipt of combined offers in this queue and serves as a watchdog timer (see Fig. 6)

[0093] Модуль преобразования запросов из полученного запроса формирует две группы запросов. Первая содержит два отдельных поисковых запроса (Москва - Спб и Спб - Москва), вторая содержит объединенный атомарный запрос (Москва - Спб - Москва). Эти группы передаются диспетчеру 340 слоя 130 преобразования запросов пользователя, который создает три мультиплексера 320 по числу уникальных поисков в созданных группах, запускает два модуля объединения предложений 310 по числу групп, устанавливает соответствие уникальных поисков, мультиплексеров 320 и модулей объединения 310 путем создания очередей в RabbitMQ. Затем диспетчер 340 передает каждый уникальный поиск в виде запроса модулю взаимодействия со слоем 140 направления поисковых запросов в поисковые шлюзы. Дальнейшая обработка каждого из уникальных поисков происходит параллельно (см. Фиг. 3)[0093] The module for converting requests from the received request forms two groups of requests. The first contains two separate search queries (Moscow - St. Petersburg and St. Petersburg - Moscow), the second contains a combined atomic query (Moscow - St. Petersburg - Moscow). These groups are passed to the manager 340 of the user request transformation layer 130, which creates three mux 320 according to the number of unique searches in the created groups, starts two blocks of offer combining 310 according to the number of groups, maps unique searches, multiplexers 320 and combiners 310 by creating queues in RabbitMQ ... The dispatcher 340 then submits each unique search as a query to the search engine query layer 140 interaction module to the search gateways. Further processing of each of the unique searches occurs in parallel (see Fig. 3)

[0094] Модуль взаимодействия со слоем 140 направления поисковых запросов в поисковые шлюзы передает полученные запросы на слой 140 направления поисковых запросов в поисковые шлюзы, получает от него имя очереди, из который можно будет получить поисковые предложения, и ожидаемое количество сообщений и запускает процесс ожидания сообщений. При этом данный модуль служит контрольным таймером, (см. Фиг. 3)[0094] The module for interacting with the layer 140 for directing search queries to search gateways transfers the received requests to the layer 140 of directing search queries to the search gateways, receives from it the name of the queue from which search suggestions can be obtained and the expected number of messages, and starts the message waiting process ... In this case, this module serves as a watchdog timer, (see Fig. 3)

[0095] Диспетчер 210 слоя 140 направления поисковых запросов в поисковые шлюзы создает выходную очередь в RabbitMQ, затем сообщает параметры запроса заранее известному набору представителей шлюзов 230. Каждый из них определяет, сколько поисковых запросов будет запущено соответствующим модулем взаимодействия со шлюзом, сообщает это число диспетчеру 210 и передает поисковый запрос соответствующему модулю взаимодействия со шлюзом 240. Диспетчер 210, получив и просуммировав ответы от всех представителей 230, сообщает имя выходной очереди и общее ожидаемое количество сообщений модулю взаимодействия со слоем 140 направления поисковых запросов в поисковые шлюзы слоя 130 преобразования запросов пользователя, (см. Фиг. 2)[0095] The manager 210 of the layer 140 sending searches to search gates creates an output queue in RabbitMQ, then communicates the request parameters to a predetermined set of gateway representatives 230. Each of them determines how many searches will be launched by the corresponding module of interaction with the gateway, reports this number to the dispatcher 210 and sends the search query to the appropriate module for interacting with the gateway 240. The dispatcher 210, having received and summarized the responses from all representatives 230, reports the name of the output queue and the total expected number of messages to the module for interacting with the layer 140 of sending search queries to the search gates of the layer 130 of transforming user requests. (see Fig. 2)

[0096] Каждый из модулей взаимодействия со шлюзом, получивший поисковый запрос, независимо и параллельно преобразует его в формат шлюза, выполняет его, получает ответ, преобразует его в формат поискового предложения SearchOffer и передает полученные поисковые предложения посредством RabbitMQ модулю обогащения поисковых предложений данными, (см. Фиг. 2)[0096] Each of the modules for interaction with the gateway, which received a search request, independently and in parallel converts it to the gateway format, executes it, receives a response, converts it into the format of the SearchOffer search proposal and transfers the received search proposals through RabbitMQ to the module for enriching search proposals with data, ( see Fig. 2)

[0097] Модуль обогащения поисковых предложений 270 данными посредством обращения к соответствующим базам данных добавляет в предложения информацию о доступном к провозу багаже, возможности обмена или возврата, промежуточных посадках, элементах доходности и т.д. Сообщение, состоящее из обогащенных таким образом предложений, полученных в результате одного поискового запроса к одному шлюзу 240 системы бронирования, посредством RabbitMQ передается на слой 130 преобразования запросов пользователя. Предложения, полученные из разных шлюзов 240 по разным поисковым запросам, модулем обогащения обрабатываются независимо и параллельно (см. Фиг. 2)[0097] The module for enriching search suggestions 270 with data by referring to the appropriate databases adds information about the available baggage, the possibility of exchange or refund, stopovers, elements of profitability, etc. to the proposals. A message consisting of the thus enriched offers obtained as a result of one search request to one gateway 240 of the reservation system is transmitted via RabbitMQ to the layer 130 of the transformation of user requests. Bids received from different gateways 240 for different search queries are processed by the enrichment module independently and in parallel (see Fig. 2)

[0098] Модуль взаимодействия со слоем 140 направления поисковых запросов в поисковые шлюзы получает сообщения, содержащие поисковые предложения и посредством RabbitMQ передает их соответствующему мультиплексеру 320. Мультиплексер 320 копирует сообщение для каждого из соответствующих модулей объединения 310 (см. Фиг. 5)[0098] The module for interacting with the layer 140 for sending search queries to the search gateways receives messages containing search suggestions and, through RabbitMQ, transmits them to the corresponding multiplexer 320. The multiplexer 320 copies the message for each of the respective merging modules 310 (see Fig. 5)

[0099] Модуль объединения 310, получив хотя бы по одному поисковому предложению по каждому из поисковых запросов, входящих в группу (например, в случае поиска предложений "туда-обратно" раздельными запросами - хотя бы по одному поисковому предложению для каждого из двух поисков "в одну сторону"), начинает их комбинацию в объединенные предложения (SmartOffer) и объединенные варианты (SmartVariant). Каждое полученное объединенное предложение посредством RabbitMQ независимо и параллельно отправляется на слой 120 формирования поисковой выдачи для конкретного пользователя (см. Фиг. 5)[0099] The merging module 310, having received at least one search suggestion for each of the search queries included in the group (for example, in the case of search for proposals "back and forth" by separate queries - at least one search suggestion for each of the two searches " one way "), starts combining them into combined offers (SmartOffer) and combined options (SmartVariant). Each received combined offer via RabbitMQ is independently and in parallel sent to the layer 120 of the formation of search results for a specific user (see Fig. 5)

[00100] Модуль взаимодействия со слоем 130 преобразования запросов пользователя слоя 120 формирования поисковой выдачи для конкретного пользователя получает объединенные предложения и посредством RabbitMQ передает их конвейеру обработки предложений 710 слоя 120 формирования поисковой выдачи для конкретного пользователя (см. Фиг. 7)[00100] The module for interacting with the layer 130 of converting user requests of the layer 120 of generating search results for a specific user receives the combined offers and through RabbitMQ transfers them to the pipeline for processing proposals 710 of the layer 120 of generating search results for a specific user (see Fig. 7)

[00101] Конвейер обработки предложений 710 фильтрует предложения, недоступные для конкретного пользователя, определяет цену предложения для каждого предложения и вычисляет для каждого предложения скоринг. В результате формируется предложение, готовое к показу пользователю, которое передается на слой 110 преобразования потока данных в пакет данных и форматов данных (см. Фиг. 7)[00101] Bid processing pipeline 710 filters bids that are not available to a particular user, determines the bid price for each bid, and calculates a score for each bid. As a result, an offer is generated ready to be shown to the user, which is transmitted to the layer 110 for converting the data stream into a data packet and data formats (see Fig. 7)

[00102] В некоторых вариантах реализации на слое 110 преобразования потока данных в пакет данных и форматов данных производится преобразование потока данных в пакет, после чего данные предоставляют фронтенду для показа пользователю.[00102] In some implementations, the data stream to packet conversion layer 110 and data formats convert the data stream to a packet, after which the data is presented to the front-end for display to the user.

[00103] Ссылаясь на Фиг. 4, данное изобретение может быть реализовано в виде вычислительной системы 400 осуществления умного поиска авиабилетов, которая содержит один или более из следующих компонентов:[00103] Referring to FIG. 4, the present invention may be embodied in a smart flight search computer system 400 that includes one or more of the following components:

• компонент 401 обработки, содержащий по меньшей мере один процессор 402,• a processing component 401 comprising at least one processor 402,

• память 403,memory 403,

• компонент 405 мультимедиа,component 405 multimedia,

• компонент 406 аудио,component 406 audio,

• интерфейс 407 ввода / вывода (I / О),interface 407 input / output (I / O),

• сенсорный компонент 408,sensor component 408,

• компонент 409 передачи данных.component 409 data transmission.

[00104] Компонент 401 обработки в основном управляет всеми операциями системы 400, например, осуществляет обработку данных о пользователе или его запросе на поиск авиабилетов, а также управляет дисплеем, телефонным звонком, передачей данных, работой камеры и операцией записи мобильного устройства связи. Компонент 401 обработки может включать в себя один или более процессоров 402, реализующих инструкции для завершения всех или части шагов из указанных выше способов. Кроме того, компонент 401 обработки может включать в себя один или более модулей для удобного процесса взаимодействия между другими модулями 401 обработки и другими модулями. Например, компонент 401 обработки может включать в себя мультимедийный модуль для удобного облегченного взаимодействия между компонентом 405 мультимедиа и компонентом 401 обработки.[00104] The processing component 401 generally controls all of the operations of the system 400, such as processing data about the user or his flight search request, and also controls the display, phone call, data transfer, camera operation, and recording operation of the mobile communication device. The processing component 401 may include one or more processors 402 that implement instructions to complete all or part of the steps from the above methods. In addition, the processing component 401 may include one or more modules for convenient communication between other processing modules 401 and other modules. For example, the processing component 401 may include a media module for convenient, lightweight interaction between the media component 405 and the processing component 401.

[00105] Память 403 выполнена с возможностью хранения различных типов данных для поддержки работы системы 400, например, базу данных с профилями пользователей. Примеры таких данных включают в себя инструкции из любого приложения или способа, контактные данные, данные адресной книги, сообщения, изображения, видео, и т.д., и все они работают на системе 400. Память 403 может быть реализована в виде любого типа энергозависимого запоминающего устройства, энергонезависимого запоминающего устройства или их комбинации, например, статического оперативного запоминающего устройства (СОЗУ), Электрически-Стираемого Программируемого постоянного запоминающего устройства (ЭСППЗУ), Стираемого Программируемого постоянного запоминающего устройства (СППЗУ), Программируемого постоянного запоминающего устройства (ППЗУ), постоянного запоминающего устройства (ПЗУ), магнитной памяти, флэш-памяти, магнитного диска или оптического диска и другого, не ограничиваясь.[00105] Memory 403 is configured to store various types of data to support the operation of system 400, such as a user profile database. Examples of such data include instructions from any application or method, contact information, address book data, messages, images, videos, etc., all of which operate on the system 400. The memory 403 can be implemented as any type of volatile storage device, nonvolatile memory, or a combination thereof, such as static random access memory (SRAM), Electrically Erasable Programmable Read Only Memory (EEPROM), Erasable Programmable Read Only Memory (EPROM), Programmable Read Only Memory (EPROM), Read Only Memory device (ROM), magnetic memory, flash memory, magnetic disk or optical disk and others, but not limited to.

[00106] Компонент 405 мультимедиа включает в себя экран, обеспечивающий выходной интерфейс между системой 400, которая может быть установлена на мобильном устройстве связи пользователя и пользователем. В некоторых вариантах реализации, экран может быть жидкокристаллическим дисплеем (ЖКД) или сенсорной панелью (СП). Если экран включает в себя сенсорную панель, экран может быть реализован в виде сенсорного экрана для приема входного сигнала от пользователя. Сенсорная панель включает один или более сенсорных датчиков в смысле жестов, прикосновения и скольжения по сенсорной панели. Сенсорный датчик может не только чувствовать границу прикосновения субъекта или жест перелистывания, но и определять длительность времени и давления, связанных с режимом работы на прикосновение и скольжение. В некоторых вариантах осуществления компонент 405 мультимедиа включает одну фронтальную камеру и/или одну заднюю камеру. Когда система 400 находится в режиме работы, например, режиме съемки или режиме видео, фронтальная камера и/или задняя камера могут получать данные мультимедиа извне. Каждая фронтальная камера и задняя камера может быть одной фиксированной оптической системой объектива или может иметь фокусное расстояние или оптический зум.[00106] The multimedia component 405 includes a screen that provides an output interface between a system 400 that may be installed on a user's mobile communications device and a user. In some implementations, the screen may be a liquid crystal display (LCD) or a touch panel (TP). If the screen includes a touch panel, the screen may be implemented as a touch screen for receiving input from a user. The touchpad includes one or more touch sensors in terms of gestures, touching, and sliding across the touchpad. The touch sensor can not only sense the subject's touch boundary or swipe gesture, but also detect the length of time and pressure associated with touch and slide behavior. In some embodiments, the multimedia component 405 includes one front camera and / or one rear camera. When the system 400 is in an operating mode, such as shooting mode or video mode, the front camera and / or the rear camera can receive media data from the outside. Each front camera and rear camera can be one fixed lens optical system, or can have focal length or optical zoom.

[00107] Компонент 406 аудио выполнен с возможностью выходного и/или входного аудио сигнала. Например, компонент 406 аудио включает один микрофон (MIC), который выполнен с возможностью получать внешний аудио сигнал, когда система 400 находится в режиме работы, например, режиме вызова, режима записи и режима распознавания речи. Полученный аудио сигнал может быть далее сохранен в памяти 403 или направлен по компоненту 409 передачи данных. В некоторых вариантах осуществления компонент 406 аудио также включает в себя один динамик выполненный с возможностью вывода аудио сигнала.[00107] The audio component 406 is configured to output and / or input an audio signal. For example, the audio component 406 includes a single microphone (MIC) that is configured to receive an external audio signal when the system 400 is in a mode of operation such as a call mode, a recording mode, and a speech recognition mode. The resulting audio signal can be further stored in memory 403 or routed to data transfer component 409. In some embodiments, the audio component 406 also includes one speaker configured to output an audio signal.

[00108] Интерфейс 407 ввода / вывода (I / О) обеспечивает интерфейс между компонентом 401 обработки и любым периферийным интерфейсным модулем. Вышеуказанным периферийным интерфейсным модулем может быть клавиатура, руль, кнопка, и т.д. Эти кнопки могут включать, но не ограничиваясь, кнопку запуска, кнопку регулировки громкости, начальную кнопку и кнопку блокировки.[00108] An input / output (I / O) interface 407 provides an interface between the processing component 401 and any peripheral interface module. The above peripheral interface module can be keyboard, steering wheel, button, etc. These buttons may include, but are not limited to, a start button, a volume button, a start button, and a lock button.

[00109] Сенсорный компонент 408 содержит один или более сенсоров и выполнен с возможностью обеспечения различных аспектов оценки состояния системы 400. Например, сенсорный компонент 408 может обнаружить состояния вкл/выкл системы 400, относительное расположение компонентов, например, дисплея и кнопочной панели, одного компонента системы 400, наличие или отсутствие контакта между субъектом и системой 400, а также ориентацию или ускорение/замедление и изменение температуры системы 400. Сенсорный компонент 408 содержит бесконтактный датчик, выполненный с возможностью обнаружения присутствия объекта, находящегося поблизости, когда нет физического контакта. Сенсорный компонент 408 содержит оптический датчик (например, КМОП или ПЗС-датчик изображения) выполненный с возможностью использования в визуализации приложения. В некоторых вариантах сенсорный компонент 408 содержит датчик ускорения, датчик гироскопа, магнитный датчик, датчик давления или датчик температуры.[00109] The sensor component 408 contains one or more sensors and is configured to provide various aspects of assessing the state of the system 400. For example, the sensor component 408 can detect on / off states of the system 400, the relative position of components, such as a display and a keypad, of a single component. system 400, presence or absence of contact between a subject and system 400, and orientation or acceleration / deceleration and temperature change of system 400. Sensor component 408 includes a proximity sensor configured to detect the presence of an object in the vicinity when there is no physical contact. Touch component 408 includes an optical sensor (eg, CMOS or CCD image sensor) configured for use in rendering an application. In some embodiments, sensor component 408 comprises an acceleration sensor, gyroscope sensor, magnetic sensor, pressure sensor, or temperature sensor.

[00110] Компонент 409 передачи данных выполнен с возможностью облегчения проводной или беспроводной связи между системой 400 и другими устройствами. Система 400 может получить доступ к беспроводной сети на основе стандарта связи, таких как WiFi, 2G, 3G, 5G, или их комбинации. В одном примерном варианте компонент 409 передачи данных получает широковещательный сигнал или трансляцию, связанную с ними информацию из внешней широковещательной системы управления через широковещательный канал. В одном варианте осуществления компонент 409 передачи данных содержит модуль коммуникации ближнего поля (NFC), чтобы облегчить ближнюю связь. Например, модуль NFC может быть основан на технологии радиочастотной идентификации (RFID), технологии ассоциации передачи данных в инфракрасном диапазоне (IrDA), сверхширокополосных (UWB) технологии, Bluetooth (ВТ) технологии и других технологиях.[00110] Communication component 409 is configured to facilitate wired or wireless communication between system 400 and other devices. System 400 can access a wireless network based on a communication standard such as WiFi, 2G, 3G, 5G, or a combination thereof. In one exemplary embodiment, the communication component 409 receives a broadcast signal or broadcast associated information from an external broadcast control system via a broadcast channel. In one embodiment, communication component 409 comprises a Near Field Communication (NFC) module to facilitate near field communication. For example, the NFC module may be based on radio frequency identification (RFID) technology, infrared data association (IrDA) technology, ultra-wideband (UWB) technology, Bluetooth (BT) technology, and other technologies.

[00111] В примерном варианте осуществления система 400 может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа 500 осуществления умного поиска авиабилетов.[00111] In an exemplary embodiment, system 400 may be implemented by one or more Application-Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPs), Programmable Logic Devices (PLDs), a logic chip programmed into operating conditions (FPGA), controller, microcontroller, microprocessor, or other electronic components, and can be configured to implement the method 500 for performing smart search for tickets.

[00112] В примерном варианте осуществления энергонезависимый машиночитаемый носитель содержит память 403, которая включает инструкции, где инструкции выполняются процессором 401 системы 400 для реализации описанных выше способов осуществления умного поиска авиабилетов. Например, энергонезависимым машиночитаемым носителем может быть ПЗУ, оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, дискеты, оптические устройства хранения данных и тому подобное.[00112] In an exemplary embodiment, the non-volatile computer-readable medium comprises memory 403 that includes instructions where instructions are executed by processor 401 of system 400 to implement the above-described smart flight search methods. For example, a nonvolatile computer-readable medium can be ROM, random access memory (RAM), compact disc, magnetic tape, floppy disks, optical storage devices, and the like.

[00113] Вычислительная система 400 может включать в себя интерфейс дисплея, который передает графику, текст и другие данные из коммуникационной инфраструктуры (или из буфера кадра, не показан) для отображения на компоненте 405 мультимедиа. Вычислительная система 400 дополнительно включает в себя устройства ввода или периферийные устройства. Периферийные устройства могут включать в себя одно или несколько устройств для взаимодействия с мобильным устройством связи пользователя, такие как клавиатура, микрофон, носимое устройство, камера, один или более звуковых динамиков и другие датчики. Периферийные устройства могут быть внешними или внутренними по отношению к мобильному устройству связи пользователя. Сенсорный экран может отображать, как правило, графику и текст, а также предоставляет пользовательский интерфейс (например, но не ограничиваясь ими, графический пользовательский интерфейс (GUI)), через который субъект может взаимодействовать с мобильным устройством связи пользователя, например, получать доступ и взаимодействовать с приложениями, запущенными на устройстве.[00113] Computing system 400 may include a display interface that transmits graphics, text, and other data from a communications infrastructure (or from a framebuffer, not shown) for display on a multimedia component 405. Computing system 400 further includes input devices or peripherals. Peripheral devices may include one or more devices for interacting with a user's mobile communications device, such as a keyboard, microphone, wearable device, camera, one or more audio speakers, and other sensors. Peripheral devices can be external or internal to the user's mobile communications device. A touchscreen can display, typically graphics and text, and also provides a user interface (such as, but not limited to, a graphical user interface (GUI)) through which a subject can interact with a user's mobile communication device, such as access and interact with applications running on the device.

[00114] Элементы заявляемого изобретения находятся в функциональной взаимосвязи, а их совместное использование приводит к созданию нового и уникального изобретения. Таким образом, все блоки функционально связаны.[00114] Elements of the claimed invention are in a functional relationship, and their joint use leads to the creation of a new and unique invention. Thus, all blocks are functionally linked.

[00115] Все блоки, используемые в системе, могут быть реализованы с помощью электронных компонент, используемых для создания цифровых интегральных схем, что очевидно для специалиста в данном уровне техники. Не ограничиваюсь, могут использоваться микросхемы, логика работы которых определяется при изготовлении, или программируемые логические интегральные схемы (ПЛИС), логика работы которых задается посредством программирования. Для программирования используются программаторы и отладочные среды, позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС могут быть программируемые логические контроллеры (ПЛК), базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования; ASIC - специализированные заказные большие интегральные схемы (БИС), которые при мелкосерийном и единичном производстве существенно дороже.[00115] All blocks used in the system can be implemented with electronic components used to create digital integrated circuits, which is obvious to a person skilled in the art. Not limited to, microcircuits can be used, the logic of which is determined during manufacture, or programmable logic integrated circuits (FPGA), the logic of which is set through programming. For programming, programmers and debugging environments are used that allow you to set the desired structure of a digital device in the form of a circuit diagram or a program in special hardware description languages: Verilog, VHDL, AHDL, etc. An alternative to FPGAs can be programmable logic controllers (PLCs), basic matrix crystals ( BMK) requiring a factory production process for programming; ASICs are specialized custom large integrated circuits (LSIs), which are significantly more expensive for small-scale and single-piece production.

[00116] Обычно, сама микросхема ПЛИС состоит из следующих компонент:[00116] Typically, the FPGA itself consists of the following components:

• конфигурируемых логических блоков, реализующих требуемую логическую функцию;• configurable logic blocks that implement the required logic function;

• программируемых электронных связей между конфигурируемыми логическими блоками;• programmable electronic links between configurable logic blocks;

• программируемых блоков ввода/вывода, обеспечивающих связь внешнего вывода микросхемы с внутренней логикой.• programmable input / output blocks providing connection of the external output of the microcircuit with the internal logic.

[00117] Также блоки могут быть реализованы с помощью постоянных запоминающих устройств.[00117] Blocks can also be implemented with read-only memory devices.

[00118] Таким образом, реализация всех используемых блоков достигается стандартными средствами, базирующимися на классических принципах реализации основ вычислительной техники.[00118] Thus, the implementation of all the blocks used is achieved by standard means based on the classical principles of implementing the foundations of computing.

[00119] Как будет понятно специалисту в данной области техники, аспекты настоящего изобретения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего изобретения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, аспекты настоящего изобретения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.[00119] As will be understood by one skilled in the art, aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, various aspects of the present invention may be implemented solely as hardware, as software (including application software, and so on), or as an embodiment combining software and hardware aspects, which may generally be referred to as a “module”. "System" or "architecture". In addition, aspects of the present invention may take the form of a computer program product implemented on one or more computer-readable media having computer-readable program code that is implemented thereon.

[00120] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, аппарат, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними.[00120] Any combination of one or more computer readable media can also be used. The computer-readable storage medium can be, without limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or any suitable combination thereof. More specifically, examples (non-exhaustive list) of a computer-readable storage medium include: electrical connection using one or more wires, a portable computer diskette; hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or Flash memory), fiber optic connection, compact disk read-only memory (CD-ROM), optical storage device, magnetic storage device, or any combination of the above. As used herein, a computer-readable storage medium can be any flexible storage medium that can contain or store a program for use by the system itself, device, apparatus, or in connection therewith.

[00121] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.[00121] Program code embedded in a computer-readable medium can be transmitted using any medium, including, without limitation, wireless, wired, fiber optic, infrared, and any other suitable network or combination of the above.

[00122] Компьютерный программный код для выполнения операций для шагов настоящего изобретения может быть написан на любом языке программирования или комбинаций языков программирования, включая объектно-ориентированный язык программирования, например Python, R, Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на компьютере пользователя полностью, частично, или же как отдельный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере, или же полностью на удаленном компьютере. В последнем случае, удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN), глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).[00122] Computer program code for performing operations for the steps of the present invention can be written in any programming language or combinations of programming languages, including an object-oriented programming language such as Python, R, Java, Smalltalk, C ++, and so on, and conventional procedural programming languages such as the "C" programming language or similar programming languages. The program code can be executed on the user's computer in whole, in part, or as a separate software package, partially on the user's computer and partially on the remote computer, or completely on the remote computer. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN), a wide area network (WAN), or a connection to an external computer (for example, via the Internet using Internet providers).

[00123] Аспекты настоящего изобретения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего изобретения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, компьютера специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.[00123] Aspects of the present invention have been described in detail with reference to block diagrams, circuit diagrams, and / or diagrams of methods, devices (systems), and computer program products in accordance with embodiments of the present invention. It will be appreciated that each block from the block diagram and / or diagrams, as well as combinations of blocks from the block diagram and / or diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other data processing device to create a procedure, such that instructions executed by a computer processor or other programmable data processing device create means to implement the functions / actions specified in block or blocks of flowchart and / or diagram.

[00124] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять компьютером, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.[00124] These computer program instructions may also be stored on a computer-readable medium that can control a computer other than a programmable data processing device or other devices that function in a particular way, such that the instructions stored on the computer-readable medium create a device including instructions that perform the functions / actions specified in the block diagram and / or diagram.

Claims (39)

1. Способ для осуществления поиска предложений билетов, выполняемый по меньшей мере одним процессором и включающий следующие шаги:1. A method for searching for ticket offers, performed by at least one processor and comprising the following steps: • получают по меньшей мере один запрос от пользователя на поиск предложений билетов;• receive at least one request from the user to search for ticket offers; • осуществляют преобразование по меньшей мере одного запроса от пользователя, полученного на предыдущем шаге, в набор запросов для шлюзов систем бронирования;• transform at least one request from the user, received in the previous step, into a set of requests for gateways of reservation systems; • распределяют набор запросов для шлюзов, полученных на предыдущем шаге, по модулям взаимодействия со шлюзом посредством диспетчера;• distribute the set of requests for gateways received at the previous step among the modules for interacting with the gateway via the dispatcher; • определяют посредством по меньшей мере одного модуля взаимодействия со шлюзом, будет ли данный шлюз выполнять запрос и сколько необходимо запросов к данному шлюзу;• determine, by means of at least one module of interaction with the gateway, whether this gateway will fulfill the request and how many requests are required to this gateway; • выполняют по меньшей мере один поисковый запрос в шлюзе системы бронирования для тех запросов, которые определили как доступные на предыдущем шаге;• perform at least one search query in the gateway of the reservation system for those queries that were determined to be available in the previous step; • получают данные предложений по билетам по меньшей мере от одной системы бронирования;• receive ticket offer data from at least one booking system; • формируют на основании полученных предложений по меньшей мере один ответ пользователю на запрос, который был от него получен.• form on the basis of the received proposals at least one response to the user request, which was received from him. 2. Способ по п. 1, характеризующийся тем, что при получении запроса от пользователя на поиск предложений билетов преобразовывают его в формат gRPC или REST и JSON.2. A method according to claim 1, characterized in that upon receiving a request from a user to search for ticket offers, it is converted into gRPC or REST and JSON format. 3. Способ по п. 1, характеризующийся тем, что при получении запроса от пользователя, который содержит направление туда и обратно, разделяют его на два поисковых запроса посредством модуля преобразования запроса в рамках одной партнерской схемы результатов.3. The method according to claim. 1, characterized in that when receiving a request from a user, which contains a direction there and back, it is divided into two search queries by means of a query transformation module within one partner results scheme. 4. Способ по п. 3, характеризующийся тем, что для каждого направления цену формируют отдельно.4. The method according to claim 3, characterized in that the price is formed separately for each direction. 5. Способ по п. 1, характеризующийся тем, что полученные запросы от пользователя на поиск предложений билетов объединяют в группы.5. The method according to claim 1, characterized in that the received requests from the user for the search for ticket offers are combined into groups. 6. Способ по п. 1, характеризующийся тем, что полученный запрос от пользователя на поиск предложений билетов преобразовывают посредством стратегии поиска через хабы.6. The method according to claim 1, characterized in that the received request from the user to search for ticket offers is transformed by a search strategy through the hubs. 7. Способ по п. 1, характеризующийся тем, что получают данные предложений по билетам из шлюза системы бронирования и/или кэша.7. The method according to claim 1, characterized in that ticket offer data is received from the gateway of the booking system and / or the cache. 8. Способ по п. 7, характеризующийся тем, что данные предложений билетов получают из кэша после уточнения его актуальности по конкретному предложению.8. The method according to claim 7, characterized in that the ticket offer data is obtained from the cache after its relevance for a specific offer has been clarified. 9. Способ по п. 1, характеризующийся тем, что осуществляют неточный поиск посредством модуля преобразования запроса.9. The method according to claim 1, characterized in that an inexact search is performed by means of a query conversion module. 10. Способ по п. 1, характеризующийся тем, что поисковый запрос в модуль взаимодействия со шлюзом является сетевым запросом SOAP или RPC, или XML.10. A method according to claim 1, characterized in that the search request to the gateway interaction module is a SOAP or RPC or XML network request. 11. Способ по п. 1, характеризующийся тем, что поисковый запрос в модуль взаимодействия со шлюзом имеет разный формат в зависимости от шлюза.11. The method according to claim 1, characterized in that the search request to the module for interacting with the gateway has a different format depending on the gateway. 12. Способ по п. 1, характеризующийся тем, что поисковый запрос в модуль взаимодействия со шлюзом содержит набор направлений и дат, на которые пользователь ищет предложение билета, конфигурацию пассажиров и сервисный класс.12. The method according to claim 1, characterized in that the search request to the gateway interaction module contains a set of directions and dates for which the user is looking for a ticket offer, passenger configuration and service class. 13. Способ по п. 1, характеризующийся тем, что поисковый запрос в модуль взаимодействия со шлюзом содержит информацию о пользователе шлюза для аутентификации и авторизации, а также рекомендации шлюза по тому, какие предложения выбрать.13. The method according to claim 1, characterized in that the search request to the module for interacting with the gateway contains information about the user of the gateway for authentication and authorization, as well as the gateway's recommendations on which offers to choose. 14. Способ по п. 1, характеризующийся тем, что при получении запросов диспетчер14. The method according to claim 1, characterized in that upon receipt of requests, the dispatcher • формирует выходную очередь, которая содержит уникальное имя;• forms an output queue that contains a unique name; • посылает в шину данных команду на создание данной выходной очереди с таким уникальным именем;• sends a command to the data bus to create a given output queue with such a unique name; • сообщает модулям взаимодействия со шлюзом, что направлять данные необходимо из систем бронирования в данную очередь.• informs the modules of interaction with the gateway that it is necessary to send data from the reservation systems to this queue. 15. Способ по п. 14, характеризующийся тем, что шина данных представляет собой программный брокер RabbitMQ или Nats.15. The method according to claim 14, characterized in that the data bus is a RabbitMQ or Nats software broker. 16. Способ по п. 14, характеризующийся тем, что при определении того, будет ли шлюз выполнять запрос и сколько необходимо запросов к нему, используют базу данных с заранее заданными правилами.16. The method according to claim. 14, characterized in that when determining whether the gateway will fulfill the request and how many requests to it are required, a database with predetermined rules is used. 17. Способ по п. 1, характеризующийся тем, что на всех шагах способа используют поточную обработку данных.17. The method according to claim 1, characterized in that streaming data processing is used at all steps of the method. 18. Система для осуществления умного поиска предложений билетов, содержащая:18. A system for smart search for ticket offers, containing: • по меньшей мере один процессор, выполненный с возможностью• at least one processor capable of ο получения по меньшей мере одного запроса от пользователя на поиск предложений билетов;ο receiving at least one request from a user to search for ticket offers; ο преобразования по меньшей мере одного запроса от пользователя, полученного на предыдущем шаге, в набор запросов для шлюзов систем бронирования;ο transforming at least one request from a user received in the previous step into a set of requests for gateways of reservation systems; ο получения предложений по билетам от по меньшей мере одной системы бронирования;ο receiving ticket offers from at least one booking system; ο формирования на основании полученных предложений по меньшей мере одного ответа пользователю на запрос, который был от него получен;ο forming, on the basis of the received proposals, at least one response to the user request that was received from him; • по меньшей мере один диспетчер, выполненный с возможностью распределения набора запросов для шлюзов, полученных процессором, по модулям взаимодействия со шлюзом;• at least one dispatcher, configured to distribute a set of requests for gateways received by the processor among modules for interaction with the gateway; • по меньшей мере один модуль взаимодействия со шлюзом, выполненный с возможностью определения, будет ли данный шлюз выполнять запрос и сколько необходимо запросов к данному шлюзу;• at least one module for interacting with the gateway, configured to determine whether the given gateway will fulfill the request and how many requests to this gateway are required; • по меньшей мере одну систему бронирования, выполненную с возможностью• at least one booking system capable of ο выполнения по меньшей мере одного поискового запроса в шлюзе системы бронирования для тех запросов, которые были определены модулем взаимодействия со шлюзом как доступные;ο executing at least one search query in the gateway of the reservation system for those queries that have been determined by the gateway interaction module as available; ο направления на по меньшей мере один процессор предложений по билетам;ο referrals to at least one ticket processor; ο формирования на основании полученных предложений по меньшей мере одного ответа пользователю на запрос, который был от него получен.ο forming, on the basis of the received proposals, at least one response to the user request that was received from him.
RU2019142437A 2019-12-19 2019-12-19 Method and system for searching for ticket offers RU2738590C1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/RU2019/000977 WO2021125997A1 (en) 2019-12-19 2019-12-19 Method and system for conducting a search for ticket offers
RU2019142437A RU2738590C1 (en) 2019-12-19 2019-12-19 Method and system for searching for ticket offers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2019142437A RU2738590C1 (en) 2019-12-19 2019-12-19 Method and system for searching for ticket offers

Publications (1)

Publication Number Publication Date
RU2738590C1 true RU2738590C1 (en) 2020-12-14

Family

ID=73834979

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2019142437A RU2738590C1 (en) 2019-12-19 2019-12-19 Method and system for searching for ticket offers

Country Status (2)

Country Link
RU (1) RU2738590C1 (en)
WO (1) WO2021125997A1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020016724A1 (en) * 2000-07-28 2002-02-07 Yue-Heng Yang System and method for booking international multiple-stop tickets
US20120066200A1 (en) * 2000-02-22 2012-03-15 Harvey Lunenfeld Metasearch Engine for Ordering Items Returned In Travel Related Search Results Using Multiple Queries on Multiple Unique Hosts
RU117671U1 (en) * 2011-08-11 2012-06-27 Закрытое акционерное общество "Электронный вокзал" VIRTUAL TICKET SALES SYSTEM AND CHECK FOR THEIR VALIDITY
EP3002714A1 (en) * 2014-09-30 2016-04-06 Amadeus S.A.S. Ticketing system with integrated personalized data
US20160253387A1 (en) * 2015-02-25 2016-09-01 FactorChain Inc. Automatic recursive search on derived information
US20190102423A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing an interface for a blockchain cloud service

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120066200A1 (en) * 2000-02-22 2012-03-15 Harvey Lunenfeld Metasearch Engine for Ordering Items Returned In Travel Related Search Results Using Multiple Queries on Multiple Unique Hosts
US20020016724A1 (en) * 2000-07-28 2002-02-07 Yue-Heng Yang System and method for booking international multiple-stop tickets
RU117671U1 (en) * 2011-08-11 2012-06-27 Закрытое акционерное общество "Электронный вокзал" VIRTUAL TICKET SALES SYSTEM AND CHECK FOR THEIR VALIDITY
EP3002714A1 (en) * 2014-09-30 2016-04-06 Amadeus S.A.S. Ticketing system with integrated personalized data
US20160253387A1 (en) * 2015-02-25 2016-09-01 FactorChain Inc. Automatic recursive search on derived information
US20190102423A1 (en) * 2017-09-29 2019-04-04 Oracle International Corporation System and method for providing an interface for a blockchain cloud service

Also Published As

Publication number Publication date
WO2021125997A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
KR102173108B1 (en) Computing system with contextual interaction mechanism and method of operation thereof
US20170293610A1 (en) Voice assistant
US20060265361A1 (en) Intelligent search agent
EP2842085B1 (en) Database system using batch-oriented computation
CN104011504B (en) Method, system and equipment for the navigation based on backlog
US20170011444A1 (en) Intelligent Purchasing Systems and Methods
KR20180032508A (en) Systems and methods for improved data integration in augmented reality architectures
US20150356446A1 (en) Systems and methods for a learning decision system with a graphical search interface
US20210158447A1 (en) Web Browser and Operating System Portal and Search Portal with Price Time Priority Queues
US20190019233A1 (en) Real time recommendation engine
US20200312153A1 (en) Autonomous vehicle fleet management system
US11625444B2 (en) Curated result finder
EP4374307A2 (en) Systems and methods for user interfaces including task delegation controls
CN110235164A (en) For showing the graphic user interface of current and future data
US11798054B2 (en) Optimized product determination system
US11551160B2 (en) Composite asset option pool
RU2738590C1 (en) Method and system for searching for ticket offers
CN112860358A (en) Application management method and terminal
CN112866482B (en) Method and terminal for predicting behavior habits of objects
US11860958B2 (en) Method and device of providing integrated search service
US12020575B2 (en) Autonomous vehicle fleet management system based on application status
KR102230303B1 (en) Server for operating application for providing contents booking and operation method of thereof
US20230409572A1 (en) Reducing latency in query-based search engines
US20210241185A1 (en) Composite Asset Creation
CN110766493B (en) Service object providing method, server, electronic device, and storage medium