CA2925679C - Selecting search results for responding to search query - Google Patents

Selecting search results for responding to search query Download PDF

Info

Publication number
CA2925679C
CA2925679C CA2925679A CA2925679A CA2925679C CA 2925679 C CA2925679 C CA 2925679C CA 2925679 A CA2925679 A CA 2925679A CA 2925679 A CA2925679 A CA 2925679A CA 2925679 C CA2925679 C CA 2925679C
Authority
CA
Canada
Prior art keywords
travel
value
itineraries
profile
travel itineraries
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CA2925679A
Other languages
French (fr)
Other versions
CA2925679A1 (en
Inventor
Laure Canis
Feten Zmerli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
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
Priority claimed from US14/685,681 external-priority patent/US10007957B2/en
Priority claimed from EP15290103.9A external-priority patent/EP3082077A1/en
Application filed by Amadeus SAS filed Critical Amadeus SAS
Publication of CA2925679A1 publication Critical patent/CA2925679A1/en
Application granted granted Critical
Publication of CA2925679C publication Critical patent/CA2925679C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3346Query execution using probabilistic model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • 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
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/14Travel agencies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Probability & Statistics with Applications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Methods, apparatuses, and computer program products for processing search results. Search results are retrieved from a database of travel itineraries based on search criteria provided by a traveler, and a set of recommended travel itineraries selected from the search results based on a probabilistic profile comprising a plurality of value profiles. A set of near-optimal travel itineraries is defined for each of the value profiles. A probability is determined for each travel itinerary of the search results based on a sum of weights of each value profile including the travel itinerary in the corresponding set of near-optimal travel itineraries, and travel itineraries added to the set of recommended travel itineraries based on the probabilities. An online search may be performed to enrich the set of recommended travel itineraries depending on a distance between the probabilistic profile of the traveler and a probabilistic profile used to populate the cache.

Description

SELECTING SEARCH RESULTS FOR RESPONDING TO SEARCH QUERY
BACKGROUND
[0001] The invention generally relates to computers and computer software, and in particular to methods, apparatuses, and computer program products for selecting search results for responding to a search query.
[0002] Reservation systems for travel related services, such as flights, typically include one or more databases that store data relating to the travel services being offered. These databases may include a fare database containing data used in determining a price of a service, and an availability database containing data used to determine if the service is available. Reservation systems may also provide tools that allow end-users, such as travelers and travel agents, to search for and book travel services that satisfy desired trip criteria. To this end, the tools provided may include one or more machine interfaces that enable other systems to access data from the databases. Systems provided access through these machine interfaces may include a Global Distribution System (GDS), as well as systems operated by travel agencies or other sellers of travel services.
[0003] To book a travel service, a traveler may access a travel-related website provided by the seller. As part of the booking process, the traveler may provide search criteria, such as an origin, destination, travel dates, booking class, etc., and launch a search query using the website.
In response to receiving the search query, a search engine provided by one of the aforementioned systems may retrieve data from the databases and generate search results comprising travel itineraries that satisfy the search criteria. The speed and quality of the search results provided by the search engine can be a deciding factor that distinguishes one online seller, such as an online travel agent or agency, from another. Thus, travelers searching online for travel services, such as priced flights, hotels, or car rentals, may prefer one online seller over another based largely on both the quality of search results and the speed with which those results are provided.
[0004] Obtaining new search results each time a search query is received tends to be computationally intensive, and may increase the amount of time it takes to provide the search results to the traveler. Delays can be frustrating to the traveler, especially when the traveler is still in the process of shopping for travel services. To improve the speed with which search results can be determined, the search engine may use cached search results.
Relying on cached search results may reduce the computational load on the reservation system, and improve perceived responsiveness of the search engine. However, conventional systems for using cached search results typically trade off speed verses quality based on how often the cache is updated from the fare and availability databases. Quality of cached search results may be particularly venerable to becoming stale in the travel industry due to rapid changes in availability, prices, and schedules. If either the quality or speed of search results is perceived as inadequate by the traveler, the traveler may seek out another online seller to search for and obtain travel services.
How well a travel-related web site provides search results may thereby contribute to the amount of traffic and the number of purchases per view, or the "conversion rate" for the website.
[0005] Thus, improved methods, apparatuses, and computer program products for selecting cached search results are needed that improve both the speed and quality of search results provided in response to receiving a search query.
SUMMARY
[0006] In an embodiment of the invention, an apparatus for processing travel itineraries in a database is provided. The database includes a first set of travel itineraries that satisfy search criteria that is processed by the apparatus to generate a second set of recommended travel itineraries for a traveler. The apparatus includes one or more processors and a memory coupled to the one or more processors. The memory includes program code that, when executed by the one or more processors, causes the apparatus to, for each value profile of a plurality of value profiles, determine an adjusted value of each travel itinerary in the first set of travel itineraries using the value profile, and define a set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary. The program code further causes the apparatus to, for each travel itinerary in the first set of travel itineraries, sum a weight of each value profile that includes the travel itinerary in the set of near-optimal travel itineraries of the value profile to generate a sum. The program code further causes the apparatus to compare the sums to determine the sum having a highest value, and add the travel itinerary having the sum with the highest value to the second set of travel itineraries.
[0007] In another embodiment of the invention, a method of processing the travel itineraries in the database is provided. The method includes, for each value profile of the plurality of value profiles, determining the adjusted value of each travel itinerary in the first set of travel itineraries using the value profile and defining the set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary. The method further includes, for each travel itinerary in the first set of travel itineraries, summing the weight of each value profile that includes the travel itinerary in the first set of near-optimal travel itineraries of the value profile to generate the sum. The method further includes comparing the sums to determine the sum with a highest value, and adding the travel itinerary having the sum with the highest value to the second set of travel itineraries.
[0008] In another embodiment of the invention, a computer program product is provided that includes a non-transitory computer-readable storage medium including program code. The program code may be configured, when executed by the one or more processors, to cause the one or more processors to, for each value profile of the plurality of value profiles, determine the adjusted value of each travel itinerary in the first set of travel itineraries using the value profile, and define the set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary. The program code further causes the one or more processors to, for each travel itinerary in the first set of travel itineraries, sum the weight of each value profile that includes the travel itinerary in the set of near-optimal travel itineraries of the value profile to generate the sum. The program code further causes the one or more processors to compare the sums to determine the sum having a highest value, and add the travel itinerary having the sum with the highest value to the second set of travel itineraries.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the invention and, together with the general description of the invention given above, and the detailed description of the embodiments given below, serve to explain the embodiments of the invention.
[0010] FIG. 1 is a diagrammatic view of an exemplary operating environment including a plurality of computer systems in communication via a network.
[0011] FIG. 2 is a diagrammatic view of an exemplary computer system of FIG. 1.
[0012] FIG. 3 is a diagrammatic view of a computer system including a search engine, a recommendations database, and a profile database.
[0013] FIG. 4 is a diagrammatic view of a probabilistic profile used by the search engine in FIG. 3.
[0014] FIG. 5 is a flow chart illustrating a process that may be executed by the computer system of FIG. 3 to select search results for a set of recommended travel recommendations to include in a reply to a search query from a traveler.
[0015] FIG. 6 is a flow chart illustrating a process that may be executed by the computer system of FIG. 3 to select travel itineraries to add to the set of recommended travel itineraries.
[0016] FIG. 7 is a flow chart illustrating another process that may be executed by the computer system of FIG. 3 to select travel itineraries to add to the set of recommended travel itineraries.
DETAILED DESCRIPTION
[0017] Embodiments of the invention may be implemented by a processing and database apparatus or system, such as a computerized reservation system. The processing and database system may be configured to respond to a travel search query by identifying travel itineraries that satisfy the search query, and returning the identified travel itineraries as search results. In the context of air travel, the processing and database system may be embodied in a Global Distribution System (GDS) that identifies travel itineraries including flights from multiple airlines. The GDS may also provide travel itineraries that include services such as train travel, hotel rooms, car rentals, sightseeing, and other travel-related activities or products.
[0018] The processing and database system may include a search engine that receives the search query, a recommendations database comprising a cache of previously determined search results, and a profile database including a plurality of probabilistic profiles. The search query may originate from a traveler who is accessing a website of an indirect seller of travel services, such as a travel agency, and may include data defining search criteria, such as an origin, destination, travel dates, booking class, etc. In response to receiving the search query, the search engine may determine which travel itineraries in the itinerary database match the search criteria, and return this set of travel itineraries to the search engine.
[0019] The search engine may then define a set of recommended travel itineraries from the set of travel itineraries satisfying the search criteria based on a probabilistic profile of the traveler. To this end, the probabilistic profile may be used to determine an "adjusted value" of each travel itinerary in the set of travel itineraries. This adjusted value may take into account both a monetary value (e.g., the price) of the travel itinerary as well as a convenience value of certain characteristics of the travel itinerary to the traveler, e.g., the value of a shorter flight time _ verses a longer flight. This convenience value may be determined using the probabilistic profile of the traveler. The set of recommended travel itineraries to be returned to the traveler may then be determined based on the adjusted value of each travel itinerary in the set of travel itineraries satisfying the search results.
[0020] The search engine may also determine whether the travel itineraries returned by the itinerary database are sufficiently relevant, or whether additional databases, such as fare, itinerary, and availability databases of the travel service providers, need to be accessed to enrich the search results. To this end, the probabilistic profile of the traveler may be compared to a probabilistic profile used to select the travel itineraries used to populate the cache to determine a distance between the probabilistic profiles. Depending on the distance, the search engine may return just search results obtained from the cache, or may query one or more external databases to obtain additional search results.
[0021] Referring now to FIG. 1, an operating environment 10 in accordance with an embodiment of the invention may include the GDS 12, one or more travel service provider systems, such as carrier system 14, one or more indirect seller systems, such as travel agency system 16, and a traveler system 18. The carrier system 14 may be in communication with one or more databases, such as an availability database 20, an itinerary database 21, and a fare database 22. Each of the GDS 12, carrier system 14, travel agency system 16, and traveler system 18 may communicate through a network 24. The network 24 may include one or more private or public networks (e.g., the Internet) that enable the exchange of data.
[0022] The GDS 12 may be configured to facilitate communication between the carrier system 14 and travel agency system 16 by enabling travel agents, validating carriers, or other indirect sellers to book reservations on the carrier system 14 via the GDS 12.
The GDS 12 may maintain links to a plurality of carrier systems via the network 24 that enable the GDS 12 to route reservation requests from the validating carrier or travel agency to a corresponding operating carrier. The carrier system 14 and travel agency system 16 may thereby book flights on multiple airlines via a single connection to the GDS 12.
[0023] The carrier system 14 may include a Computer Reservation System (CRS) that enables the GDS 12 or travel agency system 16 to reserve and pay for airline tickets. To this end, the carrier system 14 may interact with the availability database 20, itinerary database 21, and fare database 22 to price and reserve travel services in response to booking requests or other queries from the GDS 12. The carrier system 14 may also interact with other carrier systems (not shown), either directly or through the GDS 12, to enable a validating carrier to sell tickets for seats provided by the operating carrier. The operating carrier may then bill the validating carrier for the services provided.
[0024] The travel agency system 16 may provide travel agents with an interface for accessing the GDS 12 that enables agents to search for and book travel itineraries. The travel agency system 16 may also include an application accessible by the traveler system 18 that enables the traveler to search for and book travel itineraries without the help of a travel agent.
This application may comprise, for example, a travel-related website that is accessible over the network 24 using a web-browser provided by the traveler system 18.
[0025] The traveler system 18 may comprise a desktop computer, laptop computer, tablet computer, smart phone, or any other suitable computing device. The traveler may use the traveler system 18 to search for and book travel services by accessing the GDS
12, carrier system 14, travel agency system 16, or any other suitable system though the network 24. For example, the traveler may launch a browser application, and use the browser application to search for travel services on the website provided by the travel agency system 16, or a website provided by the GDS 12, carrier system 14, or any other suitable system. The traveler may book a selected travel service by entering payment information into the website.
[0026] Referring now to FIG. 2, the GDS 12, carrier system 14, travel agency system 16, traveler system 18, availability database 20, itinerary database 21, and fare database 22 of operating environment 10 may be implemented on one or more computer devices or systems, such as exemplary computer system 30. The computer system 30 may include a processor 32, a memory 34, a mass storage memory device 36, an input/output (I/O) interface 38, and a Human Machine Interface (HMI) 40. The computer system 30 may also be operatively coupled to one or more external resources 42 via the network 24 or I/O interface 38. External resources may include, but are not limited to, servers, databases, mass storage devices, peripheral devices, cloud-based network services, or any other suitable computer resource that may be used by the computer system 30.
[0027] The processor 32 may include one or more devices selected from microprocessors, micro-controllers, digital signal processors, microcomputers, central processing units, field programmable gate arrays, programmable logic devices, state machines, logic circuits, analog circuits, digital circuits, or any other devices that manipulate signals (analog or digital) based on operational instructions that are stored in the memory 34. Memory 34 may include a single memory device or a plurality of memory devices including, but not limited to, read-only memory (ROM), random access memory (RAM), volatile memory, non-volatile memory, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, cache memory, or any other device capable of storing information. The mass storage memory device 36 may include data storage devices such as a hard drive, optical drive, tape drive, volatile or non-volatile solid state device, or any other device capable of storing information.
[0028] The processor 32 may operate under the control of an operating system 46 that resides in memory 34. The operating system 46 may manage computer resources so that computer program code embodied as one or more computer software applications, such as an application 48 residing in memory 34, may have instructions executed by the processor 32.
In an alternative embodiment, the processor 32 may execute the application 48 directly, in which case the operating system 46 may be omitted. One or more data structures 50 may also reside in memory 34, and may be used by the processor 32, operating system 46, or application 48 to store or manipulate data.
[0029] The I/O interface 38 may provide a machine interface that operatively couples the processor 32 to other devices and systems, such as the network 24 or external resource 42. The application 48 may thereby work cooperatively with the network 24 or external resource 42 by communicating via the I/O interface 38 to provide the various features, functions, applications, processes, or modules comprising embodiments of the invention. The application 48 may also have program code that is executed by one or more external resources 42, or otherwise rely on functions or signals provided by other system or network components external to the computer system 30. Indeed, given the nearly endless hardware and software configurations possible, persons having ordinary skill in the art will understand that embodiments of the invention may include applications that are located externally to the computer system 30, distributed among multiple computers or other external resources 42, or provided by computing resources (hardware and software) that are provided as a service over the network 24, such as a cloud computing service.
[0030] The HMI 40 may be operatively coupled to the processor 32 of computer system 30 in a known manner to allow a user to interact directly with the computer system 30. The HMI 40 may include video or alphanumeric displays, a touch screen, a speaker, and any other suitable audio and visual indicators capable of providing data to the user. The HMI 40 may also include input devices and controls such as an alphanumeric keyboard, a pointing device, keypads, pushbuttons, control knobs, microphones, etc., capable of accepting commands or input from the user and transmitting the entered input to the processor 32.
[0031] A database 44 may reside on the mass storage memory device 36, and may be used to collect and organize data used by the various systems and modules described herein. The database 44 may include data and supporting data structures that store and organize the data. In particular, the database 44 may be arranged with any database organization or structure including, but not limited to, a relational database, a hierarchical database, a network database, or combinations thereof. A database management system in the form of a computer software application executing as instructions on the processor 32 may be used to access the information or data stored in records of the database 44 in response to a query, where a query may be dynamically determined and executed by the operating system 46, other applications 48, or one or more modules.
[0032] Referring now to FIG. 3, in an exemplary embodiment of the invention, a computer system 60 may provide a search engine 62, a recommendations database 64 including cached search results, and a profile database 66 including traveler profiles. The computer system 60 may be in communication with the carrier system 14 and a travel-related website 68. In an embodiment of the invention, the computer system 60 may be provided by the GDS
12, and the travel-related website 68 may be provided by the travel agency system 16.
However, a person having ordinary skill in the art would understand that computer system 60 and travel-related website 68 could be provided by any suitable computer system.
[0033] The traveler may access one or more web-pages provided by the travel-related website 68 using the traveler system 18. The traveler may interact with the web-pages to search for and book travel itineraries. These travel itineraries may comprise one or more travel services, such as flights, hotel rooms, car rentals, products to be provided to the traveler, or any other travel service. To this end, the traveler system 18 may transmit a search query 70 to the travel-related website 68. The search query 70 may include data defining search criteria, such as an origin and destination, travel dates, booking classs or cabin type, and number and type of passengers. In response to receiving the search query 70, the travel-related website 68 may transmit a search query 72 including data defining search criteria to the search engine 62. The travel-related web site 68 may also transmit data defining a user profile to the search engine 62.
[0034] In response to receiving the search query 72, the search engine 62 may generate and transmit a database search query 74 to the recommendations database 64. In response to receiving the database search query 74, the recommendations database 64 may identify one or more travel itineraries in the cached search results that satisfy the search criteria. To update or add to the cached search results, the recommendations database 64 may periodically query the carrier system 14 for travel itineraries matching pre-determined search criteria. The pre-determined search criteria may be based on search criteria expected to be received from travelers. The carrier system 14 may in turn query one or more of the availability database 20, itinerary database 21, and fare database 22 to determine travel itineraries that match the predetermined search criteria, and return these travel itineraries to the recommendations database 64 as search results. The recommendations database 64 may then cache these pre-determined search results for later use in responding to queries received from the traveler.
[0035] In an embodiment of the invention, the search results received from the carrier system 14 may be filtered or otherwise processed by the recommendations database 64 based on a statistical probabilistic profile. The statistical probabilistic profile may be used to determine the adjusted value of the travel itinerary that captures both the price of the travel products and the convenience value added or subtracted by specific features or characteristics of the travel itinerary. The recommendations database 64 may then select travel itineraries to add to the cache based on the adjusted value.
[0036] In response to identifying the travel itineraries in the cache that match the search criteria, the recommendations database 64 may transmit a response 76 to the search engine 62.
The response 76 may include search results comprising the identified travel itineraries. While the recommendations database 64 is compiling the search results, or in response to receiving the response 76, the search engine 62 may transmit a query 78 to the profile database 66 that includes data defining the traveler identity. The query 78 may request the profile database 66 provide a probabilistic profile for the traveler. If the probabilistic profile exists for the traveler, the profile database 66 may transmit the probabilistic profile to the search engine 62 in a response 80. If the traveler does not have a pre-existing probabilistic profile, the profile database 66 may transmit a default probabilistic profile to the search engine 62, or the response 80 may indicate that a probabilistic profile does not exist for the identified traveler. In the latter case, the search engine 62 may generate a default probabilistic profile for the traveler.
[0037] Each probabilistic profile in the profile database 66 may be associated with a composite profile comprising a set of coefficients, with each coefficient corresponding to a characteristic of the travel itinerary. The value of each coefficient may indicate how important the corresponding characteristic of the travel itinerary is to the traveler.
For example, one of the coefficients may correspond to the total travel time of the itinerary. To provide an indication of how important this characteristic is to the traveler in relation to the monetary value, or price Cu of the travel products comprising the travel itinerary, the value assigned to the coefficient may have a monetary value (e.g., $20/hour of travel time).
[0038] The composite profile may be used to determine the adjusted value of the travel itinerary for the traveler in question. The adjusted value may capture both the price Cm of the travel products and the convenience value Ccv added or subtracted for the traveler by specific features or characteristics of the travel itinerary. Using the above exemplary coefficient of $20/hour to characterize the cost of travel time, a travel itinerary having a total travel time of 4 hours may have a Ccv= $80 added to the price CM of the travel itinerary to reflect the adjusted value CAD./ = Cm+ Ccv to the traveler in question. In contrast, a trip itinerary connecting the same origin and destination, but having a total travel time of 8 hours, may have a Ccv= $160 added to the price Cm of the travel itinerary. Thus, in the above example, the price Civrof travel itinerary having the 4 hour travel time would have to be more than $80 greater than the price Cu of the travel itinerary having the 8 hour travel time in order to have a higher adjusted value CAD]
to the traveler, assuming all other features of the travel itineraries are the same. The composite profile may thereby provide a means of determining an overall desirability of the travel itinerary to the traveler in question that captures both the price of the travel products comprising the itinerary and the impact of convenience factors (or inconvenience factors, as the case may be) on the traveler.
[0039] Once the composite profile is known, the search engine 62 may apply the composite profile to determine the adjusted value CAD] for each of the search results in response 80. The search engine 62 may then rank the search results based on their adjusted value CAD], with search results having a lower adjusted value CAD,' being given a higher rank. The search engine 62 may then transmit a response 82 to the travel-related website 68 that includes at least a portion of the ranked search results selected based on rank. For example, the selected search results may comprise a predetermined number of search results representing the highest ranking search results. In response to receiving the response 82, the travel-related website 68 may format the results and transmit a response 84 to the search query 70 that includes the search results selected by the search engine 62 for display to the traveler. The response 84 may comprise data that causes the browser application running on the traveler system 18 to display a window populated with the selected search results, for example.
[0040] FIG. 4 depicts a diagrammatic view of a probabilistic profile 90 comprising an array of N value profiles VPI¨VPN. Each value profile VP ¨ VPN of the probabilistic profile 90 may comprise a probability, or weight wi ¨ wN, (represented by the height of each value profile ¨ VPN along the vertical axis). That is, the probabilistic profile 90 may be represented by an array [wi x VPI, w2x VP2, . . . wNx VPN]. Each value profile VP,¨ VPN of the probabilistic profile 90 may further comprise a set of Mtravel itinerary characteristics (vi, v2, vm). The weight wi ¨ wiv may provide the relative effect of the corresponding value profile VP] VPN in a blending function that provides the composite profile of the traveler. To this end, the weight w ¨ wN of each value profile VP, ¨ VPN may be determined based on how well the corresponding value profile VP, ¨ VPN identifies travel itineraries having the lowest adjusted value CAW for the traveler in question from a subset of travel itineraries. That is, the weight w, may provide a probability that the corresponding value profile VP, will accurately compute the adjusted value CAD) of a travel itinerary for the traveler.
[0041] Each coefficient vi ¨ vm of the value profile VP, may describe a value of a corresponding travel itinerary characteristic. By way of example, the coefficients vi ¨ vm may include coefficients corresponding to the cost/hour for travel time (e.g., add $20 for each hour of travel time), a cost/stop for each stop or connection required (e.g., add $30 for each stopover), a cost/stop for each stop having an overnight stopover requirement (e.g., add $100 for an overnight stopover), a cost associated with an undesirable carrier (e.g., add $40 if carrier is Acme Air), a cost associated with an undesirable type of carrier (e.g., add $50 if carrier is a low-cost carrier), a cost associated with a particular air carrier policy (e.g., add $40 if carrier only allows one carry-on bag or has a record of excessive delays), or an additional cost if departure is outside a preferred travel time (e.g., add $30 for flights departing prior to SAM), to name just a few.
[0042] Taking into account all possible levels of willingness to pay for all criteria may result in a number of value profiles N that would be impractical to manage. In an embodiment of the invention, to keep the number of value profiles to a manageable level, the values of each coefficient may be quantized into discrete values. To this end, the costs associated with each coefficient may be quantized to values having fixed increments (e.g., $10) over a pre-determined range (e.g., $0 to $100). By way of example, a value profile consisting of coefficients corresponding to a cost/hour for travel time mapped to a set of values with $10 increments over the range of $0 to $50, and a cost/stop for overnight stopovers, a cost penalty for selecting a carrier that is categorized as undesirable, a cost for an undesirable type of carrier, and a cost for an undesirable time of departure each mapped to a set of values with $10 increments over the range of $0 to $100 would result in N=6x114 = 87,846 value profiles.
[0043] The probabilistic profile may be used to drive the search for travel itineraries, and the highest ranking search results selected from the search results output by the search. The probabilistic profile may also be used to select the most relevant recommendations from the output of a non-personalized search for travel itineraries matching the travelers search terms. In either case, the composite profile for the traveler may be constructed from one or more of the value profiles VPI¨VPN. For example, the composite profile, or CP for the traveler may be determined by taking a sum of the weighted value profiles VP/ VPN as follows:
CP =Iwix VPi where the weights wi ¨ wN are normalized so that:
= 1 i=1 The resulting composite profile may provide the set of Mtravel itinerary characteristics (vi, v2, ... vm) for the traveler in which each itinerary characteristic (vi, v2, vm) of the composite profile comprises the weighted sum of the corresponding itinerary characteristics (vi, V2, vm) of each of the value profiles VP/ ¨ VPN.
[0044] Referring now to FIG. 5, a flow chart depicts a process 100 that may be performed by the search engine 62 to determine the travel itineraries to return in response to receiving the search query 72 from the traveler. The process 100 may determine which travel itineraries from the cached search results in the recommendations database 64 to include in the response 82 based on the probabilistic profile of the traveler. For each set of search criteria used to obtain the pre-determined search results, there may a number of travel itineraries MR stored in the recommendations database 64. The travel itineraries stored in the recommendations database 64 may be indexed by origination and destination, date of travel, passenger type code, and an identity of the customer (e.g., the third party seller). The convenience factors and prices corresponding to each travel recommendation may also be stored and indexed in the recommendations database 64. More than one price may be stored and indexed for each travel itinerary, e.g., a different price for each combination of classes under which a seat may be booked.
[0045] The customer may provide business rules prescribing that the search engine 62 return NR recommended travel itineraries in response to receiving the search query 72. NR may represent threshold number of travel itineraries that are to be provided as search results in response 82. These business rules may also select the number NR to define how the results are displayed, such as display an exhaustive list (e.g., all MR results) with some featured results (e.g., NR results) positioned at the top of the search results, to display only NR
results, or at most NR
results.
[0046] In block 102, the process 100 may determine if the number MR of travel itineraries in the recommendations database 64 matching the search criteria exceeds the number NR of travel itineraries to be returned to the traveler. If the number MR is not greater than the number NR
("NO" branch of decision block 102), the process 100 may proceed to block 104 and return all MR matching travel itineraries as the search results before proceeding to block 106. If the number MR is greater than the number NR ("YES" branch of decision block 102), the process 100 may proceed to block 108.
[0047] In block 108, the process 100 may determine if the probabilistic profile of the traveler is exhaustive. The probabilistic profile may be considered exhaustive if the probabilistic profile includes all possible value profiles. That is, the probabilistic profile includes a value profile corresponding to each possible combination of the quantized itinerary characteristic values (VI, V2, . V m).
[0048] If the probabilistic profile is exhaustive ("YES" branch of decision block 108), the process 100 may proceed to block 110. The traveler may be satisfied with a recommended travel itinerary if the travel itinerary is sufficiently close in adjusted value CAD,/ to an "optimal" travel itinerary. That is, if the recommended travel itinerary is a "near-optimal"
travel itinerary. An optimal travel itinerary may be determined for each value profile by determining the adjusted value CADJ of each travel itinerary matching the search criteria using the value profile VP,, and selecting the travel itinerary having the lowest adjusted value CADJ. The optimal travel itinerary for the traveler may be the optimal travel itinerary of the value profile VP, most closely corresponding to the personal preferences of the traveler. For an exhaustive probabilistic profile, a travel itinerary that is optimal for one value profile VP, may be near-optimal for several other value profiles VP,. Thus, near-optimal travel itineraries corresponding to the value profiles VP;
with the largest weights may provide near-optimal travel itineraries to a large percentage of travelers.
[0049] In block 110, the process 100 may, for each value profile VP, in the probabilistic profile, compute the adjusted value CAD] of each of the MR travel itineraries matching the search results. The process 100 may then identify the optimal travel itinerary, and define a set of near-optimal travel itineraries comprising the optimal travel itinerary and the travel itineraries having an adjusted value CAD] within a near-optimal threshold (e.g., 5%). In response to defining the set of near-optimal travel itineraries, the process 100 may proceed to block 112.
[0050] Referring now to FIG. 6 and with continued reference to FIG. 5, in block 112, the process 100 may execute a sub-process 200 that selects travel itineraries to include in a set of travel itineraries to be recommended to the traveler, i.e., a set of recommended travel itineraries.
To this end, the sub-process 200 may, for each travel itinerary satisfying the search criteria, determine a probability PSA that the travel itinerary will satisfy the traveler. The sub-process 200 may begin in block 202 by selecting a travel itinerary from the set of travel itineraries satisfying the search criteria.
[0051] The sub-process 200 may proceed to block 204 and identify each value profile VP, in the probabilistic profile of the traveler having a set of near-optimal travel itineraries that includes the travel itinerary selected in block 202. The sub-process 200 may then proceed to block 206 and determine PSA by summing the normalized weights w, of each value profile VP, identified in block 204. PSA may thereby provide a probability that the travel itinerary selected in block 202 is a near-optimal travel itinerary for the traveler.
[0052] Proceeding to block 208, the sub-process 200 may determine if PSA
has been determined for each travel itinerary in the set of travel itineraries satisfying the search results. If PSA has not been determined for each travel itinerary in the set of travel itineraries satisfying the search results ("NO" branch of decision block 208), the sub-process 200 may proceed to block 210. In block 210, the sub-process 200 may select another travel itinerary from the set of travel itineraries satisfying the search results for which PSA has yet to be determined and return to block 204.
[0053] If PSA has been determined for each travel itinerary in the set of travel itineraries satisfying the search results ("YES" branch of decision block 208), the sub-process 200 may proceed to block 212. In block 212, the sub-process 200 may identify the travel itinerary having the highest value of P54 and add this travel itinerary to the set of recommended travel itineraries.
The sub-process 200 may then proceed to block 214 and determine if the set of recommended travel itineraries satisfies a specified condition. In an embodiment of the invention, the specified condition for block 214 of process 200 may be that the set of recommended travel itineraries has reached a threshold amount, e.g., includes NR travel itineraries.
[0054] If the set of recommended travel itineraries satisfies the specified condition, e.g., the set of recommended travel itineraries includes at least NR travel itineraries ("YES" branch of decision block 214), the sub-process 200 may end, and process 100 proceed to block 106. If the set of recommended travel itineraries does not satisfy the specified condition, e.g., the set of recommended travel itineraries includes less than NR travel itineraries ("NO"
branch of decision block 214), the sub-process 200 may proceed to block 216. In block 216, the sub-process 200 may set the weight w, of each value profile that includes a travel itinerary from the recommended set in its near-optimal set (referred to herein as "covered" value profiles) to a predetermined value, e.g., zero.
[0055] By setting the weights w, of covered value profiles to the predetermined value, the sub-process 200 may reduce or prevent the covered value profiles, which already have at least one near-optimal travel itinerary in the set of recommended travel itineraries, from contributing to PSA in subsequent rounds of the selection process. The sub-process 200 may then return to block 202 to begin selecting the next travel itinerary to add to the set of recommended travel itineraries.
[0056] If the probabilistic profile is not exhaustive ("NO" branch of decision block 108), the process 100 may proceed to block 114. In block 114, the process 100 may define a central set of near-optimal travel itineraries, and a peripheral set of near-optimal travel itineraries. To this end, and as described above with respect to block 108, the process 100 may, for each value profile VP, in the probabilistic profile, compute the adjusted value of each of the MR
travel itineraries matching the search results, and identify the optimal travel itinerary. The process 100 may then define the central set of near-optimal travel itineraries as comprising the optimal travel itinerary and the travel itineraries having an adjusted value CAW within one near-optimal threshold (e.g., 5%). The process 100 may further define the peripheral set of near-optimal travel itineraries as comprising the optimal travel itinerary and the travel itineraries having an adjusted value CAD,/
within another near-optimal threshold different from the one threshold (e.g., 20%).
[0057] Because the non-exhaustive probabilistic profile may not include all possible value profiles, there may be specific value profiles VP, that are not represented in the probabilistic profile. For example, value profiles VP, including traveler time preferences may be excluded to reduce the number of value profiles VP i in the probabilistic profile. To compensate for missing value profiles VP,, and to increase the probability of returning acceptable search results to the traveler, the process 100 may add multiple near-optimal travel itineraries to the set of recommended travel itineraries for each value profile VP, in the non-exhaustive probabilistic profile. A threshold number of near-optimal travel itineraries NT for each value profile may be set to a specific value (e.g., four), or may vary between different value profiles VP, based on an importance of the value profile VP,. The objective of the process 100 may be to maximize a probability PSB, which may be provided by:
PSB 1Wi x F(NNOt) i=0 where NATo, is the number of near-optimal travel itineraries for the corresponding value profile in the recommended set, and F(NN0,) is a function that returns a logical value one (true) ifNivo, is equal to or greater than a threshold and a logical value zero (false) otherwise.
[0058] Adding an additional near-optimal travel itinerary to the set of recommended travel itineraries that is similar to an existing travel itinerary in the set may fail to improve coverage significantly. One near-optimal travel itinerary may be considered as similar to another if one of the characteristics of the travel itineraries is the same. For example, two near-optimal travel itineraries having the same departure times may be considered to be similar.
[0059] To address the above issue with similar near-optimal travel itineraries, in an embodiment of the invention, the number of near-optimal travel itineraries NNOi may only count near-optimal travel itineraries that are not similar to other near-optimal travel itineraries in the set of recommended travel itineraries. That is, if the set of recommended travel itineraries includes a plurality of similar travel itineraries, the plurality may only count as one travel itinerary for the purposes of determining Nivoi. That is, NM,' may only count the number of dissimilar near-optimal travel itineraries in the set of recommended travel itineraries.
Dissimilar near-optimal travel itineraries may be travel itineraries that are in the same near-optimal set, but that are sufficiently different from each other so as to contribute to the diversity of the set of recommended travel itineraries. For example, two near-optimal travel itineraries having different departure times may be considered dissimilar.
[0060] In response to defining the central set and peripheral set of near-optimal travel itineraries, the process 100 may proceed to block 116. In block 116, the process 100 may set the specified condition for sub-process 200. The process 100 may then populate the set of recommended travel itineraries from the central set of near-optimal travel itineraries using sub-process 200 until the specified condition is met as described above with respect to FIG. 6. In an embodiment of the invention, the specified condition set in block 116 may be that the set of recommended travel itineraries includes at least one travel itinerary from each central set of near-optimal travel itineraries of value profiles encompassing a specified percentage of travelers. For example, the specified percentage of travelers may be 90% of the travelers in the profile database 66. In another embodiment of the invention, the specified condition may be that either the number of travel itineraries in the preliminary set of travel itineraries has reached the threshold number NT, or the travel itineraries in the preliminary set of travel itineraries encompass the specified percentage of travelers. In any case, in response to the specified condition for sub-process 200 being satisfied, the process 100 may exit the sub-process 200 and proceed to block 118.
[0061] In block 118, the process 100 may determine if the set of recommended travel itineraries meets another specified condition. For example, the condition specified in decision block 118 may be that the set of recommended travel itineraries includes NR
travel itineraries. If the set of recommended travel itineraries meets the specified condition ("YES"
branch of decision block 118), the process 100 may proceed to block 106. If the set of recommended travel itineraries does not meet the specified condition ("NO" branch of decision block 118), the process 100 may proceed to block 120.
[0062] Referring now to FIG. 7, a flow chart depicts a sub-process 300 that may be executed by process 100 in block 120 to enrich the set of recommended travel itineraries with travel itineraries using the peripheral sets of near-optimal travel itineraries. In block 302, the sub-process 300 may flag or otherwise identify the travel itineraries in the set of travel itineraries satisfying the search criteria that have been added to the set of recommended travel itineraries.
Flagging the travel itineraries may enable the sub-process 300 to determine whether or not a travel itinerary in the set of set of travel itineraries satisfying the search criteria has been added to the set of recommended travel itineraries. In response to flagging the travel itineraries, the sub-process 300 may proceed to block 304.
[0063] In block 304, sub-process 300 may determine, for each uncovered value profile VP, in the probabilistic profile of the traveler, a number NEI of flagged travel itineraries that are in the corresponding peripheral set of near-optimal travel itineraries. In an embodiment of the invention, the number of flagged travel itineraries NFI may only include dissimilar travel itineraries. That is, a group of similar travel itineraries may only count as one travel itinerary for the purposes of determining the number of flagged travel itineraries NFI in the peripheral set of near-optimal travel itineraries. In response to determining the number of flagged travel itineraries NF1 in the peripheral set of near-optimal travel itineraries for each value profile VP
the sub-process 300 may proceed to block 306.
[0064] In block 306, the sub-process 300 may flag or otherwise identify each value profile VP; having an NFi equal to or greater than the threshold number NT as being covered. The sub-process 300 may also set the weight of the covered value profiles to a reduced value, e.g., zero.
The sub-process 300 may then proceed to block 308. In block 308, the sub-process 300 may select an unflagged travel itinerary from the set of travel itineraries satisfying the search criteria and proceed to block 310.
[0065] In block 310, the sub-process 300 may identify each uncovered value profile VP, of the probabilistic profile that has a peripheral set of near-optimal travel itineraries which includes the unflagged travel itinerary selected in block 308. The sub-process 300 may then determine, for each uncovered value profile VP, identified, if the unflagged travel itinerary is dissimilar to each of the other travel itineraries in the corresponding peripheral set of near-optimal travel itineraries. The sub-process 300 may then determine the probability PSB by summing the weights of each uncovered value profile having the dissimilar unflagged travel itinerary.
[0066] In response to determining PSB, the sub-process 300 may proceed to block 312 and determine if PSB has been determined for each unflagged travel itinerary. If PSB has not been determined for each unflagged travel itinerary ("NO" branch of decision block 312), the sub-process 300 may proceed to block 314 and select the next unflagged travel itinerary before returning to block 310. If PSB has been defined for each unflagged travel itinerary ("YES"
branch of decision block 312), the sub-process 300 may proceed to block 316.
[0067] In block 316, the sub-process 300 may determine the travel itinerary having the highest value of PSB, and add this travel itinerary to the set of recommended travel itineraries.
The sub-process 300 may also flag or otherwise identify the travel itinerary to indicate that it has been added to the set of recommended travel itineraries. The sub-process 300 may then proceed to block 318 and determine if the set of recommended travel itineraries meets a specified condition, e.g., the set contains at least NR travel itineraries. If the set of recommended travel itineraries does not meet the specified condition ("NO" branch of decision block 318), the sub-process 300 may return to block 304 and begin the process of identifying another travel itinerary to add to the set of recommended travel itineraries. If the set of recommended travel itineraries satisfies the specified condition ("YES" branch of decision block 318), process 100 may exit sub-process 300 and proceed to block 106.
[0068] In block 106, the process 100 may determine if the set of recommended travel itineraries is sufficiently likely to be relevant to the traveler to include in the response 82. In an embodiment of the invention, the travel itineraries satisfying the search criteria that are stored in the cache may have been selected from a larger group of search results based on a statistical probabilistic profile. The statistical probabilistic profile may be a probabilistic profile configured to capture travel itineraries that are relevant to a selected cross-section of travelers.
The travel itineraries that are selected for inclusion in the cache may thereby depend on the status of the statistical probabilistic profile at the time the cache was updated.
Thus, whether the NR
travel recommendations selected from the MR cached travel recommendations satisfying the search results are sufficient may depend on how similar the probabilistic profile of the traveler is to the statistical probabilistic profile at the time the cache was updated.
The sufficiency of the recommended travel itineraries may also depend on whether travel recommendations that would be identified by the probabilistic profile of the traveler were added to the cache at all. That is, if the traveler has a probabilistic profile that is statistically independent from the statistical probabilistic profile, the travel recommendations stored in the cache may not include travel itineraries relevant to the traveler.
[0069] Whether the set of recommended travel itineraries is sufficient may be determined based on a distance d between the probabilistic profile of the traveler and the statistical probabilistic profile used to select travel itineraries in the cache. One way to determine the distance d may be to accumulate the weight wi of each value profile VP, in the probabilistic profile of the traveler that has a matching value profile in the statistical probabilistic profile used for the pre-computed search that populated the cache. That is:
d= 1 x F(VPi) i=o where F(VP,) is a probabilistic function that returns logic value one (true) if the value profile VP, is included in the statistical probabilistic profile, and logic value zero (false) otherwise. The distance d may represent an accumulated weight of the value profiles VP, comprising the probabilistic profile of the traveler that have a matching value profile VPi in the statistical probabilistic profile. If there is a matching value profile in the statistical probabilistic profile for each value profile VPi having a non-zero weight Iv; in the probabilistic profile of the traveler, the distance d may be zero. A distance of zero may indicate a 100% probability that there is at least one travel itinerary in the set of Mtravel itineraries that matches the probabilistic profile of the traveler.
[0070] Once the distance d is determined, the process 100 may determine whether the set of recommended travel itineraries is sufficient by comparing the distance d to a threshold. This threshold may be absolute (e.g., d less than or equal to 70%). The threshold may also be set to a value that results in the set of recommended travel itineraries being found sufficient a certain percentage of the time, e.g., 80% of the time. If the set of recommended travel itineraries is sufficient ("YES" branch of decision block 106), the process 100 may proceed to block 122 and return the set of recommended travel itineraries. If the set of recommended travel itineraries is not sufficient ("NO" branch of decision block 106), the process 100 may proceed to block 124 and launch an online search for additional travel itineraries satisfying the search criteria. The online search may, for example, include transmitting queries to the carrier system 14 to obtain new search results, which the carrier system may determine by accessing one or more of the availability database 20, the itinerary database 21, and the fare database 22.
The search results obtained online may then be filtered using the probabilistic profile of the traveler, and a portion of the online search results used to replace or enrich the set of recommended search results. For example, the online search results may be added to the set of travel itineraries satisfying the search criteria retrieved from the recommendations database 64 to generate a composite set of travel itineraries. The composite set of travel itineraries may then be filtered using the probabilistic profile of the traveler as described above to generate the set of recommended travel itineraries.
[0071] In general, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions, or even a subset thereof, may be referred to herein as "computer program code," or simply "program code." Program code typically comprises computer-readable instructions that are resident at various times in various memory and storage devices in a computer and that, when read and executed by one or more processors in a computer, cause that computer to perform the operations necessary to execute operations and/or elements embodying the various aspects of the embodiments of the invention. Computer-readable program instructions for carrying out operations of the embodiments of the invention may be, for example, assembly language or either source code or object code written in any combination of one or more programming languages.
[0072] Various program code described herein may be identified based upon the application within that it is implemented in specific embodiments of the invention.
However, it should be appreciated that any particular program nomenclature that follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Furthermore, given the generally endless number of manners in which computer programs may be organized into routines, procedures, methods, modules, objects, and the like, as well as the various manners in which program functionality may be allocated among various software layers that are resident within a typical computer (e.g., operating systems, libraries, API's, applications, applets, etc.), it should be appreciated that the embodiments of the invention are not limited to the specific organization and allocation of program functionality described herein.
[0073] The program code embodied in any of the applications/modules described herein is capable of being individually or collectively distributed as a program product in a variety of different forms. In particular, the program code may be distributed using a computer-readable storage medium having computer-readable program instructions thereon for causing a processor to carry out aspects of the embodiments of the invention.
[0074] Computer-readable storage media, which is inherently non-transitory, may include volatile and non-volatile, and removable and non-removable tangible media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Computer-readable storage media may further include RAM, ROM, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other solid state memory technology, portable compact disc read-only memory (CD-ROM), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and which can be read by a computer. A computer-readable storage medium should not be construed as transitory signals per se (e.g., radio waves or other propagating electromagnetic waves, electromagnetic waves propagating through a transmission media such as a waveguide, or electrical signals transmitted through a wire). Computer-readable program instructions may be downloaded to a computer, another type of programmable data processing apparatus, or another device from a computer-readable storage medium or to an external computer or external storage device via a network.
[0075] Computer-readable program instructions stored in a computer-readable medium may be used to direct a computer, other types of programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions that implement the functions, acts, and/or operations specified in the flow charts, sequence diagrams, and/or block diagrams. The computer program instructions may be provided to one or more processors of a general purpose computer, a special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the one or more processors, cause a series of computations to be performed to implement the functions, acts, and/or operations specified in the flow charts, sequence diagrams, and/or block diagrams.
[0076] In certain alternative embodiments, the functions, acts, and/or operations specified in the flow charts, sequence diagrams, and/or block diagrams may be re-ordered, processed serially, and/or processed concurrently consistent with embodiments of the invention.
Moreover, any of the flow charts, sequence diagrams, and/or block diagrams may include more or fewer blocks than those illustrated consistent with embodiments of the invention.
[0077] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the embodiments of the invention.
As used herein, the singular forms "a", "an" and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms "comprises"
and/or "comprising," when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Furthermore, to the extent that the terms "includes", "having", "has", "with", "comprised of', or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term "comprising".
[0078] While all of the invention has been illustrated by a description of various embodiments and while these embodiments have been described in considerable detail, it is not the intention of the Applicant to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative apparatus and method, and illustrative examples shown and described.
Accordingly, departures may be made from such details without departing from the spirit or scope of the Applicant's general inventive concept.

Claims (22)

24What is claimed is:
1.
An apparatus for processing a first set of travel itineraries in a database to define a second set of recommended travel itineraries for a traveler, the apparatus comprising:
one or more processors; and a memory coupled to the one or more processors, the memory storing data comprising program code that, when executed by the one or more processors, causes the apparatus to:
for each value profile of a plurality of value profiles, determine an adjusted value of each travel itinerary in the first set of travel itineraries using the value profile;
for each value profile, define a first set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary;
for each travel itinerary in the first set of travel itineraries, sum a weight of each value profile that includes the travel itinerary in the first set of near-optimal travel itineraries of the value profile to generate a first sum;
compare the first sums to determine the first sum having a highest value; and add the travel itinerary having the first sum with the highest value to the second set of travel itineraries.
2. The apparatus of claim 1 wherein the program code is further configured to cause the apparatus to:
reduce the weight of each value profile that contributed to the first sum with the highest value;
for each travel itinerary in the first set of travel itineraries that has not been added to the second set of travel itineraries, sum the weight of each value profile that includes the travel Date Re9ue/Date Received 2021-03-29 itinerary in the first set of near-optimal travel itineraries of the value profile to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and add the travel itinerary having the second sum with the highest value to the second set of travel itineraries.
3. The apparatus of claim 1 wherein reducing the weight of each value profile comprises setting the weight to zero.
4. The apparatus of claim 1 wherein defining the first set of near-optimal travel itineraries comprises, for each value profile:
for each travel itinerary in the first set of travel itineraries, determining a convenience value of the travel itinerary using the value profile;
for each travel itinerary in the first set of travel itineraries, determining a monetary value of the travel itinerary;
for each travel itinerary in the first set of travel itineraries, adding the convenience value and the monetary value to determine the adjusted value of the travel itinerary;
identifying the travel itinerary in the first set of travel itineraries having a lowest adjusted value as an optimal travel itinerary; and selecting the optimal travel itinerary and each travel itinerary having the adjusted value within a first predetermined amount of the adjusted value of the optimal travel itinerary for inclusion in the first set of near-optimal travel itineraries.
5. The apparatus of claim 4 wherein the program code is further configured to cause the apparatus to:
Date Re9ue/Date Received 2021-03-29 for each value profile, define a second set of near-optimal travel itineraries to include the optimal travel itinerary and each travel itinerary having the adjusted value within a second predetermined amount of the adjusted value of the optimal travel itinerary, wherein the second predetermined amount is higher than the first predetermined amount.
6. The apparatus of claim 5 wherein the program code is further configured to cause the apparatus to:
for each travel itinerary in the first set of travel itineraries that has not been added to the second set of travel itineraries, sum the weight of each value profile that includes the travel itinerary in the second set of near-optimal travel itineraries to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and add the travel itinerary having the second sum with the highest value to the second set of travel itineraries.
7. The apparatus of claim 5 wherein the program code is further configured to cause the apparatus to:
for each value profile, determine a number of travel itineraries in the second set of near-optimal travel itineraries that are included in the second set of travel itineraries;
for each value profile wherein the number of travel itineraries exceeds a threshold, reduce the weight of the value profile;
for each travel itinerary in the first set of travel itineraries that has not been added to the second set of travel itineraries, sum the weight of each value profile that includes the travel itinerary in the second set of near-optimal travel itineraries of the value profile to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and Date Re9ue/Date Received 2021-03-29 add the travel itinerary having the second sum with the highest value to the second set of travel itineraries.
8. The apparatus of claim 5 wherein the plurality of value profiles comprises a probabilistic profile, and the program code is further configured to cause the apparatus to:
determine whether the probabilistic profile is exhaustive or non-exhaustive, wherein the second set of near-optimal travel itineraries is defined in response to a determination that the probabilistic profile is non-exhaustive.
9. The apparatus of claim 1 wherein the travel itineraries in the first set of travel itineraries comprise first search results based on a first probabilistic profile, the traveler is associated with a second probabilistic profile, and the program code is further configured to cause the apparatus to:
determine a distance between the first probabilistic profile and the second probabilistic profile;
in response to the distance being greater than a threshold, launch an online search for additional travel itineraries based on the second probabilistic profile; and enrich the first set of travel itineraries with at least a portion of the additional travel itineraries returned by the online search.
10. A method of processing a first set of travel itineraries in a database to define a second set of recommended travel itineraries for a traveler, the method comprising:
for each value profile of a plurality of value profiles, determining, by a computer, an adjusted value of each travel itinerary in the first set of travel itineraries using the value profile;
Date Re9ue/Date Received 2021-03-29 for each value profile, defining, by the computer, a first set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary;
for each travel itinerary in the first set of travel itineraries, summing, by the computer, a weight of each value profile that includes the travel itinerary in the first set of near-optimal travel itineraries of the value profile to generate a first sum;
comparing the first sums to determine the first sum with a highest value; and adding, by the computer, the travel itinerary having the first sum with the highest value to the second set of travel itineraries.
11. The method of claim 10 further comprising:
reducing the weight of each value profile that contributed to the first sum with the highest value;
for each travel itinerary in the first set of travel itineraries that has not been added to the second set of travel itineraries, summing the weight of each value profile that includes the travel itinerary in the first set of near-optimal travel itineraries of the value profile to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and adding the travel itinerary having the second sum with the highest value to the second set of travel itineraries.
12. The method of claim 11 wherein reducing the weight of each value profile comprises setting the weight to zero.
Date Re9ue/Date Received 2021-03-29
13. The method of claim 10 wherein defining the first set of near-optimal travel itineraries comprises, for each value profile:
for each travel itinerary in the first set of travel itineraries, determining a convenience value of the travel itinerary using the value profile;
for each travel itinerary in the first set of travel itineraries, determining a monetary value of the travel itinerary;
for each travel itinerary in the first set of travel itineraries, adding the convenience value and the monetary value to determine the adjusted value of the travel itinerary;
identifying the travel itinerary in the first set of travel itineraries having a lowest adjusted value as an optimal travel itinerary; and selecting the optimal travel itinerary and each travel itinerary having the adjusted value within a first predetermined amount of the adjusted value of the optimal travel itinerary for inclusion in the first set of near-optimal travel itineraries.
14. The method of claim 13 further comprising:
for each value profile, defining a second set of near-optimal travel itineraries to include the optimal travel itinerary and each travel itinerary having the adjusted value within a second predetermined amount of the adjusted value of the optimal travel itinerary, wherein the second predetermined amount is higher than the first predetermined amount.
Date Re9ue/Date Received 2021-03-29
15. The method of claim 14 further comprising:
for each travel itinerary in the first set of travel itineraries that has not been added to the second set of travel itineraries, summing the weight of each value profile that includes the travel itinerary in the second set of near-optimal travel itineraries to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and adding the travel itinerary having the second sum with the highest value to the first set of travel itineraries.
16. The method of claim 14 further comprising:
for each value profile, determining a number of travel itineraries in the second set of near-optimal travel itineraries that are included in the second set of travel itineraries;
for each value profile wherein the number of travel itineraries exceeds a threshold, reducing the weight of the value profile;
for each travel itinerary in the second set of travel itineraries that has not been added to the first set of travel itineraries, summing the weight of each value profile that includes the travel itinerary in the second set of near-optimal travel itineraries of the value profile to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and adding the travel itinerary having the second sum with the highest value to the first set of travel itineraries.
Date Re9ue/Date Received 2021-03-29
17. The method of claim 14 wherein the plurality of value profiles comprises a probabilistic profile, and further comprising:
determining whether the probabilistic profile is exhaustive or non-exhaustive, wherein the second set of near-optimal travel itineraries is defined in response to a determination that the probabilistic profile is non-exhaustive.
18. The method of claim 10 wherein the travel itineraries in the first set of travel itineraries comprise first search results based on a first probabilistic profile, the traveler is associated with a second probabilistic profile, and further comprising:
determining a distance between the first probabilistic profile and the second probabilistic profile;
in response to the distance being greater than a threshold, launching an online search for additional travel itineraries based on the second probabilistic profile;
and enriching the first set of travel itineraries with at least a portion of the additional travel itineraries returned by the online search.
19. The method of claim 18 wherein enriching the first set of travel itineraries comprises:
adding the additional travel itineraries to the first set of travel itineraries to generate a composite set of travel itineraries;
for each value profile, defining a second set of near-optimal travel itineraries from the composite set of travel itineraries;
for each travel itinerary in the composite set of travel itineraries, summing the weight of each value profile that includes the travel itinerary in the second set of near-optimal travel itineraries of the value profile to generate a second sum;
compare the second sums to determine the second sum with the highest value;
and Date Re9ue/Date Received 2021-03-29 adding the travel itinerary having the second sum with the highest value to the first set of travel itineraries.
20. A computer program product for processing a first set of travel itineraries in a database to define a second set of recommended travel itineraries for a traveler, the computer program product comprising:
a non-transitory computer-readable storage medium; and program code stored on the non-transitory computer-readable storage medium that, when executed by one or more processors, causes the one or more processors to:
for each value profile of a plurality of value profiles, determine an adjusted value of each travel itinerary in the first set of travel itineraries using the value profile;
for each value profile, define a first set of near-optimal travel itineraries from the first set of travel itineraries based on the adjusted value of each travel itinerary;
for each travel itinerary in the first set of travel itineraries, sum a weight of each value profile that includes the travel itinerary in the first set of near-optimal travel itineraries of the value profile to generate a first sum;
compare the first sums to determine the first sum with the highest value; and add the travel itinerary having the first sum with the highest value to the second set of travel itineraries.
21. The apparatus of claim 1 wherein each value profile of the plurality of value profiles includes a coefficient corresponding to a characteristic of each travel itinerary in the first set of travel itineraries.
Date Re9ue/Date Received 2021-03-29
22. The method of claim 11 wherein each value profile of the plurality of value profiles includes a coefficient corresponding to a characteristic of each travel itinerary in the first set of travel itineraries.
Date Re9ue/Date Received 2021-03-29
CA2925679A 2015-04-14 2016-03-31 Selecting search results for responding to search query Active CA2925679C (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP15290103.9 2015-04-14
US14/685,681 US10007957B2 (en) 2015-04-14 2015-04-14 Selecting search results for responding to search query
EP15290103.9A EP3082077A1 (en) 2015-04-14 2015-04-14 Selecting search results for responding to search query
US14/685,681 2015-04-14

Publications (2)

Publication Number Publication Date
CA2925679A1 CA2925679A1 (en) 2016-10-14
CA2925679C true CA2925679C (en) 2021-11-30

Family

ID=57122291

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2925679A Active CA2925679C (en) 2015-04-14 2016-03-31 Selecting search results for responding to search query

Country Status (3)

Country Link
KR (1) KR102311526B1 (en)
AU (1) AU2016202297B2 (en)
CA (1) CA2925679C (en)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862357A (en) * 1987-01-28 1989-08-29 Systemone Holdings, Inc. Computer reservation system with means to rank travel itineraries chosen in terms of schedule/fare data
US20120089406A1 (en) 2010-10-11 2012-04-12 Steven Ladd Huffman System and method for grouping trip itineraries
KR20130115004A (en) * 2012-04-10 2013-10-21 이호철 System and method for booking airline ticket
US20130290324A1 (en) 2012-04-26 2013-10-31 Amadeus S.A.S. Categorizing and ranking travel-related database query results
JP2015018545A (en) 2013-06-11 2015-01-29 株式会社ジェイティービー Travel information management device and travel information management method

Also Published As

Publication number Publication date
KR102311526B1 (en) 2021-10-13
AU2016202297B2 (en) 2021-08-12
AU2016202297A1 (en) 2016-11-03
KR20160122648A (en) 2016-10-24
CA2925679A1 (en) 2016-10-14

Similar Documents

Publication Publication Date Title
US10007957B2 (en) Selecting search results for responding to search query
US6263315B1 (en) Revenue management system and method
WO2018024844A1 (en) Interactive platform for the exchange of commoditized products
JP2015518216A (en) Classification and ranking of travel-related search results
US20140136247A1 (en) Use of group materialization rate to release inventory space
CN107527103B (en) Data warehouse for mining search query logs
US20140278614A1 (en) Alternative travel recommendations
US20150142482A1 (en) Search engine for identifying business travel proposals
US10089381B2 (en) Methods, systems, and computer program products for implementing a classification database
EP3082077A1 (en) Selecting search results for responding to search query
CA2925679C (en) Selecting search results for responding to search query
US20160086102A1 (en) Corporate recognition for travel related services
US20180040066A1 (en) Interactive platform for the exchange of commoditized products
US20170364932A1 (en) Data warehouse for mining search query logs
US20160155139A1 (en) Interacting with a database storing discounts
AU2015227443A1 (en) Corporate recognition for travel related services
CA2975794A1 (en) Personalized ranking for search results of a travel-related database query
EP2733649A1 (en) Use of group materialization rate to release inventory space
EP3089094A1 (en) Implementing a database of pricing records
CA2870642A1 (en) Search engine for indentifying business travel proposals
EP2874109A1 (en) Search engine for identifying business travel proposals
WO2016128121A1 (en) Methods, systems, and computer program products for implementing a classification database
US20170206476A1 (en) Group allotment of network capacity
US20160321344A1 (en) Implementing a database of pricing records
AU2016201046A1 (en) Use of group materialization rate to release inventory space

Legal Events

Date Code Title Description
EEER Examination request

Effective date: 20210329