US20010054020A1 - Method and apparatus for dynamic information connection engine - Google Patents

Method and apparatus for dynamic information connection engine Download PDF

Info

Publication number
US20010054020A1
US20010054020A1 US09/815,836 US81583601A US2001054020A1 US 20010054020 A1 US20010054020 A1 US 20010054020A1 US 81583601 A US81583601 A US 81583601A US 2001054020 A1 US2001054020 A1 US 2001054020A1
Authority
US
United States
Prior art keywords
information
user
supplier
server
client
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.)
Abandoned
Application number
US09/815,836
Inventor
Brian Barth
Lawrence Gunn
Glen Ivey
Marcel Janssens
Stewart Kelly
Yingmei Lavin
Brent Stewart
Gary Waldman
Philipp Winkler
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.)
Sidestep Inc
Original Assignee
Sidestep Inc
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 to US09/815,836 priority Critical patent/US20010054020A1/en
Application filed by Sidestep Inc filed Critical Sidestep Inc
Assigned to SIDESTEP, INC. reassignment SIDESTEP, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: IVEY, GLEN E., BARTH, BRIAN E., GUNN, LAWRENCE A., JANSSENS, MARCEL D., STEWART, BRENT J., WINKLER, PHILIPP M.B., KELLY, STEWART A., LAVIN, YINGMEI
Publication of US20010054020A1 publication Critical patent/US20010054020A1/en
Priority to US10/903,623 priority patent/US7349894B2/en
Priority to US11/067,547 priority patent/US20050234853A1/en
Priority to US11/091,852 priority patent/US7774331B2/en
Priority to US11/120,484 priority patent/US7483883B2/en
Priority to US11/120,401 priority patent/US20050262064A1/en
Priority to US11/128,029 priority patent/US20050234559A1/en
Priority to US11/201,376 priority patent/US7627606B2/en
Priority to US11/203,885 priority patent/US20060080298A1/en
Priority to US11/273,784 priority patent/US20060123012A1/en
Priority to US11/367,552 priority patent/US7668811B2/en
Priority to US11/870,909 priority patent/US20080033770A1/en
Priority to US12/819,997 priority patent/US20100268623A1/en
Priority to US13/207,863 priority patent/US8458162B2/en
Priority to US13/745,122 priority patent/US8738599B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • 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/02Marketing; Price estimation or determination; Fundraising
    • 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]
    • 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]
    • G06Q30/0613Third-party assisted
    • 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]
    • G06Q30/0623Item investigation
    • 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]
    • G06Q30/0623Item investigation
    • G06Q30/0625Directed, with specific intent or strategy
    • 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]
    • G06Q30/0623Item investigation
    • G06Q30/0625Directed, with specific intent or strategy
    • G06Q30/0627Directed, with specific intent or strategy using item specifications
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Definitions

  • the present invention relates to systems used to find and present information from multiple sources, and more particularly, to systems that find information on the Internet from suppliers or purchasers of goods, services, or commodities and present that information to potential purchasers or suppliers performing comparisons.
  • search systems that address very narrow collections of data are the “captive” search systems that are built into/for individual web sites, and allow users of the web site to find desired information within the specific site.
  • these systems are useful implementations of these systems available, often having user interfaces that can be customized to reflect the contents of the site.
  • these search systems are usually not helpful in performing comparisons because individual web sites are typically maintained by individual companies, so the same search operation does not return comparable data.
  • a typical search engine that purports to search the entire web operates by first building a local database that describes the contents of the searched web sites, and then searches that database in response to user queries.
  • Search systems of this type differ primarily in the way they determine which pages of data from which sites are to be added to the database, and in how the database is managed and condensed, as it is impractical in most cases to keep an entire copy of the search range on the search system.
  • Systems of this type typically repeat the process of gathering data from the Internet periodically in order to update the local database so that it accurately reflects the contents of the various web sites searched.
  • Search systems that target a specific type of data operate like the systems that address very narrow collections of data and the systems that operate by building a local database in that they must gather data from the Internet before users can make requests of the search system.
  • the data gathered is generally filtered to determine if it is the desired type. This can either be done implicitly by the search system operators manually creating a list of the web sites that should be searched, or explicitly by an automated portion of the search system.
  • Most existing comparison shopping search systems work in this way.
  • Another aspect of existing Internet search practice is the technique of processing individual web pages using automated systems to extract desired data, where the web pages typically include HTML source text and are intended to be presented to a human user.
  • this technique is used by the systems that operate by building a local database and the systems that target a specific type of data because they have to differentiate HTML formatting directives from text content that is to be searched and from the URLs of other referenced Internet objects that may be the target of subsequent database building.
  • scraping the more detailed and specific process of analyzing a web page for a particular piece or type of data, often referred to as scraping, is not employed by most search systems. There are many systems, both for searching and for other purposes, that employ scraping. However, many scraping implementations have less-than-desirable performance and/or search characteristics and are unsatisfactory for applications in which scraping would otherwise be a viable technique to employ.
  • a method and apparatus are provided for a dynamic information connection engine, wherein user actions are detected on at least one client system.
  • a determination is made whether the user is searching for supported information.
  • information is extracted electronically from third party web sites, direct supplier connections, and intermediate databases.
  • Potential information suppliers are automatically selected in response to the detected user search.
  • Queries are formulated from the user search and transferred to each selected supplier over a network coupling.
  • the queries include a request for information.
  • Responses are received from the suppliers, and the responses are used to generate a result list for the user.
  • the result list includes information and query status information.
  • an electronic link may be provided to a web site of each supplier from which the information was derived.
  • FIG. 1 is a block diagram of transaction system architecture of an embodiment.
  • FIG. 2 is a block diagram of a transaction system process flow of an embodiment.
  • FIG. 3 is a flow diagram of a dynamic information connection engine of an embodiment.
  • FIG. 4 is a block diagram of the server organization of an embodiment.
  • FIG. 5 is a block diagram of a transaction process flow of an embodiment.
  • FIGS. 6A and 6B diagram user operation and information flow of a search system of an embodiment.
  • FIG. 7 is a block diagram of a load balancing arrangement of an embodiment.
  • FIG. 8 shows a client system organization of an embodiment.
  • FIG. 9 diagrams a flow of supplier cookies of an embodiment.
  • FIG. 10 is a diagram of a Copilot Servlet organization of an embodiment.
  • FIG. 11 shows a data analysis adapter configuration of an embodiment at a data warehouse.
  • FIG. 12 shows a data analysis adapter configuration of an embodiment at a server site.
  • the method and apparatus of an embodiment gathers, processes, and delivers information relevant to implicit or explicit user queries.
  • An embodiment of the dynamic information connection engine, or search system specifically addresses, but is not limited to, systems where the user queries are travel itineraries or descriptions associated with a desired trip, and where the information includes different travel options that fit the itinerary and which the user can purchase. These travel options include, but are not limited to, airline, hotel, and car rental information.
  • This system is easy and inexpensive to implement and maintain, and provides lower distribution costs.
  • the system of an embodiment promotes relationships with brand-loyal customers while also increasing awareness of other available suppliers through extensive comparison capability.
  • the system supports the capture of data on consumer and competitor behavior.
  • FIG. 1 is a block diagram of a transaction system architecture 100 of an embodiment.
  • the system architecture 100 includes one or more system servers 102 coupled among at least one client space 104 or client device 110 - 116 and at least one participating product supplier and informational web site 106 via at least one network 108 .
  • the client devices 110 - 116 include, but are not limited to, computers, personal computers, portable computing devices including hand-held computers, personal digital assistants, and cellular telephones.
  • the client devices 110 - 116 may host standard web browsers as well as custom applications software.
  • the network 108 includes, but is not limited to, wired networks, wireless networks, and combined wired and wireless networks.
  • the transaction system architecture 100 accommodates an optional firewall.
  • FIG. 2 is a block diagram of a transaction system process flow 200 of an embodiment.
  • a user browses the Internet 201 using a client 202 or client computer.
  • the user accesses 210 a World Wide Web site 204 , or web site, in order to shop for a prospective purchase.
  • the client software tracks the user's actions, reporting 212 a subset of these actions to the system server 206 , or server.
  • the server 206 collects this information and retains it for future use.
  • the server 206 also immediately analyzes the user action and, in response, makes electronic requests 214 , or shadow requests, to product and information suppliers 208 , or suppliers, to obtain relevant data.
  • the shadow request communicates the key elements of the action being taken by the user.
  • the server 206 receives responses 216 from the various product and information suppliers 208 available online.
  • the server 206 evaluates the responses and formulates a response for the user.
  • the response is transmitted 218 to the client 202 .
  • FIG. 3 is a flow diagram 300 of a dynamic information connection method of an embodiment.
  • User actions are detected on at least one client system or access device 302 .
  • a determination is made whether the user is searching for a supported type of information 304 .
  • information is extracted from user actions 306 .
  • Potential suppliers are automatically selected by a server in response to the product information 308 .
  • Queries are formulated using the product information and transferred to each selected supplier over a network coupling 310 .
  • the queries include a request for product purchase information.
  • Responses are received from the suppliers, and the responses are used to generate a result list for presentation to the user 312 .
  • the result list includes product purchase information and query status information.
  • an electronic link is provided to a web site of each supplier from which the product can be purchased.
  • FIG. 4 is a block diagram of the server organization 400 of an embodiment.
  • Servlets including a Start Servlet 402 , a Load Balancing Servlet 404 , a Copilot Servlet 406 , and a Web Relay Proxy Servlet 408 , along with a factory infrastructure 410 and server databases 412 support the bulk of the server processing, but the system is not so limited.
  • FIG. 5 is a block diagram of a transaction process flow 500 of an embodiment.
  • the system supports couplings among numerous clients 502 , third party systems 504 , search-specific interfaces 506 , provider web sites 508 , server sites 510 , and data warehouse 512 or database sites using at least one network 514 .
  • the network 514 includes any of a number of networks, for example, the Internet.
  • the system of an embodiment includes separate client and server portions, although this division is not a necessary part of the invention.
  • the different types of communication between the client 502 and server 510 are ordered top-to-bottom to match the sequence with which these types of communication are performed by any particular client 502 . At any one time, there will typically be a large number of clients 502 communicating with each server system 510 as represented by the stack of clients 502 .
  • the user interacts with a client to input the itinerary and to view the results, while the gathering and processing of the information is performed on a central server.
  • a client to input the itinerary and to view the results
  • the gathering and processing of the information is performed on a central server.
  • Alternate embodiments could perform all of the processing in the system with which the user directly interacts, or the controlling decisions about what data should be gathered and processed could be made by the central server but with the actual gathering carried out by the client systems in order to alter the over-all usage of network bandwidth required by the system.
  • the client system of an embodiment incorporates a standard World Wide Web (web) browser (HTTP-protocol client).
  • web World Wide Web
  • HTTP-protocol client This provides a simple, standardized mechanism for actually displaying results.
  • the browser is also used to view the web sites of travel suppliers when the user decides to purchase one of the travel options presented.
  • HTTP Hypertext Transfer Protocol
  • the server portion of the system is composed of a set of servlets accessed by the client making GET and POST HTTP transfer requests.
  • a servlet is an ongoing process that services some requests received by a web server.
  • the servlets are written in Java, but are not so limited.
  • the Start Servlet handles the initial communication with a client that is just starting a session. Not only may the user's system that hosts the client be turned on and off repeatedly, but the actual client subsystem may not be used each time the user starts his/her system. Therefore, the server portion of the invention is capable of handling a number of separate start/initialization cycles of each different client over the client's life span.
  • UID client-generated user identification number
  • SIDs session IDs
  • GUID Windows Globally Unique Identifier
  • OSF's Open Software Foundation's
  • UUID Universally Unique Identifier
  • DCE OSF Distributed Computing Environment
  • the client After the client has initiated communication with the server by making a request to the Start Servlet, the client makes a subsequent request to the Load-Balancing Servlet.
  • the Load-Balancing Servlet determines which of the potentially multiple server systems at a particular location is in the best position to serve future requests for information coming from the requesting client.
  • the Copilot Servlet is responsible for the fulfillment of most other information requests from the client.
  • the Copilot Servlet receives requests from the client any time the web browser with which the client is integrated is navigating to a Uniform Resource Locator (URL), or information identifier, which the client determines (more on the mechanism below) may be a request for travel information.
  • the servlet responds to these requests in one of two ways, depending on the client's HTTP request.
  • the server informs the client of this and no additional processing takes place.
  • the type of URL/request screening performed by the client prior to making a request of the Copilot Servlet could use different criteria, but the step could still be performed.
  • the other situation is the one in which the URL/request does contain itinerary information with which the server can search for and present information.
  • the server fulfils the request over a period of time.
  • the server sends back a flag indicating that more information will be following.
  • the HTML and JavaScript template of the page that will be used to display the information found is also presented. Further, the related information is presented incrementally as it is found.
  • the client is implemented as a collection of ActiveX objects which are designed specifically to operate with the Microsoft Internet Explorer (IE) browser under operating systems that support the ActiveX object technology, essentially only recent releases of Microsoft Windows.
  • IE Microsoft Internet Explorer
  • the Bar can be displayed on any portion of the browser window or in its own window and is, therefore, not limited to the left side.
  • the visible, on-screen area occupied by the Bar is filled with a browser control.
  • a browser control is similar to the active display area of the IE web browser, stripped of all of the menus, toolbars, and other user-interface objects normally present when IE is run as a stand-alone application.
  • the Bar makes use of this control to display its user interface and content, and the implementation of the client user interface is partitioned between the compiled software that makes up the Bar and other client ActiveX objects and the JavaScript embedded within the HTML displayed in the browser control.
  • the client Bar can be opened either explicitly by the user or automatically. It is opened automatically by the client when the client has made a request of the Copilot Servlet, and the Copilot Servlet has responded to the request with a flag indicating that more information will be sent.
  • the HTML that makes up the balance of the Copilot Servlet response is then displayed within the Bar.
  • the client If the user explicitly requests that the Bar be opened, the client generates a special URL and request for the Copilot Servlet. This request always returns the correct HTML and JavaScript source for the client user interface, so that the user may directly enter itinerary information for use in performing a travel search, rather than depending on the pages of a third-party web site to provide the itinerary-entry user interface.
  • the user accesses the search system of an embodiment using a computer hosting a client system.
  • the client is implemented as a collection of ActiveX objects. Users are provided access to the client by packaging the ActiveX objects into a Dynamic Link Library (DLL).
  • the DLL along with associated control files, resides in a cabinet (CAB) file so that it can be downloaded automatically from a web site.
  • CAB cabinet
  • the DLLs can be packaged as plug-in modules for a web browser so they can be downloaded and installed from a web site.
  • the web site from which the client is downloaded includes, but is not limited to scripting to detect the type of browser with which the user is accessing the site, so that they can be informed of the level of support for their browser and/or so that they can automatically be directed to the correct download file for their browser.
  • the web site also includes a user interface to collect registration information from the user and pass it to the client for transmission to the server for inclusion in the user's database entry. Additionally, the web site includes a final URL that causes the Bar to automatically open.
  • one of the ActiveX objects that make up the client contains Automation Methods that can be called by JavaScript software within the web pages of the client-installation web site. These methods can be used by the web site to find out configuration information about the user system that is not ordinarily available, so that it can be used to give the user more customized information about the client operation.
  • FIGS. 6A and 6B diagram user operation and information flow 600 of a search system of an embodiment.
  • the information is transferred among a Bar sub-window 602 and a browser window 604 of a client computer, at least one component of a server system 606 , at least one third party server 608 , and at least one supplier web site 610 .
  • the transaction system locates and presents information relevant to a user request.
  • user requests include the itineraries for a potential trip, and the information returned includes available, purchasable travel alternatives that meet the requirements of the itinerary.
  • the general flow of processing for each request or itinerary begins when the user enters itinerary information through the client user interface or through an itinerary-entry page of a web site.
  • the itinerary information is transferred from the client to the server.
  • the server reviews the itinerary information and determines the travel-suppliers that are most likely to have relevant and available purchasable options.
  • the server couples to the appropriate systems of selected travel suppliers and makes queries about the available travel options matching the itinerary.
  • the couplings to travel suppliers can be made numerous ways including, but not limited to, requesting pages from their web sites and extracting information from the pages returned as shown in FIGS. 6A and 6B, and using a proprietary connection intended solely for inquiries from the search system.
  • an intermediary can be used that also contains information about the travel supplier's inventory, for example a Global Distribution System (GDS) database.
  • GDS Global Distribution System
  • the server returns boiler-plate data display and formatting information to the client. As results are received from each queried travel supplier, they are evaluated and processed for possible transmission to the client along with search progress status information. When all results have been received from the queried travel suppliers, final “search complete” status information is sent to the client.
  • the transaction system of an embodiment automatically detects and interprets user requests for relevant types of information.
  • most existing information search systems require the user to explicitly provide their request to the system, typically by entering information into a web page. While this is also an option in the transaction system, the transaction system is also capable of detecting other user actions and interpreting them as implicit requests for information.
  • information is accumulated from a sequence of actions up through a final trigger event.
  • the triggering event might be the activation of a submit-type control on the final page.
  • the system can use all of the entered information to determine if the final user action (the submit) should be used to start a search.
  • this example is neither the least nor most complicated instance of monitoring user actions that might be used in the system.
  • Other examples of user actions/input that might be used include, but are not limited to: detection of the selection of a single control or sequence of controls that indicate an interest in a supported type of information; entry of information by the user in a control or sequence of controls; entry of information through natural-language or N-gram techniques; selection of a pre-existing set of information as identifying the user's interest.
  • client systems are computer systems in which the user provides input through typing and/or pointing devices, any means of user input may be used with the search system including, but not limited to, handwriting recognition and voice recognition.
  • the monitoring of user activity in an attempt to recognize actions that indicate a desire for the type of information that the system has been implemented to collect and present, is accomplished hierarchically, but is not so limited.
  • the client is primarily responsible for monitoring user actions.
  • the primary mechanism for this monitoring is capturing the user web browser requests for new pages, although other mechanisms could be used to achieve the same result or slightly different results for implementations designed to search for other types of information.
  • the monitoring is accomplished through a Component Object Model (COM) interface. This interface captures each URL, or navigate event, that the browser is about to fetch.
  • COM Component Object Model
  • the first step in determining if the user is trying to find information about travel alternatives is to compare the root portion of the URL with a list of strings maintained by the client. This list is stored in the Windows registry, a system database of configuration information, and can be updated by the server when it is out of date.
  • a URL requested by the browser matches one of the partial URL strings stored by the client, the client forwards it (and possibly the associated data if the user's browser is making a POST request) to the Copilot Servlet portion of the server for further processing.
  • the server determines if a particular user request is a request for travel information and contains enough information to be considered an “itinerary” that can be used for a search. While the simple string comparison against the URL is adequate for the needs of the travel-information searches, other embodiments may use a different first-level analysis of user operations, as determined by the complexity of the information needed to perform the search.
  • the transaction system also accommodates a user providing their request directly to the system with the entry of itinerary information into a web page.
  • the user enters itinerary information directly into the HTML form that is part of the client user interface. This is possible either when the user has opened the Bar explicitly or after it has automatically opened in response to a previous user action/input.
  • a session starts the first time after the client has stated a need to contact the server, and continues either until one of the systems timeout periods expires or until the user takes an explicit action that shuts down the client.
  • the installation of an embodiment comprises several operations that generally occur the first time the client starts after it has been installed and/or the first time a new client installation connects to the server.
  • the client when first installed on a system the client creates a GUID to serve as the client's permanent ID number.
  • the User ID is actually specific to a particular operating system installation rather than to an actual individual user.
  • the client attempts to make a connection to the server, starting a logical “session”, only after it reaches a point where it needs information from the server in order to continue.
  • the two cases in which this occurs are: the user explicitly opens the Bar causing the client to need the HTML/JavaScript source for the user interface to be displayed; and, the client detects the browser attempting to load from a URL that is a candidate for containing an itinerary, in which case the URL (and possibly associated POST data) must be sent to the server for further analysis.
  • the software checks for the existence of a connection from the client system to the Internet or other coupled network before attempting to communicate with the server. Since attempts to communicate with the server would fail in this condition anyway, this check prevents wasted processing and error-recovery.
  • the UID is not required to be strictly permanent.
  • the UID is stored in the Windows registry (a system database of configuration information) and therefore subject to accidental or intentional deletion.
  • Windows registry a system database of configuration information
  • the only aspects of the system that are impacted are: the ability to correlate user operations performed with the old UID and those performed with the new UID; and, the ability to retrieve the user's previously selected/specified personalization options.
  • the client forwards it to the Start Servlet when it initiates contact.
  • the server database records keyed by the UID also contain user personal information. This information can be manipulated by the user through the user interface presented in the Bar.
  • Personal information is used to control different aspects of the client behavior and of the server behavior toward a particular user.
  • the personal information controls whether a software client will be automatically updated if a newer client version is available. It can also be used to guide the information search performed by the server.
  • the personal information can contain things like suppliers the user wishes to avoid, preferred ticket classes, senior citizen status, and other information that results in the availability of lower-cost fares.
  • a client In coupling to the server, a client creates a session identifier (SID). This is another 128-bit, universally-unique identifier. The SID is transferred in all future transmissions from the client that are part of the same session. The SID allows the server to distinguish semi-simultaneous requests made by different clients and between requests originating from different browser windows on the same client.
  • SID session identifier
  • the first exchange between the client and server in a session is when the client performs an HTTP POST transaction with a destination URL that specifies the Start Servlet.
  • This POST transaction transmits data including the UID, the SID, the personal information provided by the user (if it has not been previously transmitted), and the client's current version number.
  • the Start Servlet returns several pieces of information including the version number of the latest client release, the version number of the lists of partial-URL strings stored by the client, and those items from the personal information associated with the transmitted UID that affect client operation. If the version number of the latest client release is larger (later) than the receiving client version number and the user has elected to receive client updates, the client undertakes downloading and installing the latest client version in parallel with subsequent primary operations. If the version number of the lists of partial-URL strings is larger (later) than the receiving client version number, the client downloads new copies of the out of date lists. These lists are used by the client to determine which URLs are candidates for itineraries and are to be forwarded to the server, and which URLs indicate the completion of a purchase by the user.
  • the Start Servlet also performs several internal housekeeping functions. It verifies that the supplied UID already has a matching record in the server database, and creates a record if it does not. It also creates a “Session Info” object which will persist on the server for as long as the session remains active.
  • FIG. 7 is a block diagram of a load balancing arrangement 700 of an embodiment.
  • the client system 702 is coupled to at least one server site 704 using at least one network coupling 706 , for example via the Internet.
  • Load balancing is accomplished using a server site internal network 708 or backplane, but is not so limited. Alternate embodiments can use numerous types of couplings among the server components of the search system.
  • the server portion of the system is made failure-tolerant and is scaled to supply the processing power and network bandwidth necessary to support large numbers of simultaneous users. This is accomplished using a number of separate, hierarchical mechanisms including, but not limited to, DNSs, load balancers, round-robin techniques, and redundant backup monitor systems.
  • the system uses a dynamic two-level form of load balancing, but is not so limited.
  • the first level of load balancing is accomplished through the Internet DNS service and directs traffic to various data centers around the world. Data centers are easily added or removed. The amount of traffic sent to each data center can be controlled to a level of approximately 1% of the total traffic.
  • the second level of load balancing balances the traffic within each data center (cluster) and uses a combination of typical load-balancing systems and system-specific balancing methods. This technique uses information including CPU and memory usage, network bandwidth usage, and number of current users of the individual CPUs in performing load balancing. A triple level of redundancy is built into the second level load balance.
  • the client uses a specific server name to which requests are directed.
  • server name is constructed dynamically by the client prior to making the first request of a session.
  • the server name is created by concatenating a number of string fragments.
  • a first string fragment is a string constant representing the fixed “base” part of the server name. Any string that is a legal Internet host name could be used. In an embodiment, the base string is “start”.
  • the next string fragment is a produced by the client.
  • the client generates a random integer in the range 0 to 99, inclusive. This integer is converted to a two-character string.
  • Another string fragment includes a string constant representing the naming domain within which the server systems are located.
  • the domain is of the form “.somename.com”.
  • IP Internet Protocol
  • multiple different host names may also be mapped to the same numeric IP address. This means that an entire block of hosts names, such as “start75.somename.com” through “start90.somename.com”, and therefore a statistically-predicable portion of the total client traffic at any particular time, can be directed to a single server system/location.
  • the client attempts to establish an HTTP connection with the server IP address.
  • an embodiment uses a typical load-balancing system to distribute the HTTP requests coming into an IP address across multiple individual server systems.
  • client HTTP requests made of the Start Servlet and Load-Balancing Servlet do not depend on any state stored on the server. This is important because with simple load balancing systems, there is no way to ensure that subsequent requests originating from the same client are directed to the same server without multi-processor support linking the various server systems. Note that while the SID is included in the data sent to these two servlets, the servlets do not make use of it for anything other than error-checking, because of the lack of session-to-server continuity present for these two servlets.
  • Each set of server systems serviced by a typical load balancer is also associated with one or more monitor systems. It should be noted that this designation is logical rather than physical, and a single computer system could serve both as a front end server and as a monitor, as well as fulfilling other rolls, such as the database server.
  • Monitor systems are responsible for: accepting periodically-transmitted loading statistics from each of the front ends; determining which front end systems have not reported statistics recently enough and which will therefore be considered “dead”; and, maintaining a circular list of the “not dead” front end servers, and returning the next server name from the list each time a server executing the Load-Balancing Servlet requests a server name to return to a client.
  • the monitor system is not responsible for notifying the load balancer of which servers are “alive” and “dead”. Instead, the load balancer uses its typical mechanism, such as making periodic checks of each server's network responsiveness with “ping”.
  • a client When a client is in the process of establishing a session it makes a new HTTP POST request to the Load-Balancing Servlet once it has received a response from the Start Servlet.
  • the data sent with this request is the UID/SID pair.
  • the Load-Balancing Servlet services this request by requesting the next available front-end server host name from the monitor system. It then returns the host name plus a set of configuration parameters to the client.
  • the configuration parameters include, but are not limited to: a flag instructing the client whether to use clear (HTTP) or encrypted (HTTPS) communication with the server for subsequent transactions; the client timeout period for terminating a session due to user inactivity; and, the path from which a new version of the client can be downloaded by an existing client, which is used if the “latest client” version number returned by the Start Servlet is larger than the requesting client's version number and the personal information returned from the server for the current UID allows automatic updating of the client to occur.
  • HTTP clear
  • HTTPS encrypted
  • the search system of an embodiment uses two separate host names that are DNS-mapped to the same front-end server. Thus, the system maintains two separate names for each front end server and returns the matched pair of names to the client. This configuration helps avoid delays in system responsiveness associated with WININET.
  • WININET In order to optimize network bandwidth utilization, it is common for typical systems to start multiple HTTP requests simultaneously. WININET is no different and is also capable of processing several requests in parallel. However, the details of its implementation cause it to place a cap on the total number of requests that can be simultaneously active to the same internet domain name. When software (IE, a browser control, or a client) issues a larger number of requests than this cap, WININET queues all but the first requests and starts them sequentially as in-process requests complete. In normal web-browsing operation, this leads to a relatively high-performance system.
  • IE a browser control, or a client
  • HTTP requests generated by the client consist not only of fetches for elements of the client's user interface but also exchanges of control data (candidate search requests, purchase requests, transactions for session opening, closing and “keep alive”, etc.). It is possible for the bar to need to exchange control information with the server while a user-interface update/reload is in progress. If this occurs, WININET may queue the control transactions behind the (typically larger and much less important) UI data fetches, causing a perceptible pause in the system's responsiveness to the user.
  • a search system of an embodiment based on WININET overcomes this problem by having two separate server names for each physical server (IP address) within a server site.
  • IP address physical server
  • this name pair is returned to the client by the Load Balance Servlet, one name is subsequently used for most URLs used to update the HTML displayed by the bar and the other is used exclusively for control transactions (usually POSTs to the Copilot Servlet).
  • both logical names evaluate to the same IP address when a DNS lookup is performed
  • WININET's cap for the maximum number of pending transactions is implemented in terms of the logical name only, so that it treats the two server names as entirely independent and each has its own cap, even though they are physically the same device.
  • the client ensures that control transactions are never queued behind user-interface updates.
  • server sites could be reorganized, in the event that it provides a performance improvement, into a set of servers that serve only static data and another set that run the servlets but do not serve the static data. With the structure described, such a reorganization could be performed in any combination of server sites at any time and completely transparently to the client systems.
  • each front end has a list of all the available monitors. If the monitor at the top of the list stops responding to the transmission of loading statistics or to requests for front end server names from the Load-Balancing Servlet, then the front end server will move on to the next monitor system on its list. In this way, if a monitor system fails, the associated front end servers will gradually change over to using the next, or live backup, monitor system.
  • each front end server sends a variety of loading information to the monitor server approximately once per second. This information is collected to provide statistics on the system's over-all operation, but could also be used as the input to a more complicated, dynamic algorithm for determining which front end server should be assigned a particular client session.
  • an alternate means for determining the server to which a particular new session is to be allocated takes into account the total number of active sessions on each server.
  • the round-robin mechanism is modified so that it allocates a session to a server only if that server already has fewer or the same number of active sessions as the server with the most active sessions.
  • a typical Java Virtual Machine and execution environment known as “Tomcat” is used to execute the servlets on the server systems.
  • Tomcat a typical Java Virtual Machine and execution environment known as “Tomcat” is used to execute the servlets on the server systems.
  • the server registers itself with the first monitor system on its list that will respond.
  • each front end server On each front end server is a process that periodically executes, collects performance and loading data, and transmits it to the current monitor system. This process executes at the rate of approximately once per second so that the transmission of performance data acts as a regular heart beat from the front end server that can be anticipated by the monitor system.
  • the performance data packet transmitted by the front end server heart beat includes information about the server CPU usage, the current free memory of the system, and the number of database queries that the front end has generated in the last second, but is not so limited.
  • an alternate implementation combines the functions and responsibilities of the Start Servlet and the Load-Balancing Servlet into a single servlet. This is possible because the client does not need any of the information returned from the Start Servlet in order to create its POST to the Load-Balancing Servlet. This alternate embodiment, thus, could provide an improvement in overall system performance because only a single client POST of information would be required and the servlet could return all of the necessary information in one response.
  • the client of an embodiment maintains numerous lists of strings that it uses to compare with the contents of different URLs. These lists can be updated from the server. These lists are stored in the Windows registry, although any persistent client storage could be used as effectively.
  • the search system automatically opens the Bar on the client browser and displays information relevant to the user's current activity.
  • One of the string lists maintained by the client contains partial URLs that the client matches against the URLs from which the user's browser attempts to load.
  • the client forwards the user browser request to the server for further checking.
  • This hierarchy serves to reduce the amount of client/server bandwidth that is consumed by monitoring URLs without unnecessarily complicating the operation of the client.
  • Another list of strings maintained by the client is used as part of the mechanism for monitoring whether the user makes purchases from the web sites of travel suppliers to which the system directs them, referred to as “buy tracking”.
  • This list contains a pair of strings for each entry.
  • the first string in the pair is the URL of a page on the travel supplier's web site to which users are directed on the completion of a purchase, typically a “receipt” page.
  • the second string in the pair is an extraction specifier.
  • the extraction specifier can specify the extraction of multiple distinct portions of a receipt page, including specifying a particular region/string within the receipt page that should be extracted and transmitted back to the server. The extraction may occur over a sequence of pages if the necessary purchase identification information is found in more than one page.
  • This string is typically a piece of data that uniquely identifies the purchase transaction. This can be used as proof to the travel supplier that the purchase transaction originated from a referral by the search system. This can also be used as the basis for a payment arrangement between travel suppliers, or other information suppliers, and the maintainer of the search system.
  • the client When the client makes a request to the Copilot Servlet it forwards a URL from the browser along with any associated POST data.
  • the server response is an HTTP response packet containing either: a single string “0”, indicating that a search cannot be performed based on the data transmitted and that there will not be more data from this request; or, the string “1”, indicating that a search has been started based on the data within the request.
  • the “1” is followed by the HTML and JavaScript source for the display of search results, followed by the results themselves.
  • the Copilot Servlet of an embodiment sends the processed search results to the client as they become available, along with status about the progress of the search.
  • the client receives the total number of travel suppliers that are to be searched, the number that have returned responses to the server search requests, and the total number of data items that have been found, processed, and sent to the client.
  • This status information is displayed for the user as it is received, in order to give the user the sense that things are progressing rapidly. This almost-immediate feedback to a search is a point of novelty in the search system.
  • An area within the Bar is used to display a vertically scrolling list that presents summaries of the search items found.
  • the items are placed into this list based on a user-selected sort order.
  • the display of airline flights for an itinerary can be sorted based on the ticket price, the number of stops, departure time, arrival time, trip time, or supplier.
  • the particular criteria on which the records can be sorted is less important than the fact that the records can be sorted based on a user-selected criteria and that the sort is performed on the client so that the system responds quickly to the user changing the sort selection for a progressing/completed search.
  • the client and server both track numerous types of time out periods.
  • the JavaScript that executes within the client Bar of an embodiment starts a time-out down counter each time a user action begins a new search. This counter is used to control the period of time in which the search results are considered valid, an important consideration when dealing with travel bookings, including airline tickets. As search results expire, any electronic links provided to the associated supplier over which the associated travel item or component could be reserved or purchased can be deactivated, but the system is not so limited.
  • the time out period of an embodiment is approximately 10 minutes, but is not so limited. However, this period must be closely related to the individual times that the travel supplier systems will hold a reservation for purchase after they respond to a query. Therefore, the period is likely to be radically different in systems designed to search for different types of information, as well as having to be updated from time to time within an embodiment. Because the timeout is within the JavaScript code, which is downloaded from the server each time the Bar is opened, it can be easily changed independently of having to create and distribute new clients.
  • This time-out is not needed in a system configured to search for information that is not time sensitive. For example, a system that searches for purchasable goods with rapidly-varying inventory levels would presumably use a time-out period to invalidate search results after some reasonable period. Alternately, a system that searches for reference information or for purchasable goods that are made-to-order (and which therefore do not have finite inventories) would not have to use a search-results time out. In another alternate embodiment the same user action triggers simultaneous searches for all available sub-categories (e.g., air, hotel, car) of the supported type of information (e.g., travel reservations).
  • sub-categories e.g., air, hotel, car
  • Separate searches can be performed by the user for airline reservations, rental car reservations, and hotel reservations.
  • the user selects among these three sets of search results using tab controls displayed in the Bar.
  • the client-side JavaScript is capable of maintaining separate sets of search results for each category, and has a separate time-out counter for each. It is therefore possible for the user to search for all three types of travel reservations, and for them to switch back and forth among the different result displays without interfering with the separate expiration counts on each set of search results.
  • the client may be explicitly turned off by the user closing related instances of their web browser.
  • one of the shut down operations performed by the client is to send a POST to the Copilot Servlet informing it of the end of the session.
  • the servlet frees its session-specific resources.
  • the client monitors user actions. Each user action performed that is related to the client's operation is used to reset a time out down-counter. If the user does not perform any operations before the time out expires, the client closes the session and notifies the server of the fact. In an embodiment, the timeout for this period is approximately 30 minutes, although it could be adjusted substantially without significantly compromising the system.
  • One other mechanism uses a server time out counter. This counter is reset by each transmission from the client. If the timeout period elapses, the server assumes that something has happened to the client, such as an unanticipated loss of power, and frees the resources associated with the current session ID (SID).
  • SID session ID
  • Each item or purchasable travel reservation that is found and reported to the user by the search system of an embodiment is displayed along with a “reserve” user-interface control or icon.
  • the client directs the user's web browser to the particular page of an associated supplier web site from which the user can complete the purchase of the selected item.
  • One system gathers information using a special-purpose interface between the system and the supplier servers. Another system gathers information by accessing a third-party database which contains information about the supplier. Still other systems gather information from suppliers through a web site designed primarily for direct interaction with individuals using web browsers.
  • part of the interface design includes the creation of a mapping between the information returned and a point (URL) within the supplier's web site.
  • URL point
  • the system should be capable of causing the supplier web sites to generate a purchase page corresponding to the user selection. In the simplest case, this entails creating a URL within the supplier web sites that contains information identifying the user selection. If the supplier web sites are not structured to use URLs that can be composed directly, then the system will have to generate a sequence of accesses to the supplier sites on the user's behalf in order to reach a point at which an appropriate purchase page is available.
  • This process is performed by a server component that is designed specifically to interface with a single supplier web site.
  • a system component that is designed to manage the interface to a single external system will be referred to as an adapter.
  • the system of an embodiment uses several different types of adapters in order to normalize different types of interfaces to external systems as discussed herein.
  • Search adapter is used herein to indicate a server component that gathers information about a supplier's offerings.
  • Reserve adapter is used herein to indicate adapters that generate queries to a supplier web site in order to ensure the existence of a purchase page corresponding to a user selection.
  • the most potentially-complicated case is the one in which information is gathered by a search adapter making direct requests from a supplier's web site/server which is designed to provide a human-usable interface. It should also be noted that many of the considerations for this case also apply to the operation of reserve adapters, as both reserve adapters and search adapters (that access a web site) can generate a unique state within the supplier web server to which the user's web browser must be given access.
  • the supplier web site is designed such that all of the information that the supplier server requires in order to generate a purchase page is encoded within the purchase page URL.
  • the user's web browser can be directed to the correct purchase page simply by the client instructing it to navigate to (load from) that URL.
  • the URLs for each purchase page of this type are transferred from the server to the client along with each search result item, so that the client can provide the “reserve” control's functionality completely without further client/server interaction.
  • some or all of the information required by the supplier web server to generate the desired purchase page is stored in cookies that are set when a previous page of the search sequence is returned by the web server.
  • cookies are set when a previous page of the search sequence is returned by the web server.
  • the adapter has to access several pages of the supplier web site in sequence, possibly emulating the operations of a human user filling out a data-entry form at one or more steps of the sequence.
  • the source for each web page returned to the search adapter by the web site there may be one or more cookies.
  • the adapter Because the adapter is interacting with the web server as if it were a web browser, it stores each cookie returned by the web server and transmits it back with the next request. However, since the web server depends on the values stored in the cookies in order to generate the correct pages, the cookies have to be transferred from the server to the user's browser when the “reserve” control is activated.
  • all of the cookies set by all of the web servers from which items were found are transferred to the client along with each data item. They are stored in the client and then, if the user selects a data item with associated cookies, the cookies are set in the user's browser prior to it being navigated to the associated URL.
  • the client is also supplied with a copy of the POST data created by the server for accessing the correct page.
  • the client can execute the hand-off to a supplier web site on its own, without further interaction with the system servers.
  • the system server includes a proxy capability, referred to as web relay.
  • web relay When the user selects a “reserve” control associated with a data item returned by such a server, the user's browser is navigated to a special URL handled by the system web server. The relay servers then fetch the matching pages from the supplier sites and present them to the clients. In order to provide a seamless navigation experience for end users, all subsequent navigation is routed through the relay servers because the user's session information related to a particular supplier is possessed by the servers rather than the user's client (browser).
  • a simple implementation of web relay/proxy could be created in which all operations are performed by the relay server and it operates only by identifying URLs contained in web pages and replacing them with URLs pointing to the relay server.
  • URLs will likely be within well known HTML tags, but others can be within quotes as part of a string inside of scripts, where the string can be referenced later in different parts of the page.
  • the system of an embodiment uses both the server and the client to detect URLs that should be rerouted through the web relay.
  • the client can capture all of the navigation events created by user actions in the main browser window before the browser actually begins to fetch data from the target URL.
  • the client can then modify the URL to route the navigation to the relay server before allowing the main browser window to fetch data.
  • the client also lightens the server load and improves system performance by requiring less extensive web page processing when the relay server forwards pages from the supplier web site to the client.
  • Another important feature of this system is that without the client side being present, the server is fully capable of routing the navigation on its own; in this case, it becomes a conventional relay server.
  • the system server/client web relay architecture consists of server-side preprocessing of web pages served and client-side real-time processing of navigation destination URLs. After a user selects a specific “reserve” user-interface control, the server will try to determine whether the client side is prepared to route navigation events through the relay server. If the server detects that client web relay is possible, the server hands off the responsibility for routing navigation through web relay to the client, and merely fetches (proxies) requested pages. If the server does not detect that the client can modify navigation URLs, the server scans each fetched page and processes all of the URLs in the page (as best it can) before serving it to the client.
  • the client portion of web relay relies on the web browser forwarding navigation events to the client, and the client's capability of capturing these events before they actually cause data to be read from the Internet. After capturing these events, the client redirects the browser navigation to the system relay servers with all of the necessary data. Then the relay servers fetch the correct pages from the supplier web site and send them back to the client.
  • the main advantages of using the client to modify/redirect URLs are that the client is theoretically able to catch all destination URLs used, regardless of how they are stored in a web page or when and where they are actually generated, and that distributing the processing required for redirecting URLs greatly relieves the processing load on the relay servers.
  • An embodiment of the relay client is implemented specifically for Microsoft Windows operating systems and the IE web browser. It uses the COM ActiveX interface provided by IE to intercept and modify navigation events generated by user actions in the main browser window. In general, any environment that provides a mechanism to capture and modify user navigation events could be used.
  • All of the functionality of the relay client is realized in an ActiveX browser helper object (BHO).
  • BHOs run in the same memory context as the browser and can detect any operation on the available windows and modules.
  • the relay client functionality is integrated into the same client BHO that contains the other portions of the client.
  • the client functionality related to web relay can also be implemented in a separate BHO.
  • the events that the BHO handles for the client portion of web relay include, but are not limited to, BeforeNavigate, NewWindow, and Document Complete.
  • the client captures the navigation events, checks whether the browser destination URL is already rewritten to point to the relay server. If not, and the URL does indicate the relayed supplier web site, the client rewrites the URL, cancels the current navigation, and initiates a new navigation event with the rewritten URL. Care should be maintained with the cancellation method used and, in so doing, the client maintains the original URL of the currently displayed document so that the client can anticipate and correct the problems.
  • a frame-organized display in a web browser is accomplished using one page that contains a frameset definition and URLs indicating the initial content for each frame of the frame set, and the separate pages identified by these URLs.
  • Handling of framed displays is accomplished by having the client ignore the BeforeNavigate event and letting the page containing the frameset load, unmodified, from its original URL on the supplier web site. All of the subsequent navigation (loads) to the individual pages displayed in the different frames of the frameset are then processed by the relay functions of the client BHO.
  • An alternate method for handling relay of the pages that make up a frame-organized display is for the relay server to modify the URLs, contained in the page with the frameset definition, for the individual pages that fill the display frames. This would ensure that, from the browser's point of view, all of the page components reside in the same Internet domain (that of the relay server). This prevents the security “sand box” restrictions imposed on JavaScript executed within the pages by the browser's interpreter from interfering with the page having the same operation as it does when not relayed.
  • the NewWindow event has the client capturing the lEs new window creation event.
  • the client When a user clicks a link in the displayed page that results in the creation of a new browser window, the client creates the new window itself so that it has full control of the new window, and will receive subsequent events generated from that window as well.
  • These windows generally are invoked by JavaScript URLs (or URLs expressed in other scripting languages supported by browsers). Therefore, in many situations, the URLs of the page intended to be displayed in the new window are not generated correctly due to the relayed location in the address Bar.
  • the client handles these cases by passing the parent page/window unmodified URL to the new browser window in order to recover (regenerate) the original (unmodified) URL of the new window, and subsequently issue a new navigation from the new window.
  • special care is necessary due to the differences in the various version of IE.
  • the client cannot issue a new navigation during the event handling of BeforeNavigate for the new window.
  • the client allows the first navigation event to be fetched unmodified to avoid having the browser hang. This is done even if the URL for the navigation is wrong.
  • the client can issue a new navigation with the correct URL after the previous navigation is complete.
  • the DocumentComplete event involves the client capturing this event to monitor the end of document loading in a browser window. If the client detects that this event occurs after the first document has loaded in a new browser window, the client verifies whether the loaded URL is the correct (relayed) URL or not. If the URL is incorrect, the client uses the current location (URL) of the parent (creating) window to reconstruct a valid, relayed URL.
  • the client and server are designed not to relay URLs used to load images and other embedded objects in the requested web page through the relay servers. These objects are instead loaded directly from the supplier web site. This is purely a performance optimization, and not a requirement for the system's operation.
  • the relay server may not obtain all of the necessary session information (usually stored in cookies) sent from the supplier web servers along with one or more of these objects (and not the pages forwarded to the client). Therefore, the client will check the cookie store in the user browser to make sure it finds and forwards back to the relay server all of the related session information.
  • the necessary session information usually stored in cookies
  • An embodiment of the web relay server is implemented using Java Servlet technology like the other server portions of the system. And, like the other servlets, the implementation of this system is not limited to any particular programming language or even to a software implementation. The selection of Java is to conform to the rest of the system. Any server technology should be able to fulfill this task.
  • the server When a request comes into a web relay server, the server first fetches the SessionInfo object (the same as used by the Copilot Servlet) stored in the system based on the specific UID and SID.
  • This SessionInfo object contains information related to the particular user session, including context information generated by search adapters accessing supplier web sites.
  • the relay server retrieves the information from the Sessioninfo object related specifically to this request, for instance, the cookies with the same domain as the requested web site. Also, the relay server handles session information sent with the request from the client, if any.
  • the relay server then makes a request, on behalf of the user browser, to the supplier web site. After the server fetches the requested page, it checks to see if this page is originated from the same location specified in the request or if the request was redirected to a different location.
  • the redirection can happen in three different cases, individually or in combination: the redirected location is at a different security level, for example, from http to https or vice versa; the redirected location is at a different domain; and, the redirected location is at the same domain but at a different path.
  • the relay server has to reopen the connection with the user browser using the correct (new) protocol to avoid introducing a security hole in the client/supplier communication link.
  • the returned page can have relative URLs that need to be resolved based on the redirected location rather than the original location, so the client responds by sending a redirection to the user browser to make sure that all objects in the page are loaded correctly and that the subsequent navigations from this page have correct URLs.
  • the relay server caches the fetched page so that when the client subsequently issues a new request based on the redirection, the server can forward this page immediately without fetching the page from the supplier web server again.
  • the server is ready to process the requested page.
  • the relay server first checks whether the client is actively modifying relayed URLs.
  • the relay client informs the server of its presence/activity by turning on the relay start switch in the page requests to the server. If the client is relaying, the server skips scanning and modifying the URLs in the page. Otherwise, the relay server processes the page contents received from the supplier web server, tries to find all the URLs possible in the page source, and modifies them so that they all point to the relay server.
  • the system While there are a number of business models supported by the system of an embodiment, and several different revenue streams that it could provide, the system is financially supported by payments received for each user purchase of travel reservations that occur as the result of the system referring a user to a travel supplier web site. Therefore, the system generates reliable records of user purchases supported with information that the travel suppliers will acknowledge as proof of purchases.
  • the portion of the system operations involved with detecting and logging user purchases is referred to herein as buy tracking.
  • the client stores a list of strings, periodically updated from the server, that are used to determine which user actions are considered user purchases.
  • This list contains two strings per entry.
  • One string is the URL of a supplier web page to which users are directed following a successful purchase.
  • the other string is an extraction specifier containing instructions to the client as to the data that should be extracted from the page with the URL and POSTed to the Copilot Servlet.
  • a user purchase transaction begins with the user being presented with a list of different travel options that the system found from a number of suppliers.
  • the user selects one of the presented options with the “reserve” control presented in the client Bar.
  • the client navigates the web browser to a purchase page on the selected supplier web site.
  • the user directly interacts with pages of the supplier web site, sometimes providing personal and/or payment information.
  • a supplier web site may deposit the user on a “receipt” page that contains some type of purchase tracking information, such as a confirmation number or order number, but is not so limited.
  • the client receives each URL that the browser attempts to fetch from the network. These URLs are compared against both of the URL lists that the client maintains. When the browser has navigated to a receipt page of a supplier web site, the page URL matches the buy-tracking list of URLs. In response to this match, the client interprets the extraction specifier string associated with the URL, and uses it to extract a string from the web page content received by the browser from the supplier web site. The extraction specifier of an embodiment is created such that this string will contain the confirmation number (or equivalent) for the purchase. The client POSTs the UID/SID, the URL within the supplier web site, and the extracted string back to the server where it is logged and used to create an invoice for the supplier.
  • the actual URL strings maintained by the client need not be exact/explicit URLs, but instead can be templates or regular expressions that match a family of actual URLs. This is convenient because some web sites incorporate user-specific or transaction-specific information in the URL which is not significant to identifying the pages that are receipt pages.
  • a significant aspect of the system's design is that, even though the client is integrated with the web browser, the system does not depend on the web browser to store state in cookies. Note that this is different from the cookies that the system places with the web browser on behalf of a supplier web site. Ignoring this type of cookie, which is used only for those particular suppliers whose web sites require it, the system does not need to set any cookies.
  • the state used in system operation is stored in a number of locations, but is not so limited.
  • One location where state information is stored is in the server, in the data-structure allocated for each SID.
  • state information is stored implicitly in the web pages (HTML and JavaScript) displayed within the Bar.
  • the server Copilot Servlet
  • content such as user-interface information or search results
  • the client/server system of an embodiment generates a significant amount of information, about the behavior of both users and suppliers. This information is reliably retained so that the correct operation of the system can be verified, the system can be further tuned/improved, and because comprehensive data about buying and selling habits is an asset of significant value.
  • HTTP server httpd
  • the httpd is responsible for determining whether each incoming request should be routed to one of the servlets, whether it is for a static piece of data (such as a graphic used by the client user interface displayed in the Bar), or for a page proxied from a supplier web site through a web relay.
  • each request from a client passes through an individual server system httpd and is logged, including some performance information and the response code the server returns to the client.
  • the Copilot Servlet also logs each request that is generated to a supplier, and all of the responses to that request.
  • the search system uses a form of database connection pooling for all database connections. Opening and closing connections to a database is an expensive operation. In order to improve performance, connections are created once and inserted into a pool. When the system requests a connection it is delivered from the pool. When the connection is released or no longer needed by the system, it is returned to the pool.
  • FIG. 8 shows a client system organization 800 of an embodiment.
  • the client is implemented for Microsoft Windows operating systems and the Microsoft IE web browser, using the ActiveX and Component Object Model (COM) architectures/technologies, but is not so limited. As such, there are many other system environments in which the client could be implemented.
  • the selection of the Microsoft-oriented environment for the client implementation is just a matter of economy and popularity (market-share), and does not implicate technological issues.
  • the client is implemented as a set of COM objects that are packaged together in a single Windows DLL 802 for installation and use.
  • BHO Browser Helper Object
  • the division of the client into these primary objects 804-808 and the different minor (non-COM) objects is an artifact of restrictions imposed by the architectures of IE, COM, and ActiveX and has nothing to do with the underlying architecture or functions of the client.
  • the BHO is created to extend IE.
  • IE searches a known area of the Windows registry for the GUIDs of registered BHOs.
  • Internet Explorer creates an instance of each BHO that it finds, which includes the search system client BHO.
  • the BHO couples to different portions of IE's COM interfaces so that it is notified of the user actions that must be monitored to determine if the Bar should automatically be opened.
  • the BHO monitors user actions until IE is terminated and the BHO is destroyed. Unless the BHO observes a match between a URL being requested by IE and one of the entries on the URL list, no other actions are taken.
  • Another task of the BHO is to manipulate the Bar object based on feedback from requests submitted to the server. For example, if the BHO observes a match between a URL the IE is requesting and the URL list, it opens a new session (if not previously accomplished) and forwards the requested URL to the Copilot Servlet for further checking. If the Copilot Servlet returns a “1” string, indicating that it has started a search, the BHO creates a Bar object and opens the Bar sub-window on the screen if it is not already visible. Further, alternate embodiments can implement other return codes or strings that result in other types of actions.
  • the BHO receives a URL that references the client's assigned (via load balancing) front-end server.
  • the BHO uses the COM interface with the Bar to cause the Bar to load from the specified URL, which gives the Copilot Servlet the opportunity to transmit the HTML and JavaScript that form the client user interface.
  • the BHO will again cause the Bar to navigate to the new, server-supplied URL.
  • the BHO is responsible for implementing the client-side session time out counter.
  • the BHO maintains the counter, resets it when it detects relevant user activity (based on IE's navigating to new URLs at user requests), transmits the end-of-session message to the server when the counter expires, and receives “reset counter” messages from the Bar when the Bar detects user activity (such as manipulating controls within the HTML user interface displayed by the Bar) of which the BHO is not directly informed.
  • the BHO also periodically provides messages to the Copilot Servlet informing it that the session is still in active use by the user. This prevents the server from timing out the session in the case where the user is performing actions that are entirely local to the client or that involve only a third-party or supplier web site and which, therefore, do not cause the client to send requests to the system server.
  • Bar COM objects are treated as a special type of extension by IE.
  • a Bar object can be listed in the Windows registry in such a way that IE automatically creates toolbar buttons and menu entries that correspond to the Bar. When the user selects one of these Bar-specific controls, IE automatically loads and initializes the Bar COM object, so that the Bar appears as a sub-window in the left hand side of the IE window.
  • the Bar object is capable of detecting whether the BHO object has already been created and initialized, or not, and of creating the BHO object if it does not already exist. While this should not be necessary, there are some cases where the BHO does not get created correctly when IE starts. Therefore, the Bar's ability to create the BHO ensures a working system at least from the point in time where the user explicitly attempts to open the Bar.
  • the Bar is responsible for the user-visible and user-interface aspects of the client.
  • the Bar object takes advantage of the browser control COM object that IE makes available.
  • the Bar object takes the area of the display screen for which it is responsible and fills it completely with a browser control.
  • the browser control behaves exactly like a web browser application, interpreting HTML, JavaScript, and all other data types supported by the IE installation, except that the browser control takes commands from the Bar software instead of having a user interface for them.
  • This structure allows the user interface of the client to be rapidly implemented, easily modified, and easily updated because the complete user interface is fetched from the server on a regular basis, just like any other web page viewed.
  • the Bar object receives notification of user actions that occur within the Bar browser control.
  • the Bar object With most of the appearance and behavior of the user interface encapsulated in the “softest” portions of the client (the server-supplied HTML and JavaScript), the Bar object must perform only those portions of the client operations that require access to the operating system or an IE software interface that does not have a JavaScript-equivalent.
  • Primary in this category are operations in which information or control is shared with the BHO, as there is no object in the JavaScript object model equivalent to either the generic, Microsoft-defined BHO interface or the BHO interfaces that are specific to the client implementation.
  • FIG. 9 diagrams a flow of supplier cookies 900 of an embodiment among suppliers 902 , system servers 904 , and the client/BHO 906 and web browser 908 of user systems 910 . It is noted that this flow diagram would be different for operational cases that do not use auto-open, that require web-relay for reserve/purchase, or that search a source other than a supplier web site.
  • Another key function performed by the client Bar is the handling of several types of cookies, including: cookies originally provided to the system server (search adapter) by a supplier web site that was searched; cookies sent to the client from the server along with data items that originated on the cookie-generating supplier web site; and, cookies set in the browser if the user selects the “reserve” control for a data item with associated cookies.
  • the client manipulates the browser cookie storage directly.
  • the server sends cookies from a supplier to the client, it modifies the name of the cookie first, so that the revised cookie name contains the original name plus the text string identifying the supplier internet domain.
  • the cookies from the supplier sites are stored as if they originated from the search system domain.
  • a “reserve”(purchase) control in the client user interface is selected by the user, the client retrieves all of the cookies stored regardless of their original domains. The client then processes the cookie names to remove the originating-domain information (originally added by the search server before transfer to the client).
  • An alternate embodiment has the client check each cookie to identify all cookies, based on their names, that should be set in the browser for the selected supplier web server.
  • the client processes the names to remove the domain information, and then calls an internal IE interface to set the cookies using the supplier web site domain as the domain to which the cookies should be sent. It is noted that the client does not “clean up” cookies that are stored on behalf of supplier web sites. Instead, if the user performs several searches, the cookies stored as the result of each later search replace the same-named cookies from earlier searches, so that the relevant cookie values are always current when they are needed.
  • An advantage of the cookie handling methods of an embodiment is its simplicity. By sending all of the cookies by the supplier web sites to the client along with their corresponding data items, in most cases the client can handle the user selection of a “reserve” control entirely on its own, without making a new request of the server. This means that in most cases the server can, after logging, discard all information and data structures related to a particular user search as soon as that search is completed, without having to coordinate with the client JavaScript's time out counter.
  • the exception to this case is supplier web sites that are accessed from the web browser by web relay through the system server. For these types of sites, the server maintains supplier-specific information in order to perform the relay and fetch pages from the supplier web site.
  • An alternate embodiment of the system handles cookies by maintaining the list of cookies that match each search result on the server. The client then makes a separate request to the Copilot Servlet to retrieve the cookies when and if the user activates a “reserve” control.
  • Another alternate embodiment stores the cookies in the client in a different manner. For example, in the HTML that is sent from the server containing each data item found during searching is placed a block of JavaScript or HTML that includes the name/value pairs for all of the cookies associated with that data item. When the “reserve” control is activated, the JavaScript code executing within the Bar unpacks this list and provides it to the Bar object to be set within the browser. This method is preferred to having the JavaScript code set the cookies, as it avoids any difficulties with setting cookies so that they appear to have originated from a domain other than the one that originated the page setting the cookies.
  • One internal object is of significance, although it would be unnecessary in an implementation of the client that did not use multiple COM objects. While it is possible for IE to create any of the COM objects that make up the client, and it is possible for the COM objects to create each other, it is very difficult to establish links between the COM objects that make up the client if IE creates more than one of them.
  • IE starts first, it then creates the BHO, and the Bar object is created later either by the BHO or by IE depending on whether it is opened automatically or explicitly by the user, respectively.
  • IE does not provide a mechanism by which BHO objects can find already-created Bar objects or vice-versa.
  • the BHO has no way of knowing if IE has already created a Bar before the BHO needs to open it automatically.
  • the Bar has no way to determine this so that it can create the BHO itself.
  • the client uses a small and well controlled work around of the typical COM communication paths: the client contains a link object which, due to its design and implementation, both the BHO and Bar COM objects can find and which they use as an intermediary to communicate with each other.
  • the details of the link object implementation depend both on COM and on the fact that the preferred embodiment is implemented in C++.
  • the link object class contains a number of global methods (which, unlike normal methods, may be called by software that does not already have a pointer to a link object instance). These methods are used by BHO and Bar objects to place pointers to themselves onto lists maintained within the (single) link object instance, and to retrieve pointers to the other type of object (BHO pointers for a Bar, or vice versa) from the link.
  • the Copilot Servlet examines it to determine if it contains enough information to start a search. This process is performed by an input adapter module that is specific to the web page in which the user entered information, whether it was part of the client user interface or a third-party web site. If the request does not contain enough information or is not actually a search request, a “0 is returned to the client and processing terminates. If it does, a “1” is returned and processing continues with the next step. Further, alternate embodiments can implement other return codes or strings that result in other types of actions.
  • the Copilot Servlet determines a set of supplier systems to search in an attempt to find items that best satisfy the received itinerary. The determination is made using information including, but not limited to, the contents of the information received in the request, the user's personal information, the user's current selections in the client user interface (if the Bar is open), the recent history of searches and the amount of bandwidth the searches have recently used on each supplier system, and the history of prior searches of similar types by similar users.
  • the Copilot Servlet acquires a set of search adapter objects from an internal resource pool, and tasks one to search each of the selected suppliers. Each search adapter performs its search independently and asynchronously from the others, so that the subsequent steps in the Copilot Servlet processing sequence can handle incremental search results.
  • the server performs post-processing on the search results received.
  • Post-processing is used to reduce the number of results that are presented to the user below the number of raw results found from the various suppliers. This is done in order to reduce the amount of data that the user has to sift through by providing only those results that are most likely to be selected.
  • This determination can be based on many criteria. For example, in the realm of air travel fares, many carriers quote fares much higher (3 ⁇ or more) than their competition on some routes. Since it is very unlikely that a user would select these particular travel options in the face of the competition, the server is best serving the needs of the user by not cluttering the list of results with this type of item. In addition, the server can take into account factors including, but not limited to: the user's explicit preferences, as indicated by the personal information entered; the user's implicit prioritization, as indicated by the current sort-order selection in the client Bar; the particular user's past purchasing decisions when presented with similar options; and, the past purchasing decisions of aggregate groups of users presented with similar options.
  • the simplest method is to generate a numeric score (applying the desired criteria) for each individual data item. Items achieving a score above a certain threshold are sent on immediately, items falling bellow a lower threshold are discarded, and those between the two thresholds are retained for further consideration. The system then adopts a target number of results to return from any search (or possibly a different target number for each category of search, such as the air travel, hotel, and rental care reservation categories).
  • the threshold for deciding which results should be forwarded to a client can be adjusted up or down after each supplier's results are received and it can be determined whether the average number of results per supplier so far sent to the client is above or below the target average number of displayed results per supplier.
  • the search system could provide a “notification” feature, whereby a particular (possibly implicit) user query is repeatedly processed over a period of time, and the use provided result information only when that information meets a particular criteria.
  • the system performs both immediate data delivery as well as subsequent, non-interactive delivery.
  • the system could consider the final purchase of an airline ticket (as detected by the buy tracking mechanism described herein) as the triggering event for a new search. The system could perform this search repeatedly over a period of time and filter the results using criteria based on the actual ticket purchased by the user.
  • the system would then asynchronously notify the user if one of the periodic repeated searches finds a ticket that is better than the one the user purchased.
  • embodiments designed to handle different types of information might not need to be so limited.
  • the system may incorporate special features in order for delayed information return to be helpful. For example, if the system performs a search for a purchasable airline reservations delayed from the triggering user action, it is possible (if not likely) that the user will not be interacting with the client at the time results are obtained. Because of the fleeting validity of airline reservation information, the system could use a method for immediately notifying the user so that a purchase transaction could be completed. Such a method could include the use of a paging system or an asynchronous message to a wireless client, but is not so limited.
  • An alternative to being able to reliably notify the user of an available (desired) purchasable item is to have pre-authorization from the user to make the purchase on their behalf. This would require that the user supply, either previously or as part of their (possibly implicit) search-triggering action, payment information, a purchase authorization, and adequate selection criteria so that the user is satisfied with purchases that are automatically made.
  • each data item is inserted into an HTML/JavaScript display template, combined with the cookies set by the supplier web site (if any), and transmitted to the client.
  • the different server servlets of an embodiment are implemented using the object-oriented Java programming language. Given this, a key implementation detail is how the system creates the different component objects that make up each servlet.
  • a “factory” system is used wherein a single, central piece of software, the factory, is called by all other portions of the software with requests to create new objects.
  • an embodiment includes a generic object caching mechanism.
  • the object cache caches the data obtained from database accesses, and keeps the object instance containing it available there for a future reference to the same data. After a certain period of non-use of the data, it is automatically removed from the object cache. A next access of the data will again obtain it from the database.
  • the object caches rely on the principle of locality of time reference to reduce the actual requests that need to be made to the database. By implementing a generic base class that provides this functionality, it is easy to use object caching throughout the server.
  • a factory abstracts the implementation of object creation from the rest of the software. In particular, this mechanism allows different objects that implement the same interface to be freely substituted for each other as the system implementation evolves.
  • the particular object implementation that is used to serve each object-creation request that the factory receives is controlled by a server configuration data file referred to as the properties file. Additionally, the factory can manage caches and pools of previously-created or pre-allocated objects, to optimize the management of memory and/or processing effort.
  • the central module of the Copilot Servlet is referred to herein as the business logic.
  • the business logic includes a relatively small portion of the servlet that is responsible for sequencing the operation of the remainder of the servlet. Any system changes necessary to accommodate coupling with fundamentally different types of client systems are accomplished with the business logic. For example, a client that is a stand-alone piece of software that is not integrated into a web browser (as might be appropriate on a hand held processing device), would not need to exchange information with the server concerning whether the Bar should be automatically opened. This type of change can be incorporated in the server with changes in the business logic.
  • the sequence of object creation and use that the business logic uses when servicing a client request includes, but is not limited to: creating a UserInfo object based on the UID in the request; creating a Sessioninfo object based on the UserInfo and the SID; and, creating a TravelRequest object.
  • the UserInfo object is created to hold information keyed from the UID.
  • the UserInfo object is initialized with data for a particular UID only while a session for that UID is open, but the data it contains is not session specific. When there is not one or more active session for a particular user (UID), the contents of the UserInfo object is stored in the server database until needed again.
  • the factory When the UserInfo object is created by the factory, the factory first checks a cache of previously-created UserInfo objects and returns an object from the cache if present. This minimizes both object creations and accesses to the database, because multiple requests from the same UID are likely to occur together. If a User Info object for the desired UID is not present in the cache, a new User Info object is created and the factory attempts to populate it with data from the database.
  • New UID database entries are created only when the Start Servlet (which shares much of the underlying infrastructure with the Copilot Servlet, including the User Info object and the object factory) requests a UserInfo object from the factory and the desired UID is not already present in the database. If other servlets request UserInfo objects for non-existent UIDs, matching objects are created (or located within the cache), but the exception is logged as being potentially indicative of an attempt at unauthorized access to the system.
  • Sessioninfo object holds SID-specific information.
  • SessionInfo objects are cached within the factory so that multiple, rapid uses of the same SID do not require corresponding Sessioninfo objects to be created from scratch to serve each request.
  • SessionInfo objects are not stored by the server database, but the system is not so limited. Instead, SID-specific information is maintained as long as the session is active and then discarded when the session terminates (except for the data logged by transactions while the session was active, which is considered to be different from the randomly-accessible database records).
  • TravelRequest objects hold information that is specific to each unique information request that is sent from the client.
  • the creation of the TravelRequest object accomplishes several critical parts of the Copilot Servlet function.
  • a request can either originate from the itinerary-entry controls in the client user interface or in the equivalent data entry portions of a third-party web page. In either case, there is a source-specific input adapter module that is used to process the content of requests that the client creates from user interaction with supported sources.
  • the source of a request is not supported (for example, the request comes from a third-party web site that is included in the client list of URLs that should be forwarded to the server, but the actual browser navigation event that the client forwarded is from or to a page of the site that does not perform itinerary entry), or if the input adapter determines that the request was incomplete and did not contain enough information to start a search, then the TravelRequest object is created with a special value indicating that it is a non-valid request. This result causes the Copilot Servlet to respond to an incoming client request with a “0” string to inform the client that no additional data will be coming and that the Bar should not be automatically opened. If the Bar is already open, such a response does not result in Bar closure.
  • the TravelRequest object is populated with the extracted information.
  • the combination of the input adapters, which extract the information, and the TravelRequest object, which serves as a receptacle for the information serves to normalize the information needed to perform a search of suppliers into a common format for use by the rest of the Copilot Servlet components, regardless of the original source and format of the information.
  • normalization of travel requests includes identifying the airports that are associated with the departure and arrival locations identified in the request. This is an important step because there are a number of roughly-equivalent ways in which users might specify the locations in their requests.
  • the business logic processes it through one or more pre-search filtering or pruning operations.
  • the TravelRequest object has information that identifies the broadest possible set of travel suppliers that can be searched to fill the requested itinerary. For example, in searching for available airline reservations, the preferred embodiment builds a list of all the airlines (suppliers) supported by search adapters for which at least one departure and arrival airport (as there may be more than one possible alternate at each end) are listed as being served by the airline in the server database.
  • Another technique for determining whether a travel supplier should be searched based on the origin and destination of the trip uses a data table based on the actual flights that a supplier actually provides, and incorporating service rules in its construction.
  • the system of an embodiment uses such a table, which incorporates not only actual supplier flights but also a numeric preference value with each airport pair in the table.
  • the preference value is used during pruning, both by the explicit pruning mechanism and by the per-supplier pruning decisions made within search adapters, as a way to control the likelihood that a particular supplier will be searched for a given route, in light of other factors effecting search pruning.
  • Filtering and pruning are important optimizing steps for many reasons, although the exact set of optimization criteria are likely to be specific to a particular information domain searched.
  • a single airline might serve two disparate regions, and even though one contains the arrival airport and the other contains the departure airport, the airline does not actually have flights between the two regions.
  • a particular supplier might be optimized out of the list to be searched based on user preferences and predictions made concerning the likelihood of a relevant result being returned from the search based on prior system experience.
  • Another criteria used to prune an air travel supplier out of the list of potential search targets is the home country of the supplier. For example, even though British Airways files to/from many United States cities, it may only be searched if one of origin and/or destination airports is in Britain.
  • the second key resource is the network bandwidth of the supplier server systems. Assuming a generally high market acceptance of the system, it will be capable of generating significantly more total queries of supplier systems than the consumers using it would be able to generate on their own by accessing the same supplier web sites. As such, the system should not overwhelm the bandwidth (network and processing) capabilities of those supplier web servers that are accessed by search adapters.
  • the pre-search filtering step gives the server the opportunity to remove a supplier from the list of suppliers to search based on the number of searches of that supplier that have been recently performed or are expected in the near future.
  • the third resource that can be optimized by reducing the number of suppliers to be searched, thereby improving the expected relevance of the results from each supplier, is the real time required for the search at all.
  • an implicit reduction is made in the total number of results that will be displayed to the user. The shorter and more concise the list the user has to review, the more they perceive that the search occurred rapidly, even if it actually took the same amount of real time.
  • the TravelRequest object contains information identifying the specific set of suppliers that the system will attempt to search with the user's request.
  • the TravelQuery object manages the actual search process. It manages class-global pools of idle processing threads and pre-created search adapter objects. When a new TravelQuery object is instantiated with a TravelRequest object, it obtains one thread and one search adapter for each supplier that the TravelRequest identifies as a search target. If the pools do not contain enough items to execute a particular query, more items are created. The TravelQuery assigns one supplier to each thread/search adapter pair and starts the search operations.
  • the server system performs numerous tasks in parallel. In order to achieve this parallelism, a large number of independent threads are created. Once the task has been completed the thread can be discarded. Since many of the tasks are of a similar nature, the system uses a thread pool. This saves the overhead of constant thread creation and destruction, and makes optimal use of the thread resources.
  • a thread is allocated from the pool and associated with the task. The thread then executes the task until completion after which the thread is returned to the pool.
  • no thread is available in the pool a new thread is automatically created, and returned to the pool after task execution.
  • a thread is re-cycled after it has executed a certain number of tasks. At this point the thread is destroyed instead of being returned to the pool. This mechanism will also automatically maintain the pool size at an appropriate level.
  • the TravelQuery object contains a flag indicating that processing should continue on the current query. If the user abandons a search, this flag is cleared. Each time an active search adapter reaches a point in the sequence of transactions with its supplier where the supplier system is in a stable state, the adapter checks the flag and, if it has been cleared, stops its operations.
  • search adapter module object class
  • object class object class
  • search adapter module object class
  • each search adapter there may be logic that applies supplier-specific algorithms to perform further pruning, to determine if the search of the supplier is actually appropriate for the current query. For example, there are air travel suppliers that may not accept bookings for very near-term flights (e.g., departing less than five days from the day of purchase). In this example, it is the responsibility of the individual adapter to determine if the current request is or is not likely to produce useful results if carried out for the adapter's supplier. By placing the responsibility for detailed supplier-specific decisions in the search adapters, it reduces the need to make descriptive/predictive information available to the higher-level pre-search pruning logic.
  • Another aspect of supplier-specific decision making carried out by the individual search adapter is regulation of the amount of bandwidth consumed by searches conducted on the adapter's supplier. This is accomplished through a combination of supplier-specific code and data (such as the desired maximum amount of bandwidth to consume from the supplier) plus code that is part of the search adapter base class and implements the bandwidth-tuning algorithm.
  • the most basic algorithm is a digital phase-locked loop (PLL).
  • PLL digital phase-locked loop
  • each search adapter returns status information to the TravelQuery indicating whether or not it has started a requested search.
  • pre-search pruning allows the pre-search pruning to start additional adapters if any of its first choice of adapters decides that performing the search is not actually appropriate.
  • high-level pre-search pruning logic requests that a search adapter start a search, it provides a numeric preference value, indicating the degree to which the pruning logic wants the adapter to perform the search.
  • Each search adapter is free to interpret the preference value relative to supplier-specific criteria.
  • a system embodiment includes a dynamic class loader, which allows for updating the search adapter objects while the system is running.
  • the system itself detects that a new version of a class has been made available, removes all old versions of the class and starts using the new version of the class from that point on. Because this embodiment is implemented in Java, the details of this mechanism depend significantly on the structure of the Java programming language and execution environment, although the fundamental structure of the system is language-independent.
  • Java software is compiled from source code into an intermediate binary form (byte code), which is then interpreted at run time by a Java Virtual Machine (JVM).
  • JVM Java Virtual Machine
  • the management of loading new byte code files for execution by the JVM is handled, along with many other common and system functions, by parts of the Java runtime environment that are themselves written in Java and interpreted by the JVM, as opposed to being hard-coded parts of the JVM itself.
  • the important parts of the Java runtime environment are the class loader classes and objects.
  • the class loader is the component of the runtime environment that is invoked by the Java new operator when a new object (instance of a class) has to be dynamically created.
  • the default (system) class loader operates based on the name of the class for which an instance is to be created, and uses system configuration information and standardized conventions to locate and read the bytecode file that contains the implementation of the desired class.
  • the class loader maintains a cache of the contents of the bytecode files for objects which have already been instantiated, so that multiple instantiations of the same object do not all incur the performance penalty of reading bytecode files.
  • the Java runtime environment makes provisions for the creation of custom class loaders, that may or may not be child classes of the system class loader.
  • newInstance that is used to invoke the class loader with explicit parameters concerning the class and bytecode files to load, rather than relying on the implicit locating of the bytecode file implemented by the system class loader.
  • the determination as to which objects are instantiated by the system class loader and which use the system's special class loader is made explicitly in the source code based on whether new or newInstance is used to create object instances.
  • an embodiment uses a commercial set of infrastructure libraries known as “Tomcat” in addition to the basic Java execution environment.
  • Tomcat implements its own custom class loader on top of the Java system class loader, and the search system's class loader is built on top of the Tomcat class loader.
  • the custom class loader is used to create instances of all of the different types adapters, not just search adapters.
  • the TravelQuery object Each time an adapter is to be used (fetched from the pool), the TravelQuery object checks the time stamp of the adapter's bytecode file to determine if it has been updated since the last time it was loaded. If the adapter's bytecode has been updated, the TravelQuery object instructs the custom class loader to reload the class' bytecode file.
  • the system's custom class loader includes a reinstantiate method that: removes the target class from the class loader's bytecode cache; instantiates a new class loader; passes the complete existing cache to the new class loader instance; and, destroys the old class loader instance.
  • the new class loader instance can be used in the normal way (via newInstance) to instantiate the desired adapter, which will cause the new bytecode file to be loaded into the cache.
  • newInstance an alternate implementation could check the time stamps of all adapter bytecode files periodically instead of on-demand. Such an implementation would trade off the precision of the adapter updates versus the amount of processing consumed by checking adapter time stamps.
  • an embodiment of the system uses the presence of different types of adapter files to determine the set of options available to the system. For example, the server maintains a copy of the URL lists stored on the client at all times. Note that one URL list directly corresponds to the available set of input adapters while the other URL list corresponds to the set of buy adapters. Each time the system detects a change in the set of available adapters, it updates its internal URL lists and the associated revision number. Subsequently, when new client sessions are established, the clients receive the new revision number and therefore download the updated URL list.
  • the revision number for each URL list consists of three numbers.
  • the first two numbers come from the properties file while the third number is automatically incremented by the server in response to detecting changes in the available set of adapters.
  • the list of suppliers that is used to create the original list of candidate suppliers to search for a request is based on the set of search adapter objects that are currently available. Note that it is possible for an adapter to be added or removed to the bytecode directory as well as being replaced, and the system reflects these changes in the available set of options as well. This is accomplished by a server process that periodically examines the bytecode file directory for the addition or removal of new adapters.
  • the server uses at least one set of configuration data stored in the properties file. It is possible to implement the creation of search adapter objects based on a list of suppliers to be searched contained in the property files. However, a more efficient implementation is to determine the set of available adapters based on the Java bytecode files currently located in the search adapter executables directory on the system servers.
  • search adapters are created as child classes from a large search-adapter base class that provides common behaviors, interfaces, and services to ease the development of individual search adapters.
  • the base class implements all of the adapter interfaces to the other server components.
  • the base class for search adapters implements a selection of primitive and/or common tool routines that specific search adapters can use to parse and extract data from web pages returned from requests the adapter makes to supplier web servers.
  • search adapters implemented in the base class
  • the search system is, however, very tolerant of individual search failures because there are so many potential travel alternatives that can be presented from other suppliers.
  • the search adapters track the number of failures from a particular supplier. A significant number of failures from the same supplier can be indicative of a change in the supplier web site that will require a change in the search adapter in order to allow it to work again.
  • search adapters are constructed using a common base class and implement identical interfaces, it is easier to use the search adapters in contexts other than the complete search system and the Copilot Servlet.
  • search adapters For example, during the development of search adapters, a separate piece of test harness software is used to task individual adapters with specific searches under the control of the developer, circumventing the rest of the intelligence in the Copilot Servlet, which might serve to make testing of individual adapters more difficult.
  • the Copilot Servlet makes on-the-fly decisions for each set of search results provided by a search adapter regarding which of the result items are appropriate to forward on for display in the client. This decision, like the processing performed on the TravelRequest object to prune the set of suppliers to search, is accomplished by a series of processing operations performed on the search results once they are received.
  • the final object in the chain of the Copilot Servlet processing for a particular client request is the Presentation object.
  • This object receives the different travel search results, asynchronously, after filtering, from the TravelQuery.
  • the Presentation object is responsible for encapsulating the raw search results into HTML that is appropriate to the HTML already sent to the browser control in the client Bar.
  • the Presentation object retains the result data from the most recent of each different type of data search performed by the user. In an embodiment, this includes up to three sets of data: one each for air travel, hotel reservations, and rental car reservations.
  • each TravelQuery object is assigned a different search ID number, and the Presentation object discards search results marked with any search ID other than the most recent (of a particular type).
  • databases and database content there are a number of logically-separate databases used by the server system.
  • a collection of server systems shares one or more common, redundant database systems.
  • One set of data stored in the server database includes copies of commercially available flight tables. This table lists all of the available commercial airline flights by supported suppliers. Not only is this table accessed directly, but it also contains the raw data from which the short list of suppliers that service listed airports is taken in construction of the first-order list of possible suppliers to search for a particular request.
  • a web special is a discounted price on an otherwise-available ticket that is offered only to people purchasing the ticket through the supplier's web site.
  • the system In order to optimize the list of suppliers that should be searched for a particular request, the system has to have information about which suppliers are likely to have which web specials available at any particular time. Unlike the information on regularly scheduled flights, which is essentially static, the set of web specials is highly fluid. Therefore, the database contains a cache of the web specials available from each supplier that performs this type of marketing. The cache is periodically refreshed by a pseudo-search request generated within the server.
  • the search system of an embodiment also employs automatic searching performed asynchronously to user actions.
  • Automatic searching may be used to facilitate any stage of the system's operation. For example, automatic searching may be performed to pre-fill data bases used as part of the filtering process before and after a search adapter operates.
  • the results of automatic searching may also be incorporated into the information that is returned to a user as the result of a query.
  • nothing in the embodiments described herein should be interpreted to limit the search system to returning the information retrieved by search adapters to the user. For example, the results of queries to information suppliers could be used to filter the delivery of other data (possibly constant data or the results of automatic searching) to the user instead of the reverse.
  • the UID-associated information is stored in the database. It is updated when the user invokes the client user-interface for editing their preference information, and fetched into a UserInfo object each time a new client/server session is created.
  • the interface between the search system and the various supplier systems is implemented by a search adapter. As detailed herein, there are three different categories of interfaces between an adapter and a supplier: through the supplier's commercial/consumer web site, through a GDS system, or through a custom, search system-specific interface.
  • the system In addition to searching supplier web sites and handing off users to the purchase pages of a supplier web site, the system is capable of performing the purchase hand-off by providing a travel agent number, otherwise known as an ARC number or IATA number, to the supplier. Thus, the owner of the ARC number is able to collect a travel agency commission on the sale.
  • a travel agent number otherwise known as an ARC number or IATA number
  • a data warehouse is maintained in an embodiment. Recorded/created data is securely forwarded from the server databases to the data warehouse on a regular basis.
  • the warehouse is used for both backup and long-term storage purposes. When data is forwarded to the warehouse, it is removed from the individual server sites. This ensures that the vast majority of data collected is not present on the servers, reducing their attractiveness to hackers as targets.
  • the logs of user activity and travel component or airline pricing behavior accumulated by the system during its operation form a significant resource.
  • This resource can be used for further exploitation and refinement of the system as well as a business asset that can be exploited to the degree that it can be made available to other businesses without compromising the service owner's position with suppliers or the privacy of the individual users who have transacted through the system.
  • Exploitation of the database for the service owner's benefit can be conducted through data mining and other types of analysis.
  • an application programming interface (API) and software architecture is established that allows components, or data analysis adapters, to be created and provided to the search system owner by third parties who want access to the data.
  • API application programming interface
  • the advantage of this arrangement, versus directly providing data sets to third parties, is that the API can be used to restrict the types and amounts of data that the analysis adapter can output to ensure that privacy is maintained.
  • FIG. 11 shows a data analysis adapter configuration 1100 of an embodiment at a data warehouse.
  • This configuration 1100 supports information flow among at least one database 1102 , at least one data analysis adapter 1104 , an output interface module 1106 , and temporary storage devices 1108 in the provision of digested data formulated to third parties 1110 .
  • This situation provides the analysis adapter 1104 the greatest freedom and access to data, but also presents the most significant risk of the third party attempting to exploit the access and circumvent the restrictions on data output imposed by the system API.
  • the analysis adapters 1104 support a supplier offering dynamic and/or adaptive offers based on any of the data to which the system has access, including the specific user's prior purchasing behavior and the other bookings that the system has found from other suppliers. In this case, the analysis adapter 1104 has to be judged by the system owner as reliable enough to be distributed to and run on the server systems. In addition, the data needed by the analysis adapter 1104 must be available at the different server sites.
  • FIG. 12 shows a data analysis adapter configuration 1200 of an embodiment at a 1 5 server site.
  • This configuration 1200 supports data flow among Copilot Servlets 1202 , supplier systems 1204 , supplier data analysis adapters 1206 , and data warehouses 1208 via the Internet 1210 , but is not so limited.
  • Data is made available to server-resident analysis adapters in one of two ways, depending on the data needs of the adapters. First, processes can be run at the data warehouse to produce digests of the complete database. Assuming that the digest process provides summaries that are appropriate for the algorithms in the analysis adapter, the digests can be securely transferred to the server sites from the data warehouse without jeopardizing the entire database and provide as much benefit to third parties as would access to the full database.
  • Another alternative is to establish a secure, real-time link between the server sites and the data warehouse (possibly creating duplicate data warehouses to provide reliability and adequate bandwidth).
  • This link can be used either to allow analysis adapters running at the server sites to query the full data set or to allow the adapters to execute within the data warehouses but to be queried themselves by the server sites.
  • the client auto-open functionality essentially provides alternate information to that which is/will be provided by the data source that the user explicitly queried. Different perceived effects can be produced by altering the point in the user's primary sequence of operations at which the auto-open is performed and the type of information that is presented.
  • auto-opening earlier (as soon as the user first goes to a page in a web site that would trigger a query-based auto open) gives the user the opportunity to use the inventive search system instead of the web site that they explicitly selected, but makes it appear less like a head-to-head competition either to present results or on price or other user-relevant criteria.
  • moving the point of auto-open later in time so that auto-open does not occur until the user has evaluated the offers made by the site they originally chose, and has perhaps chosen one to purchase, gives the search system significantly more information on which to base its search.
  • the system In addition to the itinerary information originally entered by the user, the system also has access to the travel options which the “other” web site presented and can attempt to infer the user's preferences and the price that they're willing to pay. In this case, the auto-open will appear to the user more as a counter-offer to the choice that they have already made than as an unbiased presentation of alternatives.
  • search adapters are provided to access web pages because it is common practice for information suppliers to make information available through web (e.g., HTTP) servers.
  • web e.g., HTTP
  • Any network-accessible information source whether it is intended to provide human-readable or machine-readable information, may be used in place of a web server without altering the fundamental operation of the search system of an embodiment.

Abstract

A method and apparatus are provided for a dynamic information connection engine. User actions are detected on at least one client system. In response, a determination is made whether the user is searching for supported information. When the user is searching for supported information, information is extracted electronically from third party web sites, direct supplier connections, and intermediate databases. Potential information suppliers are automatically selected in response to the detected user search. Queries are formulated from the user search and transferred to each selected supplier over a network coupling. The queries include a request for information. Responses are received from the suppliers, and the responses are used to generate a result list for the user. The result list includes information and query status information. Further, an electronic link may be provided to a web site of each supplier from which the information was derived.

Description

    RELATED APPLICATIONS
  • This application claims the benefit of United States Provisional Application Ser. No. 60/191,346, filed Mar. 22, 2000, incorporated herein by reference.[0001]
  • BACKGROUND
  • 1. Field of the Invention [0002]
  • The present invention relates to systems used to find and present information from multiple sources, and more particularly, to systems that find information on the Internet from suppliers or purchasers of goods, services, or commodities and present that information to potential purchasers or suppliers performing comparisons. [0003]
  • 2. Description of Related Art [0004]
  • Since the conception of the Internet and extending through the development of Hypertext Transfer Protocol (HTTP) and the World Wide Web (web) to the present, one of the biggest barriers to people taking full advantage of the capabilities offered by the Internet is the difficulty in sifting through the available information to find the desired information. Currently, there are many different search systems available on the Internet. The broad categories of search systems include systems that address very narrow collections of data, systems that operate by first building a local database that describes the contents of the searched web sites, and systems that target a specific type of data. There are a number of ways in which these systems differ, such as the range of information they attempt to search, the technical mechanisms that they use to search, the user interface they provide for specifying the desired data, the user communities to whom they are available, the way they are marketed, and the business models that they are designed to support. [0005]
  • An example of search systems that address very narrow collections of data are the “captive” search systems that are built into/for individual web sites, and allow users of the web site to find desired information within the specific site. In general, there are useful implementations of these systems available, often having user interfaces that can be customized to reflect the contents of the site. However, these search systems are usually not helpful in performing comparisons because individual web sites are typically maintained by individual companies, so the same search operation does not return comparable data. [0006]
  • A typical search engine that purports to search the entire web (that is to say, HTTP servers, which is a subset of the entire Internet) operates by first building a local database that describes the contents of the searched web sites, and then searches that database in response to user queries. Search systems of this type differ primarily in the way they determine which pages of data from which sites are to be added to the database, and in how the database is managed and condensed, as it is impractical in most cases to keep an entire copy of the search range on the search system. Systems of this type typically repeat the process of gathering data from the Internet periodically in order to update the local database so that it accurately reflects the contents of the various web sites searched. [0007]
  • Search systems that target a specific type of data operate like the systems that address very narrow collections of data and the systems that operate by building a local database in that they must gather data from the Internet before users can make requests of the search system. However, the data gathered is generally filtered to determine if it is the desired type. This can either be done implicitly by the search system operators manually creating a list of the web sites that should be searched, or explicitly by an automated portion of the search system. Most existing comparison shopping search systems work in this way. [0008]
  • Another aspect of existing Internet search practice is the technique of processing individual web pages using automated systems to extract desired data, where the web pages typically include HTML source text and are intended to be presented to a human user. To an extent, this technique is used by the systems that operate by building a local database and the systems that target a specific type of data because they have to differentiate HTML formatting directives from text content that is to be searched and from the URLs of other referenced Internet objects that may be the target of subsequent database building. [0009]
  • However, the more detailed and specific process of analyzing a web page for a particular piece or type of data, often referred to as scraping, is not employed by most search systems. There are many systems, both for searching and for other purposes, that employ scraping. However, many scraping implementations have less-than-desirable performance and/or search characteristics and are unsatisfactory for applications in which scraping would otherwise be a viable technique to employ. [0010]
  • Additionally, most existing systems that perform scraping are very limited in the web site structures that they support. For example, some web servers require that the accessor, typically a user, reach a page by passing through a series of other pages. In this type of web site, the content of a page depends not only on its URL but also on prior history, the page location within a framed page, page content that is generated dynamically (such as by a client-interpreted embedded language like JavaScript), and cookies set from the server. Most of these sites cannot be accessed by traditional scraping systems because the systems cannot process a sequence of pages or fully emulate all of the browser functionality required by some pages. [0011]
  • Consequently, there is a need for a system that efficiently gathers and evaluates information from multiple electronic sources and presents relevant information to potential buyers, sellers, or traders. This information includes, but is not limited to, information regarding goods, services, and commodities. [0012]
  • SUMMARY OF THE INVENTION
  • A method and apparatus are provided for a dynamic information connection engine, wherein user actions are detected on at least one client system. In response, a determination is made whether the user is searching for supported information. When the user is searching for supported information, information is extracted electronically from third party web sites, direct supplier connections, and intermediate databases. Potential information suppliers are automatically selected in response to the detected user search. Queries are formulated from the user search and transferred to each selected supplier over a network coupling. The queries include a request for information. Responses are received from the suppliers, and the responses are used to generate a result list for the user. The result list includes information and query status information. Further, an electronic link may be provided to a web site of each supplier from which the information was derived. [0013]
  • The descriptions provided herein are exemplary and explanatory and are intended to provide examples of the claimed invention. [0014]
  • BRIEF DESCRIPTION OF THE FIGURES
  • The accompanying figures illustrate embodiments of the claimed invention. In the figures: [0015]
  • FIG. 1 is a block diagram of transaction system architecture of an embodiment. [0016]
  • FIG. 2 is a block diagram of a transaction system process flow of an embodiment. [0017]
  • FIG. 3 is a flow diagram of a dynamic information connection engine of an embodiment. [0018]
  • FIG. 4 is a block diagram of the server organization of an embodiment. [0019]
  • FIG. 5 is a block diagram of a transaction process flow of an embodiment. [0020]
  • FIGS. 6A and 6B diagram user operation and information flow of a search system of an embodiment. [0021]
  • FIG. 7 is a block diagram of a load balancing arrangement of an embodiment. [0022]
  • FIG. 8 shows a client system organization of an embodiment. [0023]
  • FIG. 9 diagrams a flow of supplier cookies of an embodiment. [0024]
  • FIG. 10 is a diagram of a Copilot Servlet organization of an embodiment. [0025]
  • FIG. 11 shows a data analysis adapter configuration of an embodiment at a data warehouse. [0026]
  • FIG. 12 shows a data analysis adapter configuration of an embodiment at a server site. [0027]
  • DETAILED DESCRIPTION OF THE INVENTION
  • The method and apparatus of an embodiment gathers, processes, and delivers information relevant to implicit or explicit user queries. An embodiment of the dynamic information connection engine, or search system, specifically addresses, but is not limited to, systems where the user queries are travel itineraries or descriptions associated with a desired trip, and where the information includes different travel options that fit the itinerary and which the user can purchase. These travel options include, but are not limited to, airline, hotel, and car rental information. This system is easy and inexpensive to implement and maintain, and provides lower distribution costs. Further, the system of an embodiment promotes relationships with brand-loyal customers while also increasing awareness of other available suppliers through extensive comparison capability. Moreover, the system supports the capture of data on consumer and competitor behavior. [0028]
  • FIG. 1 is a block diagram of a transaction system architecture [0029] 100 of an embodiment. The system architecture 100 includes one or more system servers 102 coupled among at least one client space 104 or client device 110-116 and at least one participating product supplier and informational web site 106 via at least one network 108. The client devices 110-116 include, but are not limited to, computers, personal computers, portable computing devices including hand-held computers, personal digital assistants, and cellular telephones. The client devices 110-116 may host standard web browsers as well as custom applications software. The network 108 includes, but is not limited to, wired networks, wireless networks, and combined wired and wireless networks. The transaction system architecture 100 accommodates an optional firewall.
  • FIG. 2 is a block diagram of a transaction system process flow [0030] 200 of an embodiment. A user browses the Internet 201 using a client 202 or client computer. The user accesses 210 a World Wide Web site 204, or web site, in order to shop for a prospective purchase. The client software tracks the user's actions, reporting 212 a subset of these actions to the system server 206, or server. The server 206 collects this information and retains it for future use. The server 206 also immediately analyzes the user action and, in response, makes electronic requests 214, or shadow requests, to product and information suppliers 208, or suppliers, to obtain relevant data. The shadow request communicates the key elements of the action being taken by the user. In response to the shadow requests, the server 206 receives responses 216 from the various product and information suppliers 208 available online. The server 206 evaluates the responses and formulates a response for the user. The response is transmitted 218 to the client 202.
  • FIG. 3 is a flow diagram [0031] 300 of a dynamic information connection method of an embodiment. User actions are detected on at least one client system or access device 302. In response, a determination is made whether the user is searching for a supported type of information 304. When the user is searching for product purchase information, information is extracted from user actions 306. Potential suppliers are automatically selected by a server in response to the product information 308. Queries are formulated using the product information and transferred to each selected supplier over a network coupling 310. The queries include a request for product purchase information. Responses are received from the suppliers, and the responses are used to generate a result list for presentation to the user 312. The result list includes product purchase information and query status information. Further, an electronic link is provided to a web site of each supplier from which the product can be purchased.
  • FIG. 4 is a block diagram of the [0032] server organization 400 of an embodiment. Servlets including a Start Servlet 402, a Load Balancing Servlet 404, a Copilot Servlet 406, and a Web Relay Proxy Servlet 408, along with a factory infrastructure 410 and server databases 412 support the bulk of the server processing, but the system is not so limited.
  • FIG. 5 is a block diagram of a [0033] transaction process flow 500 of an embodiment. The system supports couplings among numerous clients 502, third party systems 504, search-specific interfaces 506, provider web sites 508, server sites 510, and data warehouse 512 or database sites using at least one network 514. The network 514 includes any of a number of networks, for example, the Internet. The system of an embodiment includes separate client and server portions, although this division is not a necessary part of the invention. The different types of communication between the client 502 and server 510 are ordered top-to-bottom to match the sequence with which these types of communication are performed by any particular client 502. At any one time, there will typically be a large number of clients 502 communicating with each server system 510 as represented by the stack of clients 502.
  • In an embodiment, the user interacts with a client to input the itinerary and to view the results, while the gathering and processing of the information is performed on a central server. Alternate embodiments could perform all of the processing in the system with which the user directly interacts, or the controlling decisions about what data should be gathered and processed could be made by the central server but with the actual gathering carried out by the client systems in order to alter the over-all usage of network bandwidth required by the system. [0034]
  • The client system of an embodiment incorporates a standard World Wide Web (web) browser (HTTP-protocol client). This provides a simple, standardized mechanism for actually displaying results. The browser is also used to view the web sites of travel suppliers when the user decides to purchase one of the travel options presented. [0035]
  • As a matter of convenience, an embodiment uses the Hypertext Transfer Protocol (HTTP) for communication between the client and server. This protocol is well supported by a variety of off-the-shelf software components, and is also used by the associated web browser. [0036]
  • The server portion of the system is composed of a set of servlets accessed by the client making GET and POST HTTP transfer requests. A servlet is an ongoing process that services some requests received by a web server. In an embodiment, the servlets are written in Java, but are not so limited. [0037]
  • In the interest of simplicity, only the interactions between a single instance of a client system and a single server are described herein. However, it is understood that in actuality each different client proceeds through the possible sequences of operations independently and asynchronously of the others. In addition, an actual commercial implementation can employ several different, parallel server systems at one or more different physical locations in order to supply the necessary processing power and reliability. [0038]
  • The Start Servlet handles the initial communication with a client that is just starting a session. Not only may the user's system that hosts the client be turned on and off repeatedly, but the actual client subsystem may not be used each time the user starts his/her system. Therefore, the server portion of the invention is capable of handling a number of separate start/initialization cycles of each different client over the client's life span. [0039]
  • One key operation for which the Start Servlet is responsible is the association of a client-generated user identification number (UID) with each unique client system, and for ensuring the existence of the appropriate user-specific entries in the server's databases. The UIDs, as well as session IDs (SIDs) and other identifier values used in the preferred embodiment are 128-bit values created such that they should be absolutely unique. They are created using the Windows Globally Unique Identifier (GUID) mechanism, which is in turn based on the Open Software Foundation's (OSF's) Universally Unique Identifier (UUID), a component of the OSF Distributed Computing Environment (DCE). [0040]
  • After the client has initiated communication with the server by making a request to the Start Servlet, the client makes a subsequent request to the Load-Balancing Servlet. The Load-Balancing Servlet determines which of the potentially multiple server systems at a particular location is in the best position to serve future requests for information coming from the requesting client. [0041]
  • The Copilot Servlet is responsible for the fulfillment of most other information requests from the client. The Copilot Servlet receives requests from the client any time the web browser with which the client is integrated is navigating to a Uniform Resource Locator (URL), or information identifier, which the client determines (more on the mechanism below) may be a request for travel information. The servlet responds to these requests in one of two ways, depending on the client's HTTP request. [0042]
  • In one situation, when the client's request does not contain adequate information for the server to perform a search for purchase alternatives, the server informs the client of this and no additional processing takes place. Note that, in an embodiment designed to find and present a category of information other than travel alternatives, the type of URL/request screening performed by the client prior to making a request of the Copilot Servlet could use different criteria, but the step could still be performed. [0043]
  • The other situation is the one in which the URL/request does contain itinerary information with which the server can search for and present information. In this case, the server fulfils the request over a period of time. The server sends back a flag indicating that more information will be following. The HTML and JavaScript template of the page that will be used to display the information found is also presented. Further, the related information is presented incrementally as it is found. [0044]
  • It is noted that while current common practice is to identify individual blocks of data accessible on the Internet using a URL, and an embodiment is described in terms of using URLs, the search system is not so limited. For example, systems which access information suppliers that are not typical web sites (e.g., which use an access protocol other than HTTP v1.0 or v1.1) or which perform the accesses over a network other than the Internet may not use URLs to identify the source of a particular set of information. Similarly, in the future new mechanisms (possibly not intended to be human-readable like URLs) may be created to identify content available on a network. Modifications to embodiments of the present invention used to accommodate such changes in the underlying network technology used to connect among clients, servers, and information suppliers are implementation details unrelated to the inventive material herein. References to URLs in the description herein are reflective of present implementation practice rather than of constraints on the search system. [0045]
  • In an embodiment, the client is implemented as a collection of ActiveX objects which are designed specifically to operate with the Microsoft Internet Explorer (IE) browser under operating systems that support the ActiveX object technology, essentially only recent releases of Microsoft Windows. In this environment, it is possible for the client to establish a very intimate connection with the web browser. It uses this connection to obtain each URL which the browser is requesting as the requests are made. It also uses this connection to establish a sub-window, on the left-hand side of and within the main web browser window, which the client uses to display its user interface and results. This sub-window is referred to herein as a Bar. [0046]
  • In other embodiments, the Bar can be displayed on any portion of the browser window or in its own window and is, therefore, not limited to the left side. The visible, on-screen area occupied by the Bar is filled with a browser control. A browser control is similar to the active display area of the IE web browser, stripped of all of the menus, toolbars, and other user-interface objects normally present when IE is run as a stand-alone application. The Bar makes use of this control to display its user interface and content, and the implementation of the client user interface is partitioned between the compiled software that makes up the Bar and other client ActiveX objects and the JavaScript embedded within the HTML displayed in the browser control. [0047]
  • The client Bar can be opened either explicitly by the user or automatically. It is opened automatically by the client when the client has made a request of the Copilot Servlet, and the Copilot Servlet has responded to the request with a flag indicating that more information will be sent. The HTML that makes up the balance of the Copilot Servlet response is then displayed within the Bar. [0048]
  • If the user explicitly requests that the Bar be opened, the client generates a special URL and request for the Copilot Servlet. This request always returns the correct HTML and JavaScript source for the client user interface, so that the user may directly enter itinerary information for use in performing a travel search, rather than depending on the pages of a third-party web site to provide the itinerary-entry user interface. [0049]
  • In operation, the user accesses the search system of an embodiment using a computer hosting a client system. In an embodiment, the client is implemented as a collection of ActiveX objects. Users are provided access to the client by packaging the ActiveX objects into a Dynamic Link Library (DLL). The DLL, along with associated control files, resides in a cabinet (CAB) file so that it can be downloaded automatically from a web site. In implementations of the invention which are not ActiveX-based and/or specific to Microsoft IE, the DLLs can be packaged as plug-in modules for a web browser so they can be downloaded and installed from a web site. [0050]
  • The web site from which the client is downloaded includes, but is not limited to scripting to detect the type of browser with which the user is accessing the site, so that they can be informed of the level of support for their browser and/or so that they can automatically be directed to the correct download file for their browser. The web site also includes a user interface to collect registration information from the user and pass it to the client for transmission to the server for inclusion in the user's database entry. Additionally, the web site includes a final URL that causes the Bar to automatically open. [0051]
  • Furthermore, in an embodiment, one of the ActiveX objects that make up the client contains Automation Methods that can be called by JavaScript software within the web pages of the client-installation web site. These methods can be used by the web site to find out configuration information about the user system that is not ordinarily available, so that it can be used to give the user more customized information about the client operation. [0052]
  • FIGS. 6A and 6B diagram user operation and information flow [0053] 600 of a search system of an embodiment. The information is transferred among a Bar sub-window 602 and a browser window 604 of a client computer, at least one component of a server system 606, at least one third party server 608, and at least one supplier web site 610. At the highest level, the transaction system locates and presents information relevant to a user request. In an embodiment, user requests include the itineraries for a potential trip, and the information returned includes available, purchasable travel alternatives that meet the requirements of the itinerary.
  • In an embodiment, the general flow of processing for each request or itinerary begins when the user enters itinerary information through the client user interface or through an itinerary-entry page of a web site. The itinerary information is transferred from the client to the server. The server reviews the itinerary information and determines the travel-suppliers that are most likely to have relevant and available purchasable options. The server couples to the appropriate systems of selected travel suppliers and makes queries about the available travel options matching the itinerary. The couplings to travel suppliers can be made numerous ways including, but not limited to, requesting pages from their web sites and extracting information from the pages returned as shown in FIGS. 6A and 6B, and using a proprietary connection intended solely for inquiries from the search system. When coupling through a proprietary connection, an intermediary can be used that also contains information about the travel supplier's inventory, for example a Global Distribution System (GDS) database. [0054]
  • The server returns boiler-plate data display and formatting information to the client. As results are received from each queried travel supplier, they are evaluated and processed for possible transmission to the client along with search progress status information. When all results have been received from the queried travel suppliers, final “search complete” status information is sent to the client. [0055]
  • The transaction system of an embodiment automatically detects and interprets user requests for relevant types of information. In contrast, most existing information search systems require the user to explicitly provide their request to the system, typically by entering information into a web page. While this is also an option in the transaction system, the transaction system is also capable of detecting other user actions and interpreting them as implicit requests for information. [0056]
  • When examining user actions to determine if a search operation can be started, information is accumulated from a sequence of actions up through a final trigger event. For example, if a user has entered information on a web page, or in a sequence of successive web pages, the triggering event might be the activation of a submit-type control on the final page. However, the system can use all of the entered information to determine if the final user action (the submit) should be used to start a search. [0057]
  • However, this example is neither the least nor most complicated instance of monitoring user actions that might be used in the system. Other examples of user actions/input that might be used include, but are not limited to: detection of the selection of a single control or sequence of controls that indicate an interest in a supported type of information; entry of information by the user in a control or sequence of controls; entry of information through natural-language or N-gram techniques; selection of a pre-existing set of information as identifying the user's interest. It should also be noted that while most contemporary client systems are computer systems in which the user provides input through typing and/or pointing devices, any means of user input may be used with the search system including, but not limited to, handwriting recognition and voice recognition. [0058]
  • It is also noted that all methods for monitoring and evaluating user input may be applied to both user actions performed with respect to a third-party web site as well as an interface of the client system or web page maintained by the search system operator. [0059]
  • The monitoring of user activity, in an attempt to recognize actions that indicate a desire for the type of information that the system has been implemented to collect and present, is accomplished hierarchically, but is not so limited. The client is primarily responsible for monitoring user actions. The primary mechanism for this monitoring is capturing the user web browser requests for new pages, although other mechanisms could be used to achieve the same result or slightly different results for implementations designed to search for other types of information. The monitoring is accomplished through a Component Object Model (COM) interface. This interface captures each URL, or navigate event, that the browser is about to fetch. [0060]
  • The first step in determining if the user is trying to find information about travel alternatives is to compare the root portion of the URL with a list of strings maintained by the client. This list is stored in the Windows registry, a system database of configuration information, and can be updated by the server when it is out of date. [0061]
  • When a URL requested by the browser matches one of the partial URL strings stored by the client, the client forwards it (and possibly the associated data if the user's browser is making a POST request) to the Copilot Servlet portion of the server for further processing. The server determines if a particular user request is a request for travel information and contains enough information to be considered an “itinerary” that can be used for a search. While the simple string comparison against the URL is adequate for the needs of the travel-information searches, other embodiments may use a different first-level analysis of user operations, as determined by the complexity of the information needed to perform the search. [0062]
  • The transaction system also accommodates a user providing their request directly to the system with the entry of itinerary information into a web page. With this entry method, the user enters itinerary information directly into the HTML form that is part of the client user interface. This is possible either when the user has opened the Bar explicitly or after it has automatically opened in response to a previous user action/input. [0063]
  • In general, a session starts the first time after the client has stated a need to contact the server, and continues either until one of the systems timeout periods expires or until the user takes an explicit action that shuts down the client. The installation of an embodiment comprises several operations that generally occur the first time the client starts after it has been installed and/or the first time a new client installation connects to the server. In particular, when first installed on a system the client creates a GUID to serve as the client's permanent ID number. It is noted that the User ID (UID) is actually specific to a particular operating system installation rather than to an actual individual user. [0064]
  • The client attempts to make a connection to the server, starting a logical “session”, only after it reaches a point where it needs information from the server in order to continue. The two cases in which this occurs are: the user explicitly opens the Bar causing the client to need the HTML/JavaScript source for the user interface to be displayed; and, the client detects the browser attempting to load from a URL that is a candidate for containing an itinerary, in which case the URL (and possibly associated POST data) must be sent to the server for further analysis. [0065]
  • As an optimization, the software checks for the existence of a connection from the client system to the Internet or other coupled network before attempting to communicate with the server. Since attempts to communicate with the server would fail in this condition anyway, this check prevents wasted processing and error-recovery. [0066]
  • The UID is not required to be strictly permanent. In an embodiment, the UID is stored in the Windows registry (a system database of configuration information) and therefore subject to accidental or intentional deletion. Each time the client starts execution, it checks for a UID in the registry, and if one is not present it creates one. It is this portion of the client that creates the UID after the initial installation so that installation is not actually handled as a special case. In the event that a client UID is destroyed and the client allocates another one, the only aspects of the system that are impacted are: the ability to correlate user operations performed with the old UID and those performed with the new UID; and, the ability to retrieve the user's previously selected/specified personalization options. [0067]
  • In the preferred embodiment, if the user provides personal information through the registration web page during the installation process, the client forwards it to the Start Servlet when it initiates contact. The server database records keyed by the UID also contain user personal information. This information can be manipulated by the user through the user interface presented in the Bar. [0068]
  • Personal information is used to control different aspects of the client behavior and of the server behavior toward a particular user. For example, the personal information controls whether a software client will be automatically updated if a newer client version is available. It can also be used to guide the information search performed by the server. For example, in the preferred embodiment where searches are performed for available airline tickets, the personal information can contain things like suppliers the user wishes to avoid, preferred ticket classes, senior citizen status, and other information that results in the availability of lower-cost fares. [0069]
  • In coupling to the server, a client creates a session identifier (SID). This is another 128-bit, universally-unique identifier. The SID is transferred in all future transmissions from the client that are part of the same session. The SID allows the server to distinguish semi-simultaneous requests made by different clients and between requests originating from different browser windows on the same client. [0070]
  • The first exchange between the client and server in a session is when the client performs an HTTP POST transaction with a destination URL that specifies the Start Servlet. This POST transaction transmits data including the UID, the SID, the personal information provided by the user (if it has not been previously transmitted), and the client's current version number. [0071]
  • In response to this POST, the Start Servlet returns several pieces of information including the version number of the latest client release, the version number of the lists of partial-URL strings stored by the client, and those items from the personal information associated with the transmitted UID that affect client operation. If the version number of the latest client release is larger (later) than the receiving client version number and the user has elected to receive client updates, the client undertakes downloading and installing the latest client version in parallel with subsequent primary operations. If the version number of the lists of partial-URL strings is larger (later) than the receiving client version number, the client downloads new copies of the out of date lists. These lists are used by the client to determine which URLs are candidates for itineraries and are to be forwarded to the server, and which URLs indicate the completion of a purchase by the user. [0072]
  • The Start Servlet also performs several internal housekeeping functions. It verifies that the supplied UID already has a matching record in the server database, and creates a record if it does not. It also creates a “Session Info” object which will persist on the server for as long as the session remains active. [0073]
  • FIG. 7 is a block diagram of a [0074] load balancing arrangement 700 of an embodiment. The client system 702 is coupled to at least one server site 704 using at least one network coupling 706, for example via the Internet. Load balancing is accomplished using a server site internal network 708 or backplane, but is not so limited. Alternate embodiments can use numerous types of couplings among the server components of the search system.
  • In order to ensure simultaneous availability to a large number of users, the server portion of the system is made failure-tolerant and is scaled to supply the processing power and network bandwidth necessary to support large numbers of simultaneous users. This is accomplished using a number of separate, hierarchical mechanisms including, but not limited to, DNSs, load balancers, round-robin techniques, and redundant backup monitor systems. [0075]
  • The system uses a dynamic two-level form of load balancing, but is not so limited. The first level of load balancing is accomplished through the Internet DNS service and directs traffic to various data centers around the world. Data centers are easily added or removed. The amount of traffic sent to each data center can be controlled to a level of approximately 1% of the total traffic. [0076]
  • The second level of load balancing balances the traffic within each data center (cluster) and uses a combination of typical load-balancing systems and system-specific balancing methods. This technique uses information including CPU and memory usage, network bandwidth usage, and number of current users of the individual CPUs in performing load balancing. A triple level of redundancy is built into the second level load balance. [0077]
  • Because the HTTP protocol is used for communication between the client and server, the client uses a specific server name to which requests are directed. For initial server contacts (exchanges with the Start Servlet and Load-Balancing Servlet), a server name is constructed dynamically by the client prior to making the first request of a session. The server name is created by concatenating a number of string fragments. [0078]
  • A first string fragment is a string constant representing the fixed “base” part of the server name. Any string that is a legal Internet host name could be used. In an embodiment, the base string is “start”. [0079]
  • The next string fragment is a produced by the client. The client generates a random integer in the [0080] range 0 to 99, inclusive. This integer is converted to a two-character string.
  • Another string fragment includes a string constant representing the naming domain within which the server systems are located. In a preferred embodiment, the domain is of the form “.somename.com”. [0081]
  • Assuming that the clients are implemented with a good random number generator, if a large number of clients are operating simultaneously, there will be a roughly equal number that have generated each of the 100 possible different server host names. There are several benefits to having effectively divided the set of active clients into a large number of differentiable categories based on the host name which they have constructed. [0082]
  • Regarding these benefits, it is important to recognize the capabilities of the network of DNSs that underlie the Internet and provide the translation between textual host names and numerical Internet Protocol (IP) addresses. First, even though different servers within a domain are logically related by the common parts of their domain name, there is no requirement that the corresponding IP addresses have any commonality or relationship. This allows, for example, the server identified by the host name “start00.somename.com” to be at an entirely different physical location from the one named “start01.somename.com”. [0083]
  • Furthermore, multiple different host names may also be mapped to the same numeric IP address. This means that an entire block of hosts names, such as “start75.somename.com” through “start90.somename.com”, and therefore a statistically-predicable portion of the total client traffic at any particular time, can be directed to a single server system/location. [0084]
  • Moreover, it is possible to modify the DNS mapping between host names and IP addresses. This allows the flow of traffic from some portion of the clients to be changed from one server to another without having to notify or directly communicate with the clients in any way. Further, because of the number of different host names that clients generate in an embodiment, the change from one server site/implementation to another can be performed gradually over time, with a resolution of approximately [0085] 1% of the total client traffic.
  • Once the client has determined a server host name, and DNS look-up has obtained the current matching IP address, the client attempts to establish an HTTP connection with the server IP address. At this point, an embodiment uses a typical load-balancing system to distribute the HTTP requests coming into an IP address across multiple individual server systems. [0086]
  • One aspect of an embodiment which is important in making it amenable to the use of typical load balancers: client HTTP requests made of the Start Servlet and Load-Balancing Servlet do not depend on any state stored on the server. This is important because with simple load balancing systems, there is no way to ensure that subsequent requests originating from the same client are directed to the same server without multi-processor support linking the various server systems. Note that while the SID is included in the data sent to these two servlets, the servlets do not make use of it for anything other than error-checking, because of the lack of session-to-server continuity present for these two servlets. [0087]
  • Only requests for the Start Servlet and Load-Balancing Servlet use the host name that is generated by the client and which is handled by the load-balancer. It is the responsibility of the Load-Balancing Servlet to provide a server host name that the client can use for all requests that depend on server state, which are directed to the Copilot Servlet. [0088]
  • Each set of server systems serviced by a typical load balancer is also associated with one or more monitor systems. It should be noted that this designation is logical rather than physical, and a single computer system could serve both as a front end server and as a monitor, as well as fulfilling other rolls, such as the database server. Monitor systems are responsible for: accepting periodically-transmitted loading statistics from each of the front ends; determining which front end systems have not reported statistics recently enough and which will therefore be considered “dead”; and, maintaining a circular list of the “not dead” front end servers, and returning the next server name from the list each time a server executing the Load-Balancing Servlet requests a server name to return to a client. [0089]
  • The monitor system is not responsible for notifying the load balancer of which servers are “alive” and “dead”. Instead, the load balancer uses its typical mechanism, such as making periodic checks of each server's network responsiveness with “ping”. [0090]
  • When a client is in the process of establishing a session it makes a new HTTP POST request to the Load-Balancing Servlet once it has received a response from the Start Servlet. The data sent with this request is the UID/SID pair. The Load-Balancing Servlet services this request by requesting the next available front-end server host name from the monitor system. It then returns the host name plus a set of configuration parameters to the client. The configuration parameters include, but are not limited to: a flag instructing the client whether to use clear (HTTP) or encrypted (HTTPS) communication with the server for subsequent transactions; the client timeout period for terminating a session due to user inactivity; and, the path from which a new version of the client can be downloaded by an existing client, which is used if the “latest client” version number returned by the Start Servlet is larger than the requesting client's version number and the personal information returned from the server for the current UID allows automatic updating of the client to occur. [0091]
  • The search system of an embodiment uses two separate host names that are DNS-mapped to the same front-end server. Thus, the system maintains two separate names for each front end server and returns the matched pair of names to the client. This configuration helps avoid delays in system responsiveness associated with WININET. [0092]
  • Within a Windows system, most HTTP requests generated by software running on the system pass through a standard Windows library that contains common, low-level functions that implement large parts of HTTP. This library is called “WININET”. In typical web browsing, most pages displayed actually cause a large number of discrete HTTP requests, one for the HTML source of the page along with additional requests for each embedded object. Because the client user interface displayed in the bar is implemented as a heavily-scripted web page, changes to the bar's display generally also cause the bar's contained browser control to generate a number of HTTP requests through WININET to the client's assigned front-end server. [0093]
  • In order to optimize network bandwidth utilization, it is common for typical systems to start multiple HTTP requests simultaneously. WININET is no different and is also capable of processing several requests in parallel. However, the details of its implementation cause it to place a cap on the total number of requests that can be simultaneously active to the same internet domain name. When software (IE, a browser control, or a client) issues a larger number of requests than this cap, WININET queues all but the first requests and starts them sequentially as in-process requests complete. In normal web-browsing operation, this leads to a relatively high-performance system. [0094]
  • However, HTTP requests generated by the client consist not only of fetches for elements of the client's user interface but also exchanges of control data (candidate search requests, purchase requests, transactions for session opening, closing and “keep alive”, etc.). It is possible for the bar to need to exchange control information with the server while a user-interface update/reload is in progress. If this occurs, WININET may queue the control transactions behind the (typically larger and much less important) UI data fetches, causing a perceptible pause in the system's responsiveness to the user. [0095]
  • A search system of an embodiment based on WININET overcomes this problem by having two separate server names for each physical server (IP address) within a server site. When this name pair is returned to the client by the Load Balance Servlet, one name is subsequently used for most URLs used to update the HTML displayed by the bar and the other is used exclusively for control transactions (usually POSTs to the Copilot Servlet). Even though both logical names evaluate to the same IP address when a DNS lookup is performed, WININET's cap for the maximum number of pending transactions is implemented in terms of the logical name only, so that it treats the two server names as entirely independent and each has its own cap, even though they are physically the same device. Thus, the client ensures that control transactions are never queued behind user-interface updates. [0096]
  • Another benefit of establishing separate server names for the control and (static) data-fetching transactions is that the server sites could be reorganized, in the event that it provides a performance improvement, into a set of servers that serve only static data and another set that run the servlets but do not serve the static data. With the structure described, such a reorganization could be performed in any combination of server sites at any time and completely transparently to the client systems. [0097]
  • In a group of front end servers, provision is made for there to be multiple monitor systems. Each front end has a list of all the available monitors. If the monitor at the top of the list stops responding to the transmission of loading statistics or to requests for front end server names from the Load-Balancing Servlet, then the front end server will move on to the next monitor system on its list. In this way, if a monitor system fails, the associated front end servers will gradually change over to using the next, or live backup, monitor system. [0098]
  • While an embodiment uses a round-robin scheme for allocating new client sessions to the available pool of front end servers, a more complicated algorithm can also be employed. Each front end server sends a variety of loading information to the monitor server approximately once per second. This information is collected to provide statistics on the system's over-all operation, but could also be used as the input to a more complicated, dynamic algorithm for determining which front end server should be assigned a particular client session. [0099]
  • For example, an alternate means for determining the server to which a particular new session is to be allocated takes into account the total number of active sessions on each server. The round-robin mechanism is modified so that it allocates a session to a server only if that server already has fewer or the same number of active sessions as the server with the most active sessions. [0100]
  • In an embodiment, a typical Java Virtual Machine and execution environment known as “Tomcat” is used to execute the servlets on the server systems. As part of Tomcat's initialization process following the boot-up of a server system, the server registers itself with the first monitor system on its list that will respond. [0101]
  • On each front end server is a process that periodically executes, collects performance and loading data, and transmits it to the current monitor system. This process executes at the rate of approximately once per second so that the transmission of performance data acts as a regular heart beat from the front end server that can be anticipated by the monitor system. The performance data packet transmitted by the front end server heart beat includes information about the server CPU usage, the current free memory of the system, and the number of database queries that the front end has generated in the last second, but is not so limited. [0102]
  • It is noted that rather than having two separate servlets and transactions to initiate the connection between the client and server, an alternate implementation combines the functions and responsibilities of the Start Servlet and the Load-Balancing Servlet into a single servlet. This is possible because the client does not need any of the information returned from the Start Servlet in order to create its POST to the Load-Balancing Servlet. This alternate embodiment, thus, could provide an improvement in overall system performance because only a single client POST of information would be required and the servlet could return all of the necessary information in one response. [0103]
  • The client of an embodiment maintains numerous lists of strings that it uses to compare with the contents of different URLs. These lists can be updated from the server. These lists are stored in the Windows registry, although any persistent client storage could be used as effectively. [0104]
  • As discussed herein, the search system automatically opens the Bar on the client browser and displays information relevant to the user's current activity. One of the string lists maintained by the client contains partial URLs that the client matches against the URLs from which the user's browser attempts to load. When a URL matches, the client forwards the user browser request to the server for further checking. This hierarchy serves to reduce the amount of client/server bandwidth that is consumed by monitoring URLs without unnecessarily complicating the operation of the client. [0105]
  • Another list of strings maintained by the client is used as part of the mechanism for monitoring whether the user makes purchases from the web sites of travel suppliers to which the system directs them, referred to as “buy tracking”. This list contains a pair of strings for each entry. The first string in the pair is the URL of a page on the travel supplier's web site to which users are directed on the completion of a purchase, typically a “receipt” page. [0106]
  • The second string in the pair is an extraction specifier. The extraction specifier can specify the extraction of multiple distinct portions of a receipt page, including specifying a particular region/string within the receipt page that should be extracted and transmitted back to the server. The extraction may occur over a sequence of pages if the necessary purchase identification information is found in more than one page. This string is typically a piece of data that uniquely identifies the purchase transaction. This can be used as proof to the travel supplier that the purchase transaction originated from a referral by the search system. This can also be used as the basis for a payment arrangement between travel suppliers, or other information suppliers, and the maintainer of the search system. [0107]
  • When the client makes a request to the Copilot Servlet it forwards a URL from the browser along with any associated POST data. The server response is an HTTP response packet containing either: a single string “0”, indicating that a search cannot be performed based on the data transmitted and that there will not be more data from this request; or, the string “1”, indicating that a search has been started based on the data within the request. In this case where the search has been started, the “1” is followed by the HTML and JavaScript source for the display of search results, followed by the results themselves. [0108]
  • The Copilot Servlet of an embodiment sends the processed search results to the client as they become available, along with status about the progress of the search. The client receives the total number of travel suppliers that are to be searched, the number that have returned responses to the server search requests, and the total number of data items that have been found, processed, and sent to the client. This status information is displayed for the user as it is received, in order to give the user the sense that things are progressing rapidly. This almost-immediate feedback to a search is a point of novelty in the search system. [0109]
  • An area within the Bar is used to display a vertically scrolling list that presents summaries of the search items found. The items are placed into this list based on a user-selected sort order. For example, the display of airline flights for an itinerary can be sorted based on the ticket price, the number of stops, departure time, arrival time, trip time, or supplier. Note that the particular criteria on which the records can be sorted is less important than the fact that the records can be sorted based on a user-selected criteria and that the sort is performed on the client so that the system responds quickly to the user changing the sort selection for a progressing/completed search. [0110]
  • In order to ensure that user expectations are set correctly, and to prevent resources from being leaked, or allocated but not recovered for reuse, the client and server both track numerous types of time out periods. [0111]
  • The JavaScript that executes within the client Bar of an embodiment starts a time-out down counter each time a user action begins a new search. This counter is used to control the period of time in which the search results are considered valid, an important consideration when dealing with travel bookings, including airline tickets. As search results expire, any electronic links provided to the associated supplier over which the associated travel item or component could be reserved or purchased can be deactivated, but the system is not so limited. [0112]
  • Since airline ticket pricing and availability fluctuate rapidly, it is important to prevent the user from deciding to purchase a ticket after it becomes unavailable. To prevent this, the JavaScript waits for a period of several minutes after the START of the search. After this period, it notifies the user that the results are no longer valid and deactivates the purchasing controls associated with each result displayed. [0113]
  • The time out period of an embodiment is approximately 10 minutes, but is not so limited. However, this period must be closely related to the individual times that the travel supplier systems will hold a reservation for purchase after they respond to a query. Therefore, the period is likely to be radically different in systems designed to search for different types of information, as well as having to be updated from time to time within an embodiment. Because the timeout is within the JavaScript code, which is downloaded from the server each time the Bar is opened, it can be easily changed independently of having to create and distribute new clients. [0114]
  • This time-out is not needed in a system configured to search for information that is not time sensitive. For example, a system that searches for purchasable goods with rapidly-varying inventory levels would presumably use a time-out period to invalidate search results after some reasonable period. Alternately, a system that searches for reference information or for purchasable goods that are made-to-order (and which therefore do not have finite inventories) would not have to use a search-results time out. In another alternate embodiment the same user action triggers simultaneous searches for all available sub-categories (e.g., air, hotel, car) of the supported type of information (e.g., travel reservations). [0115]
  • Separate searches can be performed by the user for airline reservations, rental car reservations, and hotel reservations. The user selects among these three sets of search results using tab controls displayed in the Bar. The client-side JavaScript is capable of maintaining separate sets of search results for each category, and has a separate time-out counter for each. It is therefore possible for the user to search for all three types of travel reservations, and for them to switch back and forth among the different result displays without interfering with the separate expiration counts on each set of search results. [0116]
  • Because sessions consume server-side resources, it is important to ensure that they do not persist and remain open indefinitely, as idle sessions would eventually accumulate and clog the server systems. As such, there are three mechanisms for closing sessions and allowing the associated server resources to be freed. [0117]
  • In one mechanism for closing sessions, the client may be explicitly turned off by the user closing related instances of their web browser. When this happens, one of the shut down operations performed by the client is to send a POST to the Copilot Servlet informing it of the end of the session. On receipt of this message, the servlet frees its session-specific resources. [0118]
  • In another mechanism, the client monitors user actions. Each user action performed that is related to the client's operation is used to reset a time out down-counter. If the user does not perform any operations before the time out expires, the client closes the session and notifies the server of the fact. In an embodiment, the timeout for this period is approximately 30 minutes, although it could be adjusted substantially without significantly compromising the system. [0119]
  • One other mechanism uses a server time out counter. This counter is reset by each transmission from the client. If the timeout period elapses, the server assumes that something has happened to the client, such as an unanticipated loss of power, and frees the resources associated with the current session ID (SID). [0120]
  • In the unlikely event that the server times-out a session which is still active on the client, subsequent client transactions with the timed-out SID will still be honored so as not to frustrate user actions. Instead of rejecting the unexpected SID, a new server object is allocated for the SID and, since the occurrence of this condition could indicate an unauthorized attempt to access the system, the fact that it occurred is logged. [0121]
  • Each item or purchasable travel reservation that is found and reported to the user by the search system of an embodiment is displayed along with a “reserve” user-interface control or icon. When the user activates this control, the client directs the user's web browser to the particular page of an associated supplier web site from which the user can complete the purchase of the selected item. [0122]
  • The complexity of and mechanisms for performing this hand-off depend on how the information was originally gathered from the supplier and on the structure and features of the particular supplier system. There are three general categories into which the different interfaces between the system and the suppliers can be grouped. [0123]
  • One system gathers information using a special-purpose interface between the system and the supplier servers. Another system gathers information by accessing a third-party database which contains information about the supplier. Still other systems gather information from suppliers through a web site designed primarily for direct interaction with individuals using web browsers. [0124]
  • When a special-purpose interface is used between the search system and the suppliers, part of the interface design includes the creation of a mapping between the information returned and a point (URL) within the supplier's web site. Thus, the majority of the burden of ensuring that the supplier web sites can easily produce a “purchase” page for each item that may be returned by the supplier servers over the special-purpose interface is assumed by the supplier. [0125]
  • When a third-party database is used, the system should be capable of causing the supplier web sites to generate a purchase page corresponding to the user selection. In the simplest case, this entails creating a URL within the supplier web sites that contains information identifying the user selection. If the supplier web sites are not structured to use URLs that can be composed directly, then the system will have to generate a sequence of accesses to the supplier sites on the user's behalf in order to reach a point at which an appropriate purchase page is available. [0126]
  • This process is performed by a server component that is designed specifically to interface with a single supplier web site. In general, a system component that is designed to manage the interface to a single external system will be referred to as an adapter. The system of an embodiment uses several different types of adapters in order to normalize different types of interfaces to external systems as discussed herein. Search adapter is used herein to indicate a server component that gathers information about a supplier's offerings. Reserve adapter is used herein to indicate adapters that generate queries to a supplier web site in order to ensure the existence of a purchase page corresponding to a user selection. [0127]
  • It is possible that, in the cases where a search adapter interfaces with a system other than a supplier web site, that the supplier actually does not have a web site that can be accessed by the user to make purchases. In this case, an alternative means for performing the purchase if the user selects an item returned by that supplier must be available. The preferred arrangement is for the owner of the search system to have a parallel and related travel-agency web site that can be used to purchase reservations for those suppliers that cannot support their own purchases. [0128]
  • The most potentially-complicated case is the one in which information is gathered by a search adapter making direct requests from a supplier's web site/server which is designed to provide a human-usable interface. It should also be noted that many of the considerations for this case also apply to the operation of reserve adapters, as both reserve adapters and search adapters (that access a web site) can generate a unique state within the supplier web server to which the user's web browser must be given access. [0129]
  • In one case, the supplier web site is designed such that all of the information that the supplier server requires in order to generate a purchase page is encoded within the purchase page URL. When this is the case, the user's web browser can be directed to the correct purchase page simply by the client instructing it to navigate to (load from) that URL. In the system of an embodiment, the URLs for each purchase page of this type are transferred from the server to the client along with each search result item, so that the client can provide the “reserve” control's functionality completely without further client/server interaction. [0130]
  • In another case, some or all of the information required by the supplier web server to generate the desired purchase page is stored in cookies that are set when a previous page of the search sequence is returned by the web server. For example, when a search adapter interfaces to a supplier web site, it is common that, because of the supplier web site design, the adapter has to access several pages of the supplier web site in sequence, possibly emulating the operations of a human user filling out a data-entry form at one or more steps of the sequence. Along with the source for each web page returned to the search adapter by the web site there may be one or more cookies. Because the adapter is interacting with the web server as if it were a web browser, it stores each cookie returned by the web server and transmits it back with the next request. However, since the web server depends on the values stored in the cookies in order to generate the correct pages, the cookies have to be transferred from the server to the user's browser when the “reserve” control is activated. [0131]
  • In an embodiment, all of the cookies set by all of the web servers from which items were found are transferred to the client along with each data item. They are stored in the client and then, if the user selects a data item with associated cookies, the cookies are set in the user's browser prior to it being navigated to the associated URL. In addition, if the purchase page of the supplier web site is accessed using a POST transaction instead of a GET, the client is also supplied with a copy of the POST data created by the server for accessing the correct page. Thus, the client can execute the hand-off to a supplier web site on its own, without further interaction with the system servers. [0132]
  • There are some supplier web servers that are sensitive to the specific client (via testing the IP address or other mechanisms) from which they are accessed. Because of this, it is not possible for the client web browser to access the same supplier web pages that are searched by the adapter. To provide users access to purchase pages provided by this type of server, the system server includes a proxy capability, referred to as web relay. When the user selects a “reserve” control associated with a data item returned by such a server, the user's browser is navigated to a special URL handled by the system web server. The relay servers then fetch the matching pages from the supplier sites and present them to the clients. In order to provide a seamless navigation experience for end users, all subsequent navigation is routed through the relay servers because the user's session information related to a particular supplier is possessed by the servers rather than the user's client (browser). [0133]
  • For performance reasons, every navigation event is not routed through system relay servers because this generates too high a volume of traffic on the servers. Therefore, the system limits relay to only those URLs within the same supplier domain. But, if needed, every navigation can be routed through the relay servers for the entire Internet. [0134]
  • A simple implementation of web relay/proxy could be created in which all operations are performed by the relay server and it operates only by identifying URLs contained in web pages and replacing them with URLs pointing to the relay server. However, given the complexity of modern web pages, especially dynamically generated pages, it is very difficult to fully anticipate where all of the URLs might appear within the pages. For instance, some URLs will likely be within well known HTML tags, but others can be within quotes as part of a string inside of scripts, where the string can be referenced later in different parts of the page. [0135]
  • In order to correctly handle web pages in which the URLs identifying navigation destinations are difficult to statically detect or are created dynamically within the page, the system of an embodiment uses both the server and the client to detect URLs that should be rerouted through the web relay. The client can capture all of the navigation events created by user actions in the main browser window before the browser actually begins to fetch data from the target URL. The client can then modify the URL to route the navigation to the relay server before allowing the main browser window to fetch data. By modifying the URLs in this manner, the client also lightens the server load and improves system performance by requiring less extensive web page processing when the relay server forwards pages from the supplier web site to the client. Another important feature of this system is that without the client side being present, the server is fully capable of routing the navigation on its own; in this case, it becomes a conventional relay server. [0136]
  • The system server/client web relay architecture consists of server-side preprocessing of web pages served and client-side real-time processing of navigation destination URLs. After a user selects a specific “reserve” user-interface control, the server will try to determine whether the client side is prepared to route navigation events through the relay server. If the server detects that client web relay is possible, the server hands off the responsibility for routing navigation through web relay to the client, and merely fetches (proxies) requested pages. If the server does not detect that the client can modify navigation URLs, the server scans each fetched page and processes all of the URLs in the page (as best it can) before serving it to the client. [0137]
  • The client portion of web relay relies on the web browser forwarding navigation events to the client, and the client's capability of capturing these events before they actually cause data to be read from the Internet. After capturing these events, the client redirects the browser navigation to the system relay servers with all of the necessary data. Then the relay servers fetch the correct pages from the supplier web site and send them back to the client. The main advantages of using the client to modify/redirect URLs are that the client is theoretically able to catch all destination URLs used, regardless of how they are stored in a web page or when and where they are actually generated, and that distributing the processing required for redirecting URLs greatly relieves the processing load on the relay servers. [0138]
  • An embodiment of the relay client is implemented specifically for Microsoft Windows operating systems and the IE web browser. It uses the COM ActiveX interface provided by IE to intercept and modify navigation events generated by user actions in the main browser window. In general, any environment that provides a mechanism to capture and modify user navigation events could be used. [0139]
  • All of the functionality of the relay client is realized in an ActiveX browser helper object (BHO). The BHOs run in the same memory context as the browser and can detect any operation on the available windows and modules. In an implementation, the relay client functionality is integrated into the same client BHO that contains the other portions of the client. However, the client functionality related to web relay can also be implemented in a separate BHO. The events that the BHO handles for the client portion of web relay include, but are not limited to, BeforeNavigate, NewWindow, and Document Complete. [0140]
  • In the BeforeNavigate event, the client captures the navigation events, checks whether the browser destination URL is already rewritten to point to the relay server. If not, and the URL does indicate the relayed supplier web site, the client rewrites the URL, cancels the current navigation, and initiates a new navigation event with the rewritten URL. Care should be maintained with the cancellation method used and, in so doing, the client maintains the original URL of the currently displayed document so that the client can anticipate and correct the problems. [0141]
  • Special care is also used with supplier web pages that employ frames. A frame-organized display in a web browser is accomplished using one page that contains a frameset definition and URLs indicating the initial content for each frame of the frame set, and the separate pages identified by these URLs. Handling of framed displays is accomplished by having the client ignore the BeforeNavigate event and letting the page containing the frameset load, unmodified, from its original URL on the supplier web site. All of the subsequent navigation (loads) to the individual pages displayed in the different frames of the frameset are then processed by the relay functions of the client BHO. [0142]
  • An alternate method for handling relay of the pages that make up a frame-organized display is for the relay server to modify the URLs, contained in the page with the frameset definition, for the individual pages that fill the display frames. This would ensure that, from the browser's point of view, all of the page components reside in the same Internet domain (that of the relay server). This prevents the security “sand box” restrictions imposed on JavaScript executed within the pages by the browser's interpreter from interfering with the page having the same operation as it does when not relayed. [0143]
  • The NewWindow event has the client capturing the lEs new window creation event. When a user clicks a link in the displayed page that results in the creation of a new browser window, the client creates the new window itself so that it has full control of the new window, and will receive subsequent events generated from that window as well. These windows generally are invoked by JavaScript URLs (or URLs expressed in other scripting languages supported by browsers). Therefore, in many situations, the URLs of the page intended to be displayed in the new window are not generated correctly due to the relayed location in the address Bar. [0144]
  • The client handles these cases by passing the parent page/window unmodified URL to the new browser window in order to recover (regenerate) the original (unmodified) URL of the new window, and subsequently issue a new navigation from the new window. Again, special care is necessary due to the differences in the various version of IE. For some older versions of the IE browser, the client cannot issue a new navigation during the event handling of BeforeNavigate for the new window. In order for the new window to be functional, the client allows the first navigation event to be fetched unmodified to avoid having the browser hang. This is done even if the URL for the navigation is wrong. Once the new window is open, the client can issue a new navigation with the correct URL after the previous navigation is complete. [0145]
  • The DocumentComplete event involves the client capturing this event to monitor the end of document loading in a browser window. If the client detects that this event occurs after the first document has loaded in a new browser window, the client verifies whether the loaded URL is the correct (relayed) URL or not. If the URL is incorrect, the client uses the current location (URL) of the parent (creating) window to reconstruct a valid, relayed URL. In an embodiment, the client and server are designed not to relay URLs used to load images and other embedded objects in the requested web page through the relay servers. These objects are instead loaded directly from the supplier web site. This is purely a performance optimization, and not a requirement for the system's operation. However, by avoiding routing of these objects through the relay servers, it is possible that the relay server may not obtain all of the necessary session information (usually stored in cookies) sent from the supplier web servers along with one or more of these objects (and not the pages forwarded to the client). Therefore, the client will check the cookie store in the user browser to make sure it finds and forwards back to the relay server all of the related session information. [0146]
  • An embodiment of the web relay server is implemented using Java Servlet technology like the other server portions of the system. And, like the other servlets, the implementation of this system is not limited to any particular programming language or even to a software implementation. The selection of Java is to conform to the rest of the system. Any server technology should be able to fulfill this task. When a request comes into a web relay server, the server first fetches the SessionInfo object (the same as used by the Copilot Servlet) stored in the system based on the specific UID and SID. This SessionInfo object contains information related to the particular user session, including context information generated by search adapters accessing supplier web sites. The relay server then retrieves the information from the Sessioninfo object related specifically to this request, for instance, the cookies with the same domain as the requested web site. Also, the relay server handles session information sent with the request from the client, if any. [0147]
  • The relay server then makes a request, on behalf of the user browser, to the supplier web site. After the server fetches the requested page, it checks to see if this page is originated from the same location specified in the request or if the request was redirected to a different location. The redirection can happen in three different cases, individually or in combination: the redirected location is at a different security level, for example, from http to https or vice versa; the redirected location is at a different domain; and, the redirected location is at the same domain but at a different path. [0148]
  • In the first case, the relay server has to reopen the connection with the user browser using the correct (new) protocol to avoid introducing a security hole in the client/supplier communication link. In the other cases, the returned page can have relative URLs that need to be resolved based on the redirected location rather than the original location, so the client responds by sending a redirection to the user browser to make sure that all objects in the page are loaded correctly and that the subsequent navigations from this page have correct URLs. [0149]
  • For performance considerations, if any or all of the above cases occur, the relay server caches the fetched page so that when the client subsequently issues a new request based on the redirection, the server can forward this page immediately without fetching the page from the supplier web server again. [0150]
  • After completing these steps, the server is ready to process the requested page. The relay server first checks whether the client is actively modifying relayed URLs. The relay client informs the server of its presence/activity by turning on the relay start switch in the page requests to the server. If the client is relaying, the server skips scanning and modifying the URLs in the page. Otherwise, the relay server processes the page contents received from the supplier web server, tries to find all the URLs possible in the page source, and modifies them so that they all point to the relay server. [0151]
  • While there are a number of business models supported by the system of an embodiment, and several different revenue streams that it could provide, the system is financially supported by payments received for each user purchase of travel reservations that occur as the result of the system referring a user to a travel supplier web site. Therefore, the system generates reliable records of user purchases supported with information that the travel suppliers will acknowledge as proof of purchases. [0152]
  • The portion of the system operations involved with detecting and logging user purchases is referred to herein as buy tracking. As discussed herein, the client stores a list of strings, periodically updated from the server, that are used to determine which user actions are considered user purchases. This list contains two strings per entry. One string is the URL of a supplier web page to which users are directed following a successful purchase. The other string is an extraction specifier containing instructions to the client as to the data that should be extracted from the page with the URL and POSTed to the Copilot Servlet. [0153]
  • In operation, a user purchase transaction begins with the user being presented with a list of different travel options that the system found from a number of suppliers. The user selects one of the presented options with the “reserve” control presented in the client Bar. The client navigates the web browser to a purchase page on the selected supplier web site. In an embodiment, the user directly interacts with pages of the supplier web site, sometimes providing personal and/or payment information. Upon completion of the purchase, a supplier web site may deposit the user on a “receipt” page that contains some type of purchase tracking information, such as a confirmation number or order number, but is not so limited. [0154]
  • The client receives each URL that the browser attempts to fetch from the network. These URLs are compared against both of the URL lists that the client maintains. When the browser has navigated to a receipt page of a supplier web site, the page URL matches the buy-tracking list of URLs. In response to this match, the client interprets the extraction specifier string associated with the URL, and uses it to extract a string from the web page content received by the browser from the supplier web site. The extraction specifier of an embodiment is created such that this string will contain the confirmation number (or equivalent) for the purchase. The client POSTs the UID/SID, the URL within the supplier web site, and the extracted string back to the server where it is logged and used to create an invoice for the supplier. [0155]
  • It is noted that the actual URL strings maintained by the client need not be exact/explicit URLs, but instead can be templates or regular expressions that match a family of actual URLs. This is convenient because some web sites incorporate user-specific or transaction-specific information in the URL which is not significant to identifying the pages that are receipt pages. [0156]
  • A significant aspect of the system's design is that, even though the client is integrated with the web browser, the system does not depend on the web browser to store state in cookies. Note that this is different from the cookies that the system places with the web browser on behalf of a supplier web site. Ignoring this type of cookie, which is used only for those particular suppliers whose web sites require it, the system does not need to set any cookies. [0157]
  • Instead, the state used in system operation is stored in a number of locations, but is not so limited. One location where state information is stored is in the server, in the data-structure allocated for each SID. Further, state information is stored implicitly in the web pages (HTML and JavaScript) displayed within the Bar. Each time the server (Copilot Servlet) returns content (such as user-interface information or search results) to the client for display in the Bar, the Bar retains that information. Thus, any information that is filled in to the page content sent to a specific client is implicitly stored in the client and is not required to be retained on the server. [0158]
  • In operation, the client/server system of an embodiment generates a significant amount of information, about the behavior of both users and suppliers. This information is reliably retained so that the correct operation of the system can be verified, the system can be further tuned/improved, and because comprehensive data about buying and selling habits is an asset of significant value. [0159]
  • At the most basic level, a significant amount of data is logged simply by the HTTP server (httpd) processes running on each of the server systems. Because HTTP protocol is used for the communication between the client and server, the httpd is responsible for determining whether each incoming request should be routed to one of the servlets, whether it is for a static piece of data (such as a graphic used by the client user interface displayed in the Bar), or for a page proxied from a supplier web site through a web relay. Thus, each request from a client passes through an individual server system httpd and is logged, including some performance information and the response code the server returns to the client. In addition to the logging of transactions as they go through each server, the Copilot Servlet also logs each request that is generated to a supplier, and all of the responses to that request. [0160]
  • For the server internal couplings between the servlets and the database servers, the search system uses a form of database connection pooling for all database connections. Opening and closing connections to a database is an expensive operation. In order to improve performance, connections are created once and inserted into a pool. When the system requests a connection it is delivered from the pool. When the connection is released or no longer needed by the system, it is returned to the pool. [0161]
  • FIG. 8 shows a [0162] client system organization 800 of an embodiment. The client is implemented for Microsoft Windows operating systems and the Microsoft IE web browser, using the ActiveX and Component Object Model (COM) architectures/technologies, but is not so limited. As such, there are many other system environments in which the client could be implemented. The selection of the Microsoft-oriented environment for the client implementation is just a matter of economy and popularity (market-share), and does not implicate technological issues.
  • As discussed herein, the client is implemented as a set of COM objects that are packaged together in a [0163] single Windows DLL 802 for installation and use. There are three primary COM objects (objects that are assigned COM GUIDs and registered in the Windows registry 810) that make up the client: the Browser Helper Object (BHO) 804; the Bar object 806; and, the installation object 808. The division of the client into these primary objects 804-808 and the different minor (non-COM) objects is an artifact of restrictions imposed by the architectures of IE, COM, and ActiveX and has nothing to do with the underlying architecture or functions of the client.
  • The BHO is created to extend IE. When IE first initializes, IE searches a known area of the Windows registry for the GUIDs of registered BHOs. Internet Explorer creates an instance of each BHO that it finds, which includes the search system client BHO. When the BHO is created it couples to different portions of IE's COM interfaces so that it is notified of the user actions that must be monitored to determine if the Bar should automatically be opened. [0164]
  • After this initialization, the BHO monitors user actions until IE is terminated and the BHO is destroyed. Unless the BHO observes a match between a URL being requested by IE and one of the entries on the URL list, no other actions are taken. [0165]
  • Another task of the BHO is to manipulate the Bar object based on feedback from requests submitted to the server. For example, if the BHO observes a match between a URL the IE is requesting and the URL list, it opens a new session (if not previously accomplished) and forwards the requested URL to the Copilot Servlet for further checking. If the Copilot Servlet returns a “1” string, indicating that it has started a search, the BHO creates a Bar object and opens the Bar sub-window on the screen if it is not already visible. Further, alternate embodiments can implement other return codes or strings that result in other types of actions. [0166]
  • After this, the BHO receives a URL that references the client's assigned (via load balancing) front-end server. The BHO uses the COM interface with the Bar to cause the Bar to load from the specified URL, which gives the Copilot Servlet the opportunity to transmit the HTML and JavaScript that form the client user interface. Subsequently, each time a new set of content must be sent asynchronously from the server (e.g., not at the request of the user or the JavaScript executing within the Bar) the BHO will again cause the Bar to navigate to the new, server-supplied URL. [0167]
  • Additionally, with the help of the Bar, the BHO is responsible for implementing the client-side session time out counter. The BHO maintains the counter, resets it when it detects relevant user activity (based on IE's navigating to new URLs at user requests), transmits the end-of-session message to the server when the counter expires, and receives “reset counter” messages from the Bar when the Bar detects user activity (such as manipulating controls within the HTML user interface displayed by the Bar) of which the BHO is not directly informed. [0168]
  • As part of managing the session time out, the BHO also periodically provides messages to the Copilot Servlet informing it that the session is still in active use by the user. This prevents the server from timing out the session in the case where the user is performing actions that are entirely local to the client or that involve only a third-party or supplier web site and which, therefore, do not cause the client to send requests to the system server. [0169]
  • Like BHOs, Bar COM objects are treated as a special type of extension by IE. A Bar object can be listed in the Windows registry in such a way that IE automatically creates toolbar buttons and menu entries that correspond to the Bar. When the user selects one of these Bar-specific controls, IE automatically loads and initializes the Bar COM object, so that the Bar appears as a sub-window in the left hand side of the IE window. [0170]
  • In an embodiment, the Bar object is capable of detecting whether the BHO object has already been created and initialized, or not, and of creating the BHO object if it does not already exist. While this should not be necessary, there are some cases where the BHO does not get created correctly when IE starts. Therefore, the Bar's ability to create the BHO ensures a working system at least from the point in time where the user explicitly attempts to open the Bar. [0171]
  • The Bar is responsible for the user-visible and user-interface aspects of the client. However, there is actually very little software involved in this aspect of the client because the Bar object takes advantage of the browser control COM object that IE makes available. Essentially, instead of actually drawing and managing a user interface itself, the Bar object takes the area of the display screen for which it is responsible and fills it completely with a browser control. The browser control behaves exactly like a web browser application, interpreting HTML, JavaScript, and all other data types supported by the IE installation, except that the browser control takes commands from the Bar software instead of having a user interface for them. This structure allows the user interface of the client to be rapidly implemented, easily modified, and easily updated because the complete user interface is fetched from the server on a regular basis, just like any other web page viewed. [0172]
  • Just as the BHO receives notification of user events that occur as the result of user actions in the IE main window, the Bar object receives notification of user actions that occur within the Bar browser control. With most of the appearance and behavior of the user interface encapsulated in the “softest” portions of the client (the server-supplied HTML and JavaScript), the Bar object must perform only those portions of the client operations that require access to the operating system or an IE software interface that does not have a JavaScript-equivalent. Primary in this category are operations in which information or control is shared with the BHO, as there is no object in the JavaScript object model equivalent to either the generic, Microsoft-defined BHO interface or the BHO interfaces that are specific to the client implementation. [0173]
  • FIG. 9 diagrams a flow of [0174] supplier cookies 900 of an embodiment among suppliers 902, system servers 904, and the client/BHO 906 and web browser 908 of user systems 910. It is noted that this flow diagram would be different for operational cases that do not use auto-open, that require web-relay for reserve/purchase, or that search a source other than a supplier web site. Another key function performed by the client Bar is the handling of several types of cookies, including: cookies originally provided to the system server (search adapter) by a supplier web site that was searched; cookies sent to the client from the server along with data items that originated on the cookie-generating supplier web site; and, cookies set in the browser if the user selects the “reserve” control for a data item with associated cookies. This is a non-trivial process because the normal behavior of a web browser is to note the Internet domain from which a cookie was originally sent and send the data for that cookie along with only those HTTP requests (GET/POST/etc.) directed to the same internet domain. In fact, IE will not accept cookies that are to be sent to a different domain than the one from which they are set. Unfortunately, when the server sets cookies by sending them along with HTTP responses to the browser control in the client Bar object, the browser control associates these cookies with the internet domain containing the search system server and not the domain of the supplier web server that originated the cookies. Because of this, if no other action is taken by the client, the cookie values will not be sent along with the HTTP request for a “purchase” page from a supplier web site.
  • In order to ensure that the cookie values originally set by a supplier web server to the search server (a search adapter executing as part of the Copilot Servlet) are sent back to the supplier web server when the web browser attempts to access it, the client manipulates the browser cookie storage directly. To make this possible, when the server sends cookies from a supplier to the client, it modifies the name of the cookie first, so that the revised cookie name contains the original name plus the text string identifying the supplier internet domain. [0175]
  • When they are received by the browser control, the cookies from the supplier sites are stored as if they originated from the search system domain. When a “reserve”(purchase) control in the client user interface is selected by the user, the client retrieves all of the cookies stored regardless of their original domains. The client then processes the cookie names to remove the originating-domain information (originally added by the search server before transfer to the client). An alternate embodiment has the client check each cookie to identify all cookies, based on their names, that should be set in the browser for the selected supplier web server. [0176]
  • In either embodiment, once the client has all cookies to be set, it processes the names to remove the domain information, and then calls an internal IE interface to set the cookies using the supplier web site domain as the domain to which the cookies should be sent. It is noted that the client does not “clean up” cookies that are stored on behalf of supplier web sites. Instead, if the user performs several searches, the cookies stored as the result of each later search replace the same-named cookies from earlier searches, so that the relevant cookie values are always current when they are needed. [0177]
  • An advantage of the cookie handling methods of an embodiment is its simplicity. By sending all of the cookies by the supplier web sites to the client along with their corresponding data items, in most cases the client can handle the user selection of a “reserve” control entirely on its own, without making a new request of the server. This means that in most cases the server can, after logging, discard all information and data structures related to a particular user search as soon as that search is completed, without having to coordinate with the client JavaScript's time out counter. The exception to this case is supplier web sites that are accessed from the web browser by web relay through the system server. For these types of sites, the server maintains supplier-specific information in order to perform the relay and fetch pages from the supplier web site. [0178]
  • An alternate embodiment of the system handles cookies by maintaining the list of cookies that match each search result on the server. The client then makes a separate request to the Copilot Servlet to retrieve the cookies when and if the user activates a “reserve” control. [0179]
  • Another alternate embodiment stores the cookies in the client in a different manner. For example, in the HTML that is sent from the server containing each data item found during searching is placed a block of JavaScript or HTML that includes the name/value pairs for all of the cookies associated with that data item. When the “reserve” control is activated, the JavaScript code executing within the Bar unpacks this list and provides it to the Bar object to be set within the browser. This method is preferred to having the JavaScript code set the cookies, as it avoids any difficulties with setting cookies so that they appear to have originated from a domain other than the one that originated the page setting the cookies. [0180]
  • There are numerous other objects used within the client that are not exposed to the operating system and IE via COM. The design of and partitioning between most of these objects is the result of simple implementation choices and has no bearing on the behavior of the system or client described herein. [0181]
  • One internal object, however, is of significance, although it would be unnecessary in an implementation of the client that did not use multiple COM objects. While it is possible for IE to create any of the COM objects that make up the client, and it is possible for the COM objects to create each other, it is very difficult to establish links between the COM objects that make up the client if IE creates more than one of them. [0182]
  • For example, in the most typical operating sequence, IE starts first, it then creates the BHO, and the Bar object is created later either by the BHO or by IE depending on whether it is opened automatically or explicitly by the user, respectively. Unfortunately, IE does not provide a mechanism by which BHO objects can find already-created Bar objects or vice-versa. As a result, the BHO has no way of knowing if IE has already created a Bar before the BHO needs to open it automatically. Additionally, if for some reason the BHO is not created automatically, the Bar has no way to determine this so that it can create the BHO itself. Finally, with neither the BHO nor the Bar object being able to find the other through IE, it is difficult to establish the communication between the two objects that is necessary for the operation of the client without compromising the object-oriented nature of the COM architecture. [0183]
  • Therefore, the client uses a small and well controlled work around of the typical COM communication paths: the client contains a link object which, due to its design and implementation, both the BHO and Bar COM objects can find and which they use as an intermediary to communicate with each other. The details of the link object implementation depend both on COM and on the fact that the preferred embodiment is implemented in C++. In C++ nomenclature, the link object class contains a number of global methods (which, unlike normal methods, may be called by software that does not already have a pointer to a link object instance). These methods are used by BHO and Bar objects to place pointers to themselves onto lists maintained within the (single) link object instance, and to retrieve pointers to the other type of object (BHO pointers for a Bar, or vice versa) from the link. [0184]
  • At this point it is noted that because of the way IE is implemented and how it handles the case in which the user opens multiple IE windows simultaneously, it is possible for multiple client BHO and Bar objects to be created on the same user system, and for some of them to be in the same address space while others are in different address spaces. Due to the implementation of the link object, there will only be one link object in a particular process address space, regardless of how many IE windows, BHOs or Bars IE creates within that address space. Each instance of a client BHO or Bar object registers itself with the single link object in an address space and can therefore access all of the other client objects. Multiple, independent process address spaces have their own link objects and client COM objects in them are unaware of each other. However, since the goal of the link object is to allow the client BHO and Bar objects associated with one IE window to communicate with each other (and that these will always be in the same address space), the ambiguity about the total number of link objects on a user system is unimportant. [0185]
  • FIG. 10 is a diagram of a [0186] Copilot Servlet organization 1000 of an embodiment. This organization shows the information flow among the Copilot Servlet 1002, the factory infrastructure 1004, the system server databases 1006, the clients (not shown), and the supplier servers (not shown), but is not so limited. For each search request received from a client, the Copilot Servlet 1002 processes it by creating lists of suppliers to search, pruning the search list, searching via adapters, post search pruning/filtering, and presentation.
  • When the request is first received, the Copilot Servlet examines it to determine if it contains enough information to start a search. This process is performed by an input adapter module that is specific to the web page in which the user entered information, whether it was part of the client user interface or a third-party web site. If the request does not contain enough information or is not actually a search request, a “0 is returned to the client and processing terminates. If it does, a “1” is returned and processing continues with the next step. Further, alternate embodiments can implement other return codes or strings that result in other types of actions. [0187]
  • The Copilot Servlet determines a set of supplier systems to search in an attempt to find items that best satisfy the received itinerary. The determination is made using information including, but not limited to, the contents of the information received in the request, the user's personal information, the user's current selections in the client user interface (if the Bar is open), the recent history of searches and the amount of bandwidth the searches have recently used on each supplier system, and the history of prior searches of similar types by similar users. [0188]
  • The Copilot Servlet acquires a set of search adapter objects from an internal resource pool, and tasks one to search each of the selected suppliers. Each search adapter performs its search independently and asynchronously from the others, so that the subsequent steps in the Copilot Servlet processing sequence can handle incremental search results. [0189]
  • The server performs post-processing on the search results received. Post-processing is used to reduce the number of results that are presented to the user below the number of raw results found from the various suppliers. This is done in order to reduce the amount of data that the user has to sift through by providing only those results that are most likely to be selected. [0190]
  • This determination can be based on many criteria. For example, in the realm of air travel fares, many carriers quote fares much higher (3×or more) than their competition on some routes. Since it is very unlikely that a user would select these particular travel options in the face of the competition, the server is best serving the needs of the user by not cluttering the list of results with this type of item. In addition, the server can take into account factors including, but not limited to: the user's explicit preferences, as indicated by the personal information entered; the user's implicit prioritization, as indicated by the current sort-order selection in the client Bar; the particular user's past purchasing decisions when presented with similar options; and, the past purchasing decisions of aggregate groups of users presented with similar options. [0191]
  • The complexity of making pruning/filtering decisions on the data items found is increased by the results being received from different suppliers at different times, and being forwarded to the client for incremental display as quickly as possible. In order to provide incremental results to the client, the server applies filtering decisions to individual search results without certain data about the results that may or may not be subsequently received from supplier's that have not yet responded to the search request. There are a number of possible mechanisms that the server could employ to accomplish this decision making. [0192]
  • The simplest method is to generate a numeric score (applying the desired criteria) for each individual data item. Items achieving a score above a certain threshold are sent on immediately, items falling bellow a lower threshold are discarded, and those between the two thresholds are retained for further consideration. The system then adopts a target number of results to return from any search (or possibly a different target number for each category of search, such as the air travel, hotel, and rental care reservation categories). Since the number of suppliers being searched is known at the outset of a search (although an alternate embodiment can add the ability to start new searches of different suppliers incrementally if the initially-received results were judged inadequate), the threshold for deciding which results should be forwarded to a client can be adjusted up or down after each supplier's results are received and it can be determined whether the average number of results per supplier so far sent to the client is above or below the target average number of displayed results per supplier. [0193]
  • In addition to implementations in which the processing from an individual user action through the delivery of information is performed interactively and as quickly as possible, it is possible for other embodiments of the system to have relatively long latencies, either due to processing requirements or intentionally introduced, between different steps. For example, an embodiment can gather information from very slowly-responding suppliers. In this case, a mechanism could be introduced in which result information was delivered to the user separately from their (possibly implicit) request, such as by sending them an email instead of immediately displaying the results in the client. In this case, it may be advantageous to detect multiple user actions as triggering search operations without requiring that one operation complete or be aborted before the next is detected. Similarly, when information delivery is delayed it may be advantageous to accumulate all of the search results together for a single delivery instead of delivering them incrementally. If this is done, different methods may be used for post-search filtering which take advantage of the fact that all results can be filtered simultaneously when the system is in complete possession of all of the relevant information, rather than with partial (incremental) information as described herein. [0194]
  • There are many cases in which delays may be intentionally introduced in the system's operation. For example, the search system could provide a “notification” feature, whereby a particular (possibly implicit) user query is repeatedly processed over a period of time, and the use provided result information only when that information meets a particular criteria. Another possibility is that the system performs both immediate data delivery as well as subsequent, non-interactive delivery. For example, in an embodiment the system could consider the final purchase of an airline ticket (as detected by the buy tracking mechanism described herein) as the triggering event for a new search. The system could perform this search repeatedly over a period of time and filter the results using criteria based on the actual ticket purchased by the user. The system would then asynchronously notify the user if one of the periodic repeated searches finds a ticket that is better than the one the user purchased. In the arena of airline tickets, better might be constrained to be only a lower price for exactly the same ticket as business considerations might limit the user from exchanging the already purchased ticket for any other alternative. However, embodiments designed to handle different types of information might not need to be so limited. [0195]
  • In cases where the search system is used to search for information relating to purchasable items that have time-limited availability, such as airline tickets, the system may incorporate special features in order for delayed information return to be helpful. For example, if the system performs a search for a purchasable airline reservations delayed from the triggering user action, it is possible (if not likely) that the user will not be interacting with the client at the time results are obtained. Because of the fleeting validity of airline reservation information, the system could use a method for immediately notifying the user so that a purchase transaction could be completed. Such a method could include the use of a paging system or an asynchronous message to a wireless client, but is not so limited. [0196]
  • An alternative to being able to reliably notify the user of an available (desired) purchasable item is to have pre-authorization from the user to make the purchase on their behalf. This would require that the user supply, either previously or as part of their (possibly implicit) search-triggering action, payment information, a purchase authorization, and adequate selection criteria so that the user is satisfied with purchases that are automatically made. [0197]
  • Following search result processing, the individual result items are forwarded to the client. When forwarding results, each data item is inserted into an HTML/JavaScript display template, combined with the cookies set by the supplier web site (if any), and transmitted to the client. [0198]
  • The different server servlets of an embodiment are implemented using the object-oriented Java programming language. Given this, a key implementation detail is how the system creates the different component objects that make up each servlet. A “factory” system is used wherein a single, central piece of software, the factory, is called by all other portions of the software with requests to create new objects. [0199]
  • The larger components in the system are not created/referenced in a traditional way, but rather through component factories. The software modules using a component never actually know which implementation of the component is returned by a factory for their use. Rather, they always communicate through an interface (an API definition for the component). When the module using an object returned from a factory has to get a handle to an implementation of the interface, they request the handle from the factory. This allows the factory to create the component at that point, or to retrieve it from a temporary storage place, or to retrieve it from a database. The factory is the only system component aware of how the object instances are created and managed, and this can be changed without the awareness of any of the other software components communicating with or using the component. [0200]
  • Use of factories also allows the implementation of the component to be changed without any of its users being aware that a change has taken place. The actual class instantiated by the factory is determined by a property file, and can thus be changed without changing a single line of code. This mechanism allows rapid prototyping of new components, creating a so-called default implementation of the component (an implementation that returns valid results without implementing any of the real behavior of the component), and creates a complete system almost instantly. Individual developers can then work independently to create the actual components one by one, and replace the default components when the real components become available. The complete system works at any time, and can be run and tested with the newly developed component by simply changing a property. [0201]
  • In order to optimize the database accesses beyond the connection pooling mechanism described herein, an embodiment includes a generic object caching mechanism. The object cache caches the data obtained from database accesses, and keeps the object instance containing it available there for a future reference to the same data. After a certain period of non-use of the data, it is automatically removed from the object cache. A next access of the data will again obtain it from the database. The object caches rely on the principle of locality of time reference to reduce the actual requests that need to be made to the database. By implementing a generic base class that provides this functionality, it is easy to use object caching throughout the server. [0202]
  • Use of a factory abstracts the implementation of object creation from the rest of the software. In particular, this mechanism allows different objects that implement the same interface to be freely substituted for each other as the system implementation evolves. The particular object implementation that is used to serve each object-creation request that the factory receives is controlled by a server configuration data file referred to as the properties file. Additionally, the factory can manage caches and pools of previously-created or pre-allocated objects, to optimize the management of memory and/or processing effort. [0203]
  • The central module of the Copilot Servlet is referred to herein as the business logic. The business logic includes a relatively small portion of the servlet that is responsible for sequencing the operation of the remainder of the servlet. Any system changes necessary to accommodate coupling with fundamentally different types of client systems are accomplished with the business logic. For example, a client that is a stand-alone piece of software that is not integrated into a web browser (as might be appropriate on a hand held processing device), would not need to exchange information with the server concerning whether the Bar should be automatically opened. This type of change can be incorporated in the server with changes in the business logic. [0204]
  • The sequence of object creation and use that the business logic uses when servicing a client request includes, but is not limited to: creating a UserInfo object based on the UID in the request; creating a Sessioninfo object based on the UserInfo and the SID; and, creating a TravelRequest object. The UserInfo object is created to hold information keyed from the UID. The UserInfo object is initialized with data for a particular UID only while a session for that UID is open, but the data it contains is not session specific. When there is not one or more active session for a particular user (UID), the contents of the UserInfo object is stored in the server database until needed again. [0205]
  • When the UserInfo object is created by the factory, the factory first checks a cache of previously-created UserInfo objects and returns an object from the cache if present. This minimizes both object creations and accesses to the database, because multiple requests from the same UID are likely to occur together. If a User Info object for the desired UID is not present in the cache, a new User Info object is created and the factory attempts to populate it with data from the database. [0206]
  • New UID database entries are created only when the Start Servlet (which shares much of the underlying infrastructure with the Copilot Servlet, including the User Info object and the object factory) requests a UserInfo object from the factory and the desired UID is not already present in the database. If other servlets request UserInfo objects for non-existent UIDs, matching objects are created (or located within the cache), but the exception is logged as being potentially indicative of an attempt at unauthorized access to the system. [0207]
  • Just as the UserInfo object is created to hold UID-specific information while processing a request, the Sessioninfo object holds SID-specific information. Like the UserInfo object, SessionInfo objects are cached within the factory so that multiple, rapid uses of the same SID do not require corresponding Sessioninfo objects to be created from scratch to serve each request. [0208]
  • Unlike the UserInfo object, the contents of SessionInfo objects are not stored by the server database, but the system is not so limited. Instead, SID-specific information is maintained as long as the session is active and then discarded when the session terminates (except for the data logged by transactions while the session was active, which is considered to be different from the randomly-accessible database records). [0209]
  • TravelRequest objects hold information that is specific to each unique information request that is sent from the client. The creation of the TravelRequest object accomplishes several critical parts of the Copilot Servlet function. [0210]
  • First, in the process of creating a TravelRequest object, the source of the information in the request is identified. In general, a request can either originate from the itinerary-entry controls in the client user interface or in the equivalent data entry portions of a third-party web page. In either case, there is a source-specific input adapter module that is used to process the content of requests that the client creates from user interaction with supported sources. [0211]
  • If the source of a request is not supported (for example, the request comes from a third-party web site that is included in the client list of URLs that should be forwarded to the server, but the actual browser navigation event that the client forwarded is from or to a page of the site that does not perform itinerary entry), or if the input adapter determines that the request was incomplete and did not contain enough information to start a search, then the TravelRequest object is created with a special value indicating that it is a non-valid request. This result causes the Copilot Servlet to respond to an incoming client request with a “0” string to inform the client that no additional data will be coming and that the Bar should not be automatically opened. If the Bar is already open, such a response does not result in Bar closure. [0212]
  • Assuming that enough information can be extracted from the client request to start a travel search, the TravelRequest object is populated with the extracted information. Thus, the combination of the input adapters, which extract the information, and the TravelRequest object, which serves as a receptacle for the information, serves to normalize the information needed to perform a search of suppliers into a common format for use by the rest of the Copilot Servlet components, regardless of the original source and format of the information. [0213]
  • Further, normalization of travel requests includes identifying the airports that are associated with the departure and arrival locations identified in the request. This is an important step because there are a number of roughly-equivalent ways in which users might specify the locations in their requests. [0214]
  • After the TravelRequest object is created, the business logic processes it through one or more pre-search filtering or pruning operations. Prior to these operations, the TravelRequest object has information that identifies the broadest possible set of travel suppliers that can be searched to fill the requested itinerary. For example, in searching for available airline reservations, the preferred embodiment builds a list of all the airlines (suppliers) supported by search adapters for which at least one departure and arrival airport (as there may be more than one possible alternate at each end) are listed as being served by the airline in the server database. [0215]
  • Another technique for determining whether a travel supplier should be searched based on the origin and destination of the trip uses a data table based on the actual flights that a supplier actually provides, and incorporating service rules in its construction. The system of an embodiment uses such a table, which incorporates not only actual supplier flights but also a numeric preference value with each airport pair in the table. The preference value is used during pruning, both by the explicit pruning mechanism and by the per-supplier pruning decisions made within search adapters, as a way to control the likelihood that a particular supplier will be searched for a given route, in light of other factors effecting search pruning. [0216]
  • Filtering and pruning are important optimizing steps for many reasons, although the exact set of optimization criteria are likely to be specific to a particular information domain searched. To continue with the air travel example, there are many idiosyncrasies in the way air travel is routed that could result in there not actually being any flights between two airports that are both served by the same airline. For example, if the airports are too close together, there may only be flights between them on commuter air carriers; larger carriers that serve both airports may either not have flights or have flights that are prohibitively priced. As another example, a single airline might serve two disparate regions, and even though one contains the arrival airport and the other contains the departure airport, the airline does not actually have flights between the two regions. Further, a particular supplier might be optimized out of the list to be searched based on user preferences and predictions made concerning the likelihood of a relevant result being returned from the search based on prior system experience. [0217]
  • Another criteria used to prune an air travel supplier out of the list of potential search targets is the home country of the supplier. For example, even though British Airways files to/from many United States cities, it may only be searched if one of origin and/or destination airports is in Britain. [0218]
  • There are three key system resources whose use can be improved by intelligently optimizing (reducing) the list of suppliers to be searched. One resource is network bandwidth between the server and the internet backbone. Because of practical constraints, each individual server of the system will have a finite amount of network bandwidth that can be employed to perform searches. By predicting which suppliers that might be searched are most likely to return relevant (to the particular current user) results, the amount of search server bandwidth consumed by each search can be minimized, resulting in greater system efficiency and lower cost. [0219]
  • Note that another, unrelated method of minimizing bandwidth is to use proprietary search connections with as many suppliers as possible instead of connections to human-oriented web sites. Web sites with human-friendly user interfaces typically transfer a significant amount of formatting and presentation information above and beyond the information actually of interest to the search server, wasting a significant fraction of the total bandwidth used to return results. [0220]
  • The second key resource is the network bandwidth of the supplier server systems. Assuming a generally high market acceptance of the system, it will be capable of generating significantly more total queries of supplier systems than the consumers using it would be able to generate on their own by accessing the same supplier web sites. As such, the system should not overwhelm the bandwidth (network and processing) capabilities of those supplier web servers that are accessed by search adapters. The pre-search filtering step gives the server the opportunity to remove a supplier from the list of suppliers to search based on the number of searches of that supplier that have been recently performed or are expected in the near future. [0221]
  • The third resource that can be optimized by reducing the number of suppliers to be searched, thereby improving the expected relevance of the results from each supplier, is the real time required for the search at all. The more rapidly the system can respond to an individual user request for information, the more satisfied the user is likely to be. Even if there were no bandwidth and processing limitations, the search would complete sooner the fewer suppliers that are searched. In addition, by searching suppliers that are more likely to return relevant results, an implicit reduction is made in the total number of results that will be displayed to the user. The shorter and more concise the list the user has to review, the more they perceive that the search occurred rapidly, even if it actually took the same amount of real time. At the conclusion of the filtering/pruning operations, the TravelRequest object contains information identifying the specific set of suppliers that the system will attempt to search with the user's request. [0222]
  • The TravelQuery object manages the actual search process. It manages class-global pools of idle processing threads and pre-created search adapter objects. When a new TravelQuery object is instantiated with a TravelRequest object, it obtains one thread and one search adapter for each supplier that the TravelRequest identifies as a search target. If the pools do not contain enough items to execute a particular query, more items are created. The TravelQuery assigns one supplier to each thread/search adapter pair and starts the search operations. [0223]
  • The server system performs numerous tasks in parallel. In order to achieve this parallelism, a large number of independent threads are created. Once the task has been completed the thread can be discarded. Since many of the tasks are of a similar nature, the system uses a thread pool. This saves the overhead of constant thread creation and destruction, and makes optimal use of the thread resources. When a task needs to be accomplished a thread is allocated from the pool and associated with the task. The thread then executes the task until completion after which the thread is returned to the pool. When no thread is available in the pool a new thread is automatically created, and returned to the pool after task execution. In order to protect against possible errors or memory leaks, a thread is re-cycled after it has executed a certain number of tasks. At this point the thread is destroyed instead of being returned to the pool. This mechanism will also automatically maintain the pool size at an appropriate level. [0224]
  • When each supplier search completes, the search results are provided to the request's Presentation object and the processing thread and search adapter objects are returned to the pools. Both pooled threads and adapters have their life spans monitored and are destroyed after they have been used [0225] 100 times, but are not so limited. This is done as insurance against the possibility of memory leaks or other potential mild-impact bugs in the servlets or the server operating system that could accumulate if the objects were allowed to persist indefinitely.
  • It is possible for a user to abandon a search while it is still in progress. This can occur due to a number of different user actions, ranging from abruptly closing the Bar or the entire web browser, to manipulating a client user interface control so that the search results are no longer displayed, or even by selecting the “reserve” control associated with an already-received data item. When this occurs, the search adapters are not explicitly notified. All of the Copilot Servlet objects involved in a particular search are allowed to complete the search. This prevents the connections between individual search adapters and supplier systems from being abruptly terminated, which might have undesirable side effects for the suppliers. [0226]
  • Instead, the TravelQuery object contains a flag indicating that processing should continue on the current query. If the user abandons a search, this flag is cleared. Each time an active search adapter reaches a point in the sequence of transactions with its supplier where the supplier system is in a stable state, the adapter checks the flag and, if it has been cleared, stops its operations. [0227]
  • There is a different search adapter module (object class) for each supplier system that is supported for searching and for each different search procedure that may be applied to a particular supplier. It is important that the search adapters be easy to create and modify as they are often customized to the design and content of a supplier's human-accessible web site. When this is the case, the search system has to constantly be monitored to ensure that changes to supplier web sites that stop the adapters from functioning do not occur. [0228]
  • Within each search adapter, there may be logic that applies supplier-specific algorithms to perform further pruning, to determine if the search of the supplier is actually appropriate for the current query. For example, there are air travel suppliers that may not accept bookings for very near-term flights (e.g., departing less than five days from the day of purchase). In this example, it is the responsibility of the individual adapter to determine if the current request is or is not likely to produce useful results if carried out for the adapter's supplier. By placing the responsibility for detailed supplier-specific decisions in the search adapters, it reduces the need to make descriptive/predictive information available to the higher-level pre-search pruning logic. [0229]
  • Another aspect of supplier-specific decision making carried out by the individual search adapter is regulation of the amount of bandwidth consumed by searches conducted on the adapter's supplier. This is accomplished through a combination of supplier-specific code and data (such as the desired maximum amount of bandwidth to consume from the supplier) plus code that is part of the search adapter base class and implements the bandwidth-tuning algorithm. In an embodiment, the most basic algorithm is a digital phase-locked loop (PLL). In order to allow the high-level pre-search pruning logic to take advantage of the decisions made by individual search adapters, each search adapter returns status information to the TravelQuery indicating whether or not it has started a requested search. This allows the pre-search pruning to start additional adapters if any of its first choice of adapters decides that performing the search is not actually appropriate. Similarly, when the high-level pre-search pruning logic requests that a search adapter start a search, it provides a numeric preference value, indicating the degree to which the pruning logic wants the adapter to perform the search. Each search adapter is free to interpret the preference value relative to supplier-specific criteria. [0230]
  • It is not only possible, but actually desirable in some cases to have multiple search adapters for the same supplier installed in the search server. In general, the decision making in different adapters for the same supplier should be complementary, so that only one of the adapters (if any) will actually perform a search for the same request. This ensures that the user will not be presented with multiple duplicate search results. [0231]
  • Real time searching of the Internet is by nature a very dynamic process. Updates to the search adapters have to be made on a regular basis. In order to minimally disrupt the system availability, a system embodiment includes a dynamic class loader, which allows for updating the search adapter objects while the system is running. The system itself detects that a new version of a class has been made available, removes all old versions of the class and starts using the new version of the class from that point on. Because this embodiment is implemented in Java, the details of this mechanism depend significantly on the structure of the Java programming language and execution environment, although the fundamental structure of the system is language-independent. [0232]
  • Java software is compiled from source code into an intermediate binary form (byte code), which is then interpreted at run time by a Java Virtual Machine (JVM). The management of loading new byte code files for execution by the JVM is handled, along with many other common and system functions, by parts of the Java runtime environment that are themselves written in Java and interpreted by the JVM, as opposed to being hard-coded parts of the JVM itself. For the purpose of loading new classes in a running Java system, the important parts of the Java runtime environment are the class loader classes and objects. [0233]
  • The class loader is the component of the runtime environment that is invoked by the Java new operator when a new object (instance of a class) has to be dynamically created. The default (system) class loader operates based on the name of the class for which an instance is to be created, and uses system configuration information and standardized conventions to locate and read the bytecode file that contains the implementation of the desired class. The class loader maintains a cache of the contents of the bytecode files for objects which have already been instantiated, so that multiple instantiations of the same object do not all incur the performance penalty of reading bytecode files. [0234]
  • In addition, the Java runtime environment makes provisions for the creation of custom class loaders, that may or may not be child classes of the system class loader. In particular, there is a standardized method, newInstance, that is used to invoke the class loader with explicit parameters concerning the class and bytecode files to load, rather than relying on the implicit locating of the bytecode file implemented by the system class loader. In the system of an embodiment, the determination as to which objects are instantiated by the system class loader and which use the system's special class loader is made explicitly in the source code based on whether new or newInstance is used to create object instances. In addition, an embodiment uses a commercial set of infrastructure libraries known as “Tomcat” in addition to the basic Java execution environment. Tomcat implements its own custom class loader on top of the Java system class loader, and the search system's class loader is built on top of the Tomcat class loader. In an embodiment, the custom class loader is used to create instances of all of the different types adapters, not just search adapters. [0235]
  • In order to support dynamic adapter updating without having to restart the entire server system, it is necessary to be able to remove the old version of an adapter from the class loader cache, and then cause new instances of the adapter to be instantiated from the new bytecode file. Unfortunately, the Java system class loader does not contain a method to unload classes. The commonly known work-around for this lack is to destroy the entire existing class loader object and instantiate a new one. Unfortunately, this causes the entire cache of loaded bytecode files to be lost, which is an unacceptable performance penalty. It is to overcome this problem that the system of an embodiment uses its custom class loader. [0236]
  • Each time an adapter is to be used (fetched from the pool), the TravelQuery object checks the time stamp of the adapter's bytecode file to determine if it has been updated since the last time it was loaded. If the adapter's bytecode has been updated, the TravelQuery object instructs the custom class loader to reload the class' bytecode file. The system's custom class loader includes a reinstantiate method that: removes the target class from the class loader's bytecode cache; instantiates a new class loader; passes the complete existing cache to the new class loader instance; and, destroys the old class loader instance. [0237]
  • At the conclusion of this operation, the new class loader instance can be used in the normal way (via newInstance) to instantiate the desired adapter, which will cause the new bytecode file to be loaded into the cache. Note that an alternate implementation could check the time stamps of all adapter bytecode files periodically instead of on-demand. Such an implementation would trade off the precision of the adapter updates versus the amount of processing consumed by checking adapter time stamps. [0238]
  • In addition to determining when an adapter's cached bytecode should be updated based on the presence and time stamps of files in the system's adapter bytecode directory, an embodiment of the system also uses the presence of different types of adapter files to determine the set of options available to the system. For example, the server maintains a copy of the URL lists stored on the client at all times. Note that one URL list directly corresponds to the available set of input adapters while the other URL list corresponds to the set of buy adapters. Each time the system detects a change in the set of available adapters, it updates its internal URL lists and the associated revision number. Subsequently, when new client sessions are established, the clients receive the new revision number and therefore download the updated URL list. [0239]
  • The revision number for each URL list consists of three numbers. The first two numbers come from the properties file while the third number is automatically incremented by the server in response to detecting changes in the available set of adapters. In a similar, internal manner, the list of suppliers that is used to create the original list of candidate suppliers to search for a request is based on the set of search adapter objects that are currently available. Note that it is possible for an adapter to be added or removed to the bytecode directory as well as being replaced, and the system reflects these changes in the available set of options as well. This is accomplished by a server process that periodically examines the bytecode file directory for the addition or removal of new adapters. [0240]
  • As discussed herein, the server uses at least one set of configuration data stored in the properties file. It is possible to implement the creation of search adapter objects based on a list of suppliers to be searched contained in the property files. However, a more efficient implementation is to determine the set of available adapters based on the Java bytecode files currently located in the search adapter executables directory on the system servers. [0241]
  • The implementation of the search adapters particularly benefits from an object-oriented programming language and design style. In the system of an embodiment, search adapters are created as child classes from a large search-adapter base class that provides common behaviors, interfaces, and services to ease the development of individual search adapters. In particular, the base class implements all of the adapter interfaces to the other server components. Similarly, the base class for search adapters implements a selection of primitive and/or common tool routines that specific search adapters can use to parse and extract data from web pages returned from requests the adapter makes to supplier web servers. [0242]
  • Another function of search adapters implemented in the base class is the detection and tracking of errors. Because search adapters interact with other unrelated systems across the coupled network or Internet, there is always the possibility that their operation will fail. The search system is, however, very tolerant of individual search failures because there are so many potential travel alternatives that can be presented from other suppliers. However, the search adapters track the number of failures from a particular supplier. A significant number of failures from the same supplier can be indicative of a change in the supplier web site that will require a change in the search adapter in order to allow it to work again. In the preferred embodiment, there is a mechanism to cause the detection of groups of search failures to automatically trigger the paging of an operator. [0243]
  • Moreover, as the search adapters are constructed using a common base class and implement identical interfaces, it is easier to use the search adapters in contexts other than the complete search system and the Copilot Servlet. For example, during the development of search adapters, a separate piece of test harness software is used to task individual adapters with specific searches under the control of the developer, circumventing the rest of the intelligence in the Copilot Servlet, which might serve to make testing of individual adapters more difficult. [0244]
  • The Copilot Servlet makes on-the-fly decisions for each set of search results provided by a search adapter regarding which of the result items are appropriate to forward on for display in the client. This decision, like the processing performed on the TravelRequest object to prune the set of suppliers to search, is accomplished by a series of processing operations performed on the search results once they are received. [0245]
  • The final object in the chain of the Copilot Servlet processing for a particular client request is the Presentation object. This object receives the different travel search results, asynchronously, after filtering, from the TravelQuery. The Presentation object is responsible for encapsulating the raw search results into HTML that is appropriate to the HTML already sent to the browser control in the client Bar. [0246]
  • In general, there is a single Presentation object associated with a SessionInfo object. The Presentation object retains the result data from the most recent of each different type of data search performed by the user. In an embodiment, this includes up to three sets of data: one each for air travel, hotel reservations, and rental car reservations. Each time a new TravelQuery is created/started for a user session, it is given a pointer to the SessionInfo object's Presentation object. Because TravelQuery objects are not immediately destroyed if the user abandons a search, it is possible for the Presentation object to receive interleaved results from multiple TravelQuery objects simultaneously. In order to allow the Presentation object to retain the information from the most recent search and discard the rest, each TravelQuery object is assigned a different search ID number, and the Presentation object discards search results marked with any search ID other than the most recent (of a particular type). [0247]
  • Regarding databases and database content, there are a number of logically-separate databases used by the server system. A collection of server systems shares one or more common, redundant database systems. One set of data stored in the server database includes copies of commercially available flight tables. This table lists all of the available commercial airline flights by supported suppliers. Not only is this table accessed directly, but it also contains the raw data from which the short list of suppliers that service listed airports is taken in construction of the first-order list of possible suppliers to search for a particular request. [0248]
  • A key capability of the system of an embodiment, because it is capable of directly accessing suppliers web sites, is that it can find and make available to users the so-called web specials of travel suppliers. A web special is a discounted price on an otherwise-available ticket that is offered only to people purchasing the ticket through the supplier's web site. [0249]
  • In order to optimize the list of suppliers that should be searched for a particular request, the system has to have information about which suppliers are likely to have which web specials available at any particular time. Unlike the information on regularly scheduled flights, which is essentially static, the set of web specials is highly fluid. Therefore, the database contains a cache of the web specials available from each supplier that performs this type of marketing. The cache is periodically refreshed by a pseudo-search request generated within the server. [0250]
  • While the primary means of searching employed by an embodiment is searching in direct response to a user action, it is noted that the search system of an embodiment also employs automatic searching performed asynchronously to user actions. Automatic searching may be used to facilitate any stage of the system's operation. For example, automatic searching may be performed to pre-fill data bases used as part of the filtering process before and after a search adapter operates. The results of automatic searching may also be incorporated into the information that is returned to a user as the result of a query. Additionally, nothing in the embodiments described herein should be interpreted to limit the search system to returning the information retrieved by search adapters to the user. For example, the results of queries to information suppliers could be used to filter the delivery of other data (possibly constant data or the results of automatic searching) to the user instead of the reverse. [0251]
  • As discussed herein, the UID-associated information is stored in the database. It is updated when the user invokes the client user-interface for editing their preference information, and fetched into a UserInfo object each time a new client/server session is created. [0252]
  • The interface between the search system and the various supplier systems is implemented by a search adapter. As detailed herein, there are three different categories of interfaces between an adapter and a supplier: through the supplier's commercial/consumer web site, through a GDS system, or through a custom, search system-specific interface. [0253]
  • In addition to searching supplier web sites and handing off users to the purchase pages of a supplier web site, the system is capable of performing the purchase hand-off by providing a travel agent number, otherwise known as an ARC number or IATA number, to the supplier. Thus, the owner of the ARC number is able to collect a travel agency commission on the sale. [0254]
  • In addition to the database that is a component of each separate server site of the system, a data warehouse is maintained in an embodiment. Recorded/created data is securely forwarded from the server databases to the data warehouse on a regular basis. The warehouse is used for both backup and long-term storage purposes. When data is forwarded to the warehouse, it is removed from the individual server sites. This ensures that the vast majority of data collected is not present on the servers, reducing their attractiveness to hackers as targets. [0255]
  • In addition, data processing and reduction is carried out at the warehouse in support of several functions. First, on a regular basis processes are executed to collect information on client purchases into invoices for individual suppliers with whom the service owner has a contractual relationship. Second, the accumulated data about user purchasing, combined with known, industry-specific trends, is used for forecasting both technical (future server load and bandwidth requirements) and business (revenue) trends. [0256]
  • In addition, the logs of user activity and travel component or airline pricing behavior accumulated by the system during its operation form a significant resource. This resource can be used for further exploitation and refinement of the system as well as a business asset that can be exploited to the degree that it can be made available to other businesses without compromising the service owner's position with suppliers or the privacy of the individual users who have transacted through the system. [0257]
  • Exploitation of the database for the service owner's benefit can be conducted through data mining and other types of analysis. In order to allow third-parties to make use of the data without violating user or supplier privacy, an application programming interface (API) and software architecture is established that allows components, or data analysis adapters, to be created and provided to the search system owner by third parties who want access to the data. The advantage of this arrangement, versus directly providing data sets to third parties, is that the API can be used to restrict the types and amounts of data that the analysis adapter can output to ensure that privacy is maintained. [0258]
  • There are several ways in which this method for providing third parties access to the system data can be incorporated into the system. For third parties who simply wish to perform data mining, the analysis adapter they provide can be run at the data warehouse, and output results provided for transmission back to the third party. FIG. 11 shows a data [0259] analysis adapter configuration 1100 of an embodiment at a data warehouse. This configuration 1100 supports information flow among at least one database 1102, at least one data analysis adapter 1104, an output interface module 1106, and temporary storage devices 1108 in the provision of digested data formulated to third parties 1110. This situation provides the analysis adapter 1104 the greatest freedom and access to data, but also presents the most significant risk of the third party attempting to exploit the access and circumvent the restrictions on data output imposed by the system API.
  • Another significant application of third party data analysis adapters is within the processing of individual user travel requests. The [0260] analysis adapters 1104 support a supplier offering dynamic and/or adaptive offers based on any of the data to which the system has access, including the specific user's prior purchasing behavior and the other bookings that the system has found from other suppliers. In this case, the analysis adapter 1104 has to be judged by the system owner as reliable enough to be distributed to and run on the server systems. In addition, the data needed by the analysis adapter 1104 must be available at the different server sites.
  • FIG. 12 shows a data [0261] analysis adapter configuration 1200 of an embodiment at a 1 5 server site. This configuration 1200 supports data flow among Copilot Servlets 1202, supplier systems 1204, supplier data analysis adapters 1206, and data warehouses 1208 via the Internet 1210, but is not so limited. Data is made available to server-resident analysis adapters in one of two ways, depending on the data needs of the adapters. First, processes can be run at the data warehouse to produce digests of the complete database. Assuming that the digest process provides summaries that are appropriate for the algorithms in the analysis adapter, the digests can be securely transferred to the server sites from the data warehouse without jeopardizing the entire database and provide as much benefit to third parties as would access to the full database.
  • Another alternative is to establish a secure, real-time link between the server sites and the data warehouse (possibly creating duplicate data warehouses to provide reliability and adequate bandwidth). This link can be used either to allow analysis adapters running at the server sites to query the full data set or to allow the adapters to execute within the data warehouses but to be queried themselves by the server sites. [0262]
  • There is a significant business and user-experience impact resulting from the exact point in time at which the client Bar auto opens and presents information to the user. In an embodiment, the client auto-open functionality essentially provides alternate information to that which is/will be provided by the data source that the user explicitly queried. Different perceived effects can be produced by altering the point in the user's primary sequence of operations at which the auto-open is performed and the type of information that is presented. [0263]
  • For example, auto-opening earlier (as soon as the user first goes to a page in a web site that would trigger a query-based auto open) gives the user the opportunity to use the inventive search system instead of the web site that they explicitly selected, but makes it appear less like a head-to-head competition either to present results or on price or other user-relevant criteria. Alternately, moving the point of auto-open later in time, so that auto-open does not occur until the user has evaluated the offers made by the site they originally chose, and has perhaps chosen one to purchase, gives the search system significantly more information on which to base its search. In addition to the itinerary information originally entered by the user, the system also has access to the travel options which the “other” web site presented and can attempt to infer the user's preferences and the price that they're willing to pay. In this case, the auto-open will appear to the user more as a counter-offer to the choice that they have already made than as an unbiased presentation of alternatives. [0264]
  • The combination of third-party data analysis adapters with an auto-open operation that occurs later in time than the “nominal” described herein is particularly powerful. Such an environment forms the foundation for a system in which (potentially) multiple suppliers have access to data regarding the specific user making a request and competing supplier offers, all without violating the privacy of any of the parties (via the “proxy” of the analysis adapter). This allows suppliers who can craft a sufficiently sophisticated analysis adapter the ability to make the best possible dynamic pricing and revenue-optimization choices, taking into account not only gross factors like seat availability but strategic considerations regarding routes or customer-loyalty optimization. [0265]
  • In an embodiment, search adapters are provided to access web pages because it is common practice for information suppliers to make information available through web (e.g., HTTP) servers. However, this should not be considered a limitation of the system. Any network-accessible information source, whether it is intended to provide human-readable or machine-readable information, may be used in place of a web server without altering the fundamental operation of the search system of an embodiment. [0266]
  • Similarly, data from web servers is typically broken into discrete blocks that are individually formatted for viewing by a user, referred to as web pages. However, this is an artificial division grown out of the general focus on using HTTP and HTML for a specific type of user-viewable information presentation, and should not be considered a limitation of the search system itself. One of the advantages of an embodiment using discrete search adapters is that it is relatively easy to modify the system to support different means of gathering and extracting information. For example, an information provider may use a system that does not return information in discrete “page” blocks. Additionally, adapters may process information based on the reception or monitoring of the data stream carrying the information, rather than waiting for the reception of complete “pages” of information before processing. [0267]
  • The description herein of various embodiments of the invention has been presented for purpose of illustration and description. It is not intended to limit the invention to the precise forms disclosed. Many modifications and equivalent arrangements will be apparent. [0268]

Claims (62)

What is claimed is:
1. A method for a dynamic information connection engine, comprising:
detecting at least one user action on at least one client computer and, in response, determining at least one user is searching for supported information;
extracting query information from the at least one user action, wherein the query information includes at least one category of the supported information;
automatically selecting at least one supplier of the supported information using at least one server in response to the query information;
transferring at least one query including the query information among the selected at least one supplier via at least one network; and
generating at least one result list in response to at least one query response, wherein the at least one result list includes response information generated from the at least one query response and query status information.
2. The method of
claim 1
, further comprising providing the at least one result list to the at least one user.
3. The method of
claim 1
, wherein the at least one result list further includes at least one electronic link to the selected at least one supplier.
4. The method of
claim 1
, wherein detecting further comprises:
monitoring the at least one user action by capturing Uniform Resource Locators (URLs) from a browser of the at least one client computer;
comparing a root portion of the captured URL with at least one list of strings stored by the at least one client computer; and
forwarding a root-matching URL to the at least one server, wherein determinations are made whether the at least one user action is a request for travel information and whether the at least one user action contains enough information to be the at least one itinerary component.
5. The method of
claim 1
, further comprising establishing at least one coupling to the selected at least one supplier via the at least one network, wherein establishing includes at least one method selected from a group consisting of requesting at least one web page from at least one web site of the at least one supplier, and using at least one proprietary coupling among the at least one supplier and at least one intermediary database, wherein the at least one intermediary database comprises information on available inventory of the at least one supplier.
6. The method of
claim 1
, further comprising establishing at least one coupling between the at least one client computer and the at least one server, wherein the at least one client computer dynamically constructs a name of the at least one server by concatenating string fragments including a string constant representing a fixed base part of a name of the at least one server, at least one random number converted into at least one character string, and a string constant representing at least one domain in which the at least one server is located.
7. The method of
claim 1
, further comprising:
tracking a purchase of at least one itinerary component; and
maintaining proof of the purchase.
8. The method of
claim 7
, wherein the tracking and the maintaining comprise maintaining at least one buy-tracking list of string pairs on the at least one client computer, wherein a first string pair element includes a URL of a receipt web page of the at least one supplier, wherein a second string pair element includes an extraction specifier that specifies a purchase transaction identification string within the receipt web page, and wherein the purchase transaction identification string is used as proof of purchase transaction origination.
9. The method of
claim 1
, wherein automatically selecting at least one supplier comprises performing at least one evaluation using at least one search factor selected from a group consisting of information from the at least one itinerary component, preferences of the at least one user, personal information on the at least one user, at least one previous search history of the at least one supplier, and at least one search history of at least one search of a similar type and by a similar user.
10. The method of
claim 1
, further comprising filtering the at least one query response using criteria selected from a group consisting of relative item pricing, preferences of the at least one user, personal information on the at least one user, sort criteria of the at least one user, past purchasing decisions of the at least one user, and past purchasing decisions of at least one aggregate group of users.
11. A method for locating and scheduling travel itinerary components in real time, comprising:
detecting at least one user action on at least one client computer and, in response, determining at least one user is searching for travel information;
extracting at least one itinerary component from the at least one user action;
automatically selecting at least one supplier of the at least one itinerary component using at least one server;
transferring at least one query among the selected at least one supplier via at least one network, wherein the at least one query is a request for purchase information on the at least one itinerary component; and
presenting the at least one user with at least one result list in response to at least one query response, wherein the at least one result list includes the purchase information, at least one electronic link to the at least one supplier, and query status information.
12. The method of
claim 11
, wherein the at least one itinerary component comprises at least one component selected from a group consisting of airline reservations, lodging reservations, and ground transportation reservations.
13. The method of
claim 11
, wherein detecting at least one user action further comprises:
monitoring the at least one user action by capturing Uniform Resource Locators (URLs) from a browser of the at least one client computer;
comparing a root portion of the captured URL with at least one list of strings stored by the at least one client computer; and
forwarding a root-matching URL to the at least one server, wherein determinations are made whether the at least one user action is a request for travel information and whether the at least one user action contains enough information to be the at least one itinerary component.
14. The method of
claim 13
, further comprising determining whether the at least one user action contains enough information to be the at least one itinerary component.
15. The method of
claim 14
, further comprising opening at least one sub-window on the browser when the at least one user action includes enough information to be the at least one itinerary, wherein the sub-window accepts entry of the at least one itinerary.
16. The method of
claim 14
, further comprising capturing information from the at least one user action when it is determined that the at least one user action contains enough information to be the at least one itinerary component.
17. The method of
claim 14
, further comprising capturing information from a third party web site when it is determined that the at least one user action contains enough information to be the at least one itinerary component.
18. The method of
claim 13
, further comprising updating the at least one list of strings, wherein updating includes transferring at least one updated list of strings from the at least one server.
19. The method of
claim 11
, wherein the at least one itinerary component is received from at least one location selected from a group consisting of the at least one client computer.
20. The method of
claim 11
, further comprising establishing at least one coupling to the selected at least one supplier via the at least one network, wherein establishing includes at least one method selected from a group consisting of requesting at least one web page from at least one web site of the at least one supplier, and using at least one proprietary coupling among the at least one supplier and at least one intermediary database, wherein the at least one intermediary database comprises information on available inventory of the at least one supplier.
21. The method of
claim 11
, further comprising establishing at least one coupling between the at least one client computer and the at least one server, wherein the at least one client computer dynamically constructs a name of the at least one server by concatenating string fragments including a string constant representing a fixed base part of a name of the at least one server, at least one random number converted into at least one character string, and a string constant representing at least one domain in which the at least one server is located.
22. The method of
claim 11
, further comprising providing at least one coupling among the at least one client computer and at least one electronic site from which the at least one user can purchase at least one selected itinerary component.
23. The method of
claim 22
, wherein the at least one electronic site is selected from a group consisting of at least one supplier web site, at least one captive purchase web site, and at least one third party web site.
24. The method of
claim 11
, further comprising:
tracking a purchase of the at least one itinerary component; and
maintaining proof of the purchase.
25. The method of
claim 24
, wherein the tracking and the maintaining comprise maintaining at least one buy-tracking list of string pairs on the at least one client computer, wherein a first string pair element includes a URL of a receipt web page of the at least one supplier, wherein a second string pair element includes an extraction specifier that specifies a purchase transaction identification string within the receipt web page, and wherein the purchase transaction identification string is used as proof of purchase transaction origination.
26. The method of
claim 11
, wherein automatically selecting at least one supplier comprises performing at least one evaluation using at least one search factor selected from a group consisting of information from the at least one itinerary component, preferences of the at least one user, personal information on the at least one user, at least one previous search history of the at least one supplier, and at least one search history of at least one search of a similar type and by a similar user.
27. The method of
claim 11
, further comprising filtering the at least one query response using criteria selected from a group consisting of relative item pricing, preferences of the at least one user, personal information on the at least one user, sort criteria of the at least one user, past purchasing decisions of the at least one user, and past purchasing decisions of at least one aggregate group of users.
28. The method of
claim 11
, further comprising sorting the at least one list using at least one sorting criteria from the at least one user.
29. The method of
claim 28
, wherein the sorting is performed on the at least one client computer.
30. The method of
claim 1
1, further comprising:
generating at least one travel request object in response to the extracted at least one itinerary component, wherein the at least one travel request object contains information on the at least one itinerary component and identifying information for the selected at least one supplier; and
optimizing the at least one travel request object.
31. The method of
claim 11
, further comprising tracking at least one time period selected from a group consisting of session periods, itinerary search time periods, result expiration time periods, and at least one travel category search result time period.
32. The method of
claim 11
, further comprising providing at least one user identification number and at least one session identification number to the at least one server.
33. The method of
claim 11
, further comprising maintaining at least one travel-special inventory for the at least one supplier, wherein the at least one travel-special inventory is a current inventory of special deals on travel.
34. The method of
claim 11
, wherein the query status information comprises a total number of travel suppliers to which the at least one query is transferred, a total number of travel supplier responses received, a total number of data items found, a total number of data items processed, and a total number of data items presented to the at least one user.
35. The method of
claim 11
, further comprising presenting the at least one user with at least one electronic link corresponding to each item of the at least one result list, wherein the at least one electronic link directs the at least one client computer to at least one page of a web site from which the item can be purchased.
36. The method of
claim 35
, wherein the web site is a supplier web site.
37. The method of
claim 35
, wherein the web site is affiliated with the at least one server.
38. The method of
claim 11
, wherein the at least one client computer comprises at least one processing device selected from a group consisting of personal computers, personal digital assistants, hand-held computers, cellular telephones, communication devices, and vehicle telematic systems.
39. The method of
claim 11
, wherein the at least one network comprises the Internet.
40. A system for locating and scheduling travel itinerary components in real time, comprising:
at least one client computer that detects at least one user action and determines whether at least one user is searching for travel information;
at least one server coupled to the at least one client computer, wherein at least one itinerary component is extracted from the at least one user action, wherein at least one supplier of the at least one itinerary component is automatically selected, wherein at least one query is transferred among the selected at least one supplier via at least one network, wherein the at least one query is a request for purchase information on the at least one itinerary component, wherein the at least one user is presented with at least one result list in response to at least one query response, wherein the at least one result list includes the purchase information, query status information, and at least one electronic link that supports purchase of the at least one itinerary component.
41. The system of
claim 40
, wherein the at least one travel component comprises at least one component selected from a group consisting of airline reservations, lodging reservations, and ground transportation reservations.
42. The system of
claim 40
, wherein detecting at least one user action further comprises:
monitoring the at least one user action by capturing Uniform Resource Locators (URLs) from a browser of the at least one client computer;
comparing a root portion of the captured URL with at least one list of strings stored by the at least one client computer; and
forwarding a root-matching URL to the at least one server, wherein determinations are made whether the at least one user action is a request for travel information and whether the at least one user action contains enough information to be the at least one itinerary component.
43. The system of
claim 42
, wherein the at least one client computer comprises at least one browser sub-window that is opened when the at least one user action includes enough information to be the at least one itinerary, wherein the sub-window accepts entry of the at least one itinerary component.
44. The system of
claim 42
, wherein information is captured from the at least one user action, and it is determined that the at least one user action contains enough information to be the at least one itinerary component.
45. The system of
claim 40
, wherein the at least one itinerary component is received from at least one location selected from a group consisting of the at least one client computer.
46. The system of
claim 40
, wherein at least one coupling is established to the selected at least one supplier via the at least one network, wherein the establishment includes at least one method selected from a group consisting of requesting at least one web page from at least one web site of the at least one supplier, and using at least one proprietary coupling among the at least one supplier and at least one intermediary database, wherein the at least one intermediary database comprises information on available inventory of the at least one supplier.
47. The system of
claim 40
, wherein the at least one client computer couples to the at least one server by dynamically constructing a name of the at least one server by concatenating string fragments including a string constant representing a fixed base part of a name of the at least one server, at least one random number converted into at least one character string, and a string constant representing at least one domain in which the at least one server is located.
48. The system of
claim 40
, wherein a factory logic section of the at least one server creates and populates at least one object in response to at least one request from at least one other logic section, wherein the at least one object is used in at least one session of the at least one user.
49. The system of
claim 48
, wherein the at least one object comprises at least one user information object based on information of the at least one user, wherein the at least one user information object is stored in at least one database upon completion of the at least one session, wherein the factory logic searches the at least one database for the at least one user information object upon initiation of at least one subsequent session.
50. The system of
claim 48
, wherein the at least one object comprises at least one session information object based on information of the at least one session.
51. The system of
claim 48
, wherein the at least one object comprises at least one travel request object based on information of the at least one itinerary component, wherein the at least one travel request object includes information identifying the at least one supplier.
52. The system of
claim 51
, wherein the at least one object comprises at least one travel query object that is instantiated with the at least one travel request object, wherein upon instantiation the at least one travel query object obtains at least one thread and at least one search adapter for each of the at least one suppliers, wherein the at least one thread and the at least one search adapter control the transfer of the at least one query.
53. The system of
claim 40
, wherein at least one coupling is provided among the at least one client computer and at least one electronic site from which the at least one user can purchase at least one selected itinerary component, wherein the at least one electronic site is selected from a group consisting of at least one supplier web site, at least one third party web site, at least one interface among the at least one server and the at least one supplier, and at least one database.
54. The system of
claim 40
, wherein a purchase of the at least one travel component is tracked and a proof of the purchase is maintained.
55. The system of
claim 54
, wherein the tracking and the maintaining comprise maintaining at least one buy-tracking list of strings on the at least one client computer, wherein a first string includes a URL of a receipt web page of the at least one supplier, wherein a second string includes an extraction specifier that specifies a purchase transaction identification string within the receipt web page, wherein the purchase transaction identification string is used as proof of a purchase transaction origination.
56. The system of
claim 40
, wherein the at least one response is filtered using criteria selected from a group consisting of relative item pricing, preferences of the at least one user, personal information on the at least one user, sort criteria of the at least one user, past purchasing decisions of the at least one user, and past purchasing decisions of at least one aggregate group of users.
57. The system of
claim 40
, wherein at least one travel-special inventory is maintained for the at least one supplier, wherein the at least one travel-special inventory is a current inventory of special deals on travel.
58. The system of
claim 40
, wherein the status information comprises a total number of travel suppliers to which the at least one query is transferred, a total number of travel supplier responses received, a total number of data items found, a total number of data items processed, and a total number of data items presented to the at least one user.
59. The system of
claim 40
, wherein the at least one user is presented with at least one electronic link corresponding to each item of the at least one result list, wherein the at least one electronic link directs the at least one client computer to at least one page of the corresponding supplier web site from which the item can be purchased.
60. A computer readable medium containing executable instructions which, when executed in a processing system, provides a dynamic information connection engine comprising:
detecting at least one user action on at least one client computer and, in response, determining at least one user is searching for supported information;
extracting query information from the at least one user action, wherein the query information includes at least one category of the supported information;
automatically selecting at least one supplier of the supported information using at least one server in response to the query information;
transferring at least one query including the query information among the selected at least one supplier via at least one network; and
generating at least one result list in response to at least one query response, wherein the at least one result list includes response information generated from the at least one query response and query status information.
61. An electromagnetic medium containing executable instructions which, when executed in a processing system, provides a dynamic information connection engine comprising:
detecting at least one user action on at least one client computer and, in response, determining at least one user is searching for supported information;
extracting query information from the at least one user action, wherein the query information includes at least one category of the supported information;
automatically selecting at least one supplier of the supported information using at least one server in response to the query information;
transferring at least one query including the query information among the selected at least one supplier via at least one network; and
generating at least one result list in response to at least one query response, wherein the at least one result list includes response information generated from the at least one query response and query status information.
62. A method for locating and scheduling travel itinerary components in real time, comprising:
detecting at least one user action on at least one client computer and, in response, determining at least one user is searching for travel information;
extracting at least one itinerary component from the at least one user action;
automatically selecting at least one supplier of the at least one itinerary component using at least one server;
transferring at least one query among the selected at least one supplier via at least one network, wherein the at least one query is a request for purchase information on the at least one itinerary component;
presenting the at least one user with at least one result list in response to at least one query response, wherein the at least one result list includes the purchase information, at least one electronic link to the at least one supplier, and query status information; and
facilitating at least one purchase transaction comprising the at least one user purchasing at least one itinerary component chosen from the at least one result list.
US09/815,836 2000-03-13 2001-03-22 Method and apparatus for dynamic information connection engine Abandoned US20010054020A1 (en)

Priority Applications (15)

Application Number Priority Date Filing Date Title
US09/815,836 US20010054020A1 (en) 2000-03-22 2001-03-22 Method and apparatus for dynamic information connection engine
US10/903,623 US7349894B2 (en) 2000-03-22 2004-07-30 Method and apparatus for dynamic information connection search engine
US11/067,547 US20050234853A1 (en) 2000-03-22 2005-02-25 Method and apparatus for dynamic information connnection engine
US11/091,852 US7774331B2 (en) 2000-03-22 2005-03-28 Method and apparatus for dynamic information connection engine
US11/120,484 US7483883B2 (en) 2000-03-22 2005-05-03 Incremental presentation of search results from multiple suppliers
US11/120,401 US20050262064A1 (en) 2000-03-22 2005-05-03 Method and apparatus for dynamic information connection engine
US11/128,029 US20050234559A1 (en) 2000-03-13 2005-05-11 Modular hip prosthesis
US11/201,376 US7627606B2 (en) 2000-03-22 2005-08-10 Secondary search for a travel related item based on the detection of a purchase offer from a prior travel related search
US11/203,885 US20060080298A1 (en) 2000-03-22 2005-08-15 Method and apparatus for dynamic information connection engine
US11/273,784 US20060123012A1 (en) 2000-03-22 2005-11-14 Method and apparatus for dynamic information connection engine
US11/367,552 US7668811B2 (en) 2000-03-22 2006-03-03 Updating prices of search results during a search for a travel related item
US11/870,909 US20080033770A1 (en) 2000-03-22 2007-10-11 Method and apparatus for dynamic information connection search engine
US12/819,997 US20100268623A1 (en) 2000-03-22 2010-06-21 Purchase Handoff in a Travel Search Engine
US13/207,863 US8458162B2 (en) 2000-03-22 2011-08-11 Purchase handoff in a travel search engine
US13/745,122 US8738599B2 (en) 2000-03-22 2013-01-18 Purchase handoff in a travel search engine

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US19134600P 2000-03-22 2000-03-22
US09/815,836 US20010054020A1 (en) 2000-03-22 2001-03-22 Method and apparatus for dynamic information connection engine

Related Child Applications (7)

Application Number Title Priority Date Filing Date
US10/903,623 Continuation US7349894B2 (en) 2000-03-22 2004-07-30 Method and apparatus for dynamic information connection search engine
US10/903,623 Division US7349894B2 (en) 2000-03-22 2004-07-30 Method and apparatus for dynamic information connection search engine
US11/067,547 Division US20050234853A1 (en) 2000-03-22 2005-02-25 Method and apparatus for dynamic information connnection engine
US11/091,852 Division US7774331B2 (en) 2000-03-22 2005-03-28 Method and apparatus for dynamic information connection engine
US11/120,484 Division US7483883B2 (en) 2000-03-22 2005-05-03 Incremental presentation of search results from multiple suppliers
US11/120,401 Division US20050262064A1 (en) 2000-03-22 2005-05-03 Method and apparatus for dynamic information connection engine
US11/128,029 Division US20050234559A1 (en) 2000-03-13 2005-05-11 Modular hip prosthesis

Publications (1)

Publication Number Publication Date
US20010054020A1 true US20010054020A1 (en) 2001-12-20

Family

ID=22705111

Family Applications (13)

Application Number Title Priority Date Filing Date
US09/815,836 Abandoned US20010054020A1 (en) 2000-03-13 2001-03-22 Method and apparatus for dynamic information connection engine
US10/903,623 Expired - Lifetime US7349894B2 (en) 2000-03-22 2004-07-30 Method and apparatus for dynamic information connection search engine
US11/067,547 Abandoned US20050234853A1 (en) 2000-03-22 2005-02-25 Method and apparatus for dynamic information connnection engine
US11/091,852 Expired - Fee Related US7774331B2 (en) 2000-03-22 2005-03-28 Method and apparatus for dynamic information connection engine
US11/120,484 Expired - Lifetime US7483883B2 (en) 2000-03-22 2005-05-03 Incremental presentation of search results from multiple suppliers
US11/120,401 Abandoned US20050262064A1 (en) 2000-03-22 2005-05-03 Method and apparatus for dynamic information connection engine
US11/201,376 Active 2026-08-01 US7627606B2 (en) 2000-03-22 2005-08-10 Secondary search for a travel related item based on the detection of a purchase offer from a prior travel related search
US11/203,885 Abandoned US20060080298A1 (en) 2000-03-22 2005-08-15 Method and apparatus for dynamic information connection engine
US11/273,784 Abandoned US20060123012A1 (en) 2000-03-22 2005-11-14 Method and apparatus for dynamic information connection engine
US11/870,909 Abandoned US20080033770A1 (en) 2000-03-22 2007-10-11 Method and apparatus for dynamic information connection search engine
US12/819,997 Abandoned US20100268623A1 (en) 2000-03-22 2010-06-21 Purchase Handoff in a Travel Search Engine
US13/207,863 Expired - Lifetime US8458162B2 (en) 2000-03-22 2011-08-11 Purchase handoff in a travel search engine
US13/745,122 Expired - Fee Related US8738599B2 (en) 2000-03-22 2013-01-18 Purchase handoff in a travel search engine

Family Applications After (12)

Application Number Title Priority Date Filing Date
US10/903,623 Expired - Lifetime US7349894B2 (en) 2000-03-22 2004-07-30 Method and apparatus for dynamic information connection search engine
US11/067,547 Abandoned US20050234853A1 (en) 2000-03-22 2005-02-25 Method and apparatus for dynamic information connnection engine
US11/091,852 Expired - Fee Related US7774331B2 (en) 2000-03-22 2005-03-28 Method and apparatus for dynamic information connection engine
US11/120,484 Expired - Lifetime US7483883B2 (en) 2000-03-22 2005-05-03 Incremental presentation of search results from multiple suppliers
US11/120,401 Abandoned US20050262064A1 (en) 2000-03-22 2005-05-03 Method and apparatus for dynamic information connection engine
US11/201,376 Active 2026-08-01 US7627606B2 (en) 2000-03-22 2005-08-10 Secondary search for a travel related item based on the detection of a purchase offer from a prior travel related search
US11/203,885 Abandoned US20060080298A1 (en) 2000-03-22 2005-08-15 Method and apparatus for dynamic information connection engine
US11/273,784 Abandoned US20060123012A1 (en) 2000-03-22 2005-11-14 Method and apparatus for dynamic information connection engine
US11/870,909 Abandoned US20080033770A1 (en) 2000-03-22 2007-10-11 Method and apparatus for dynamic information connection search engine
US12/819,997 Abandoned US20100268623A1 (en) 2000-03-22 2010-06-21 Purchase Handoff in a Travel Search Engine
US13/207,863 Expired - Lifetime US8458162B2 (en) 2000-03-22 2011-08-11 Purchase handoff in a travel search engine
US13/745,122 Expired - Fee Related US8738599B2 (en) 2000-03-22 2013-01-18 Purchase handoff in a travel search engine

Country Status (4)

Country Link
US (13) US20010054020A1 (en)
EP (1) EP1428142A2 (en)
AU (1) AU2001247789A1 (en)
WO (1) WO2001071572A2 (en)

Cited By (203)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010039547A1 (en) * 2000-05-08 2001-11-08 Black Jonathan K. Internet web-based technology for storing, archiving, and updating key personal identity items
US20020059622A1 (en) * 2000-07-10 2002-05-16 Grove Adam J. Method for network discovery using name servers
US20020087627A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing search capabilities and storing functions on a wireless access device
US20020086661A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing access to forms for displaying information on a wireless access device
US20020087628A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing wireless device access to e-mail applications
US20020087620A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing search capabilties on a wireless device
US20020091550A1 (en) * 2000-06-29 2002-07-11 White Mitchell Franklin System and method for real-time rating, underwriting and policy issuance
US20020103908A1 (en) * 2000-12-29 2002-08-01 Andrew Rouse System and method for providing customizable options on a wireless device
US20020152205A1 (en) * 2001-04-11 2002-10-17 Henrik Hodam Method of operating an automatic sector information system
US20030025728A1 (en) * 2001-07-10 2003-02-06 Ebbo David S. User control objects for providing server-side code generation from a user-defined dynamic web page content file
US20030069906A1 (en) * 2001-07-27 2003-04-10 Cichowlas Bruce William Method and system for multi-page web applications with central control
US20030074432A1 (en) * 2001-09-26 2003-04-17 Mazzitelli John Joseph State data management method and system
US20030085917A1 (en) * 2001-07-10 2003-05-08 Woo-Seok Chang Method of providing user interface via web
US20030097464A1 (en) * 2001-11-21 2003-05-22 Frank Martinez Distributed web services network architecture
US20030167223A1 (en) * 2002-03-01 2003-09-04 Financial Fusion, Inc., A Wholly-Owned Subsidiary Of Sybase, Inc. System with methodology for improved transmission of financial information
US20030208603A1 (en) * 2002-05-02 2003-11-06 Eyal Manor System and method for initiating communication
US20030225889A1 (en) * 2002-05-30 2003-12-04 Moutafov Kamen K. Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
US6665634B2 (en) * 2001-12-21 2003-12-16 Hewlett-Packard Development Company, L.P. Test system for testing dynamic information returned by a web server
US20030233569A1 (en) * 2002-01-22 2003-12-18 Geib Christopher W. Recognition plan/goal abandonment
WO2003105054A1 (en) * 2002-06-07 2003-12-18 Goldman, Sachs & Co. Travel related risk management clearinghouse
US20040064735A1 (en) * 2002-08-09 2004-04-01 Frazier Tiffany M. Control systems and methods using a partially-observable markov decision process (PO-MDP)
US20040088251A1 (en) * 2002-11-01 2004-05-06 Peter Moenickheim Easy establishment of biller or payees of a payor
US20040103296A1 (en) * 2002-11-25 2004-05-27 Harp Steven A. Skeptical system
US6757900B1 (en) 2000-05-18 2004-06-29 Microsoft Corporation State management of server-side control objects
US20040133509A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal A. Technique for making payments for a non-subscriber payor
US20040133515A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal A. Distributed matching of consumers with billers having bills available for electronic presentment
US20040138998A1 (en) * 2002-11-14 2004-07-15 David Lawrence Independent research consensus earnings estimates and methods of determining such
US20040139009A1 (en) * 2002-11-01 2004-07-15 Kozee Casey W. Technique for identifying probable billers of a consumer
WO2004077201A2 (en) * 2003-02-26 2004-09-10 International Business Machines Corporation Dynamic data-driven application integration adapters
US6792607B1 (en) 2000-05-18 2004-09-14 Microsoft Corporation Databinding using server-side control objects
US20040260806A1 (en) * 2003-06-20 2004-12-23 Eric Martin System supporting communication between a web enabled application and another application
US20050060296A1 (en) * 2003-09-15 2005-03-17 Whitby David Scott Search system and method for simultaneous querying and notification of multiple web sales sites
US6898604B1 (en) 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US20050114263A1 (en) * 2003-11-20 2005-05-26 Fujitsu Limited Automatic transaction apparatus and automatic transaction system
US20050114206A1 (en) * 2003-11-25 2005-05-26 Dominic Bennett Database structure and front end
US6915454B1 (en) 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US20050159136A1 (en) * 2000-12-29 2005-07-21 Andrew Rouse System and method for providing wireless device access
US20050165789A1 (en) * 2003-12-22 2005-07-28 Minton Steven N. Client-centric information extraction system for an information network
US6961750B1 (en) 2000-05-18 2005-11-01 Microsoft Corp. Server-side control objects for processing client-side user interface elements
US20050251469A1 (en) * 2003-01-27 2005-11-10 Gopal Nandakumar Network topology for processing consumer financial transactions
US6975996B2 (en) 2001-10-09 2005-12-13 Goldman, Sachs & Co. Electronic subpoena service
US6985946B1 (en) 2000-05-12 2006-01-10 Microsoft Corporation Authentication and authorization pipeline architecture for use in a web server
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US20060053424A1 (en) * 2002-06-28 2006-03-09 Tommi Koistinen Load balancing devices and method therefor
US7013340B1 (en) 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US20060080383A1 (en) * 2004-07-19 2006-04-13 International Business Machines Corporation Time-out management for session dependent applications
US20060129541A1 (en) * 2002-06-11 2006-06-15 Microsoft Corporation Dynamically updated quick searches and strategies
US7103642B1 (en) * 2002-04-30 2006-09-05 Sprint Communications Company L.P. System and method for personalizing a home page
US20060259548A1 (en) * 2002-05-29 2006-11-16 International Business Machines Corporation Web and lotus notes adapter layers
US20070011020A1 (en) * 2005-07-05 2007-01-11 Martin Anthony G Categorization of locations and documents in a computer network
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US20070112780A1 (en) * 2005-11-15 2007-05-17 Stone Gregory L Method and system to process navigation information
US20070118317A1 (en) * 2005-11-21 2007-05-24 Corredoura Paul L System and method for generating triggers based on predetermined trigger waveform and a measurement signal
US20070150427A1 (en) * 2005-12-22 2007-06-28 Honeywell International Inc. Recognition plan/goal abandonment
US20070169170A1 (en) * 2005-12-30 2007-07-19 Microsoft Corporation Session Management By Analysis Of Requests And Responses
US20070214034A1 (en) * 2005-08-30 2007-09-13 Michael Ihle Systems and methods for managing and regulating object allocations
US20070226164A1 (en) * 2006-03-21 2007-09-27 Honeywell International Inc. Type variables and/or temporal constraints in plan recognition
US20070239688A1 (en) * 2006-04-11 2007-10-11 Clark David K System and method for altering search result sequence based on user preferences
US20070250468A1 (en) * 2006-04-24 2007-10-25 Captive Traffic, Llc Relevancy-based domain classification
US20080065237A1 (en) * 2006-09-10 2008-03-13 Long Wesley V Dynamic HTML based Multi Tabbed Sortable Results
US7356768B1 (en) * 2002-11-27 2008-04-08 Adobe Systems Incorporated Using document templates to assemble a collection of documents
US7395243B1 (en) 2002-11-01 2008-07-01 Checkfree Corporation Technique for presenting matched billers to a consumer
US7401067B2 (en) 1997-11-14 2008-07-15 Adobe Systems Incorporated Retrieving documents transitively linked to an initial document
US20080198761A1 (en) * 2007-02-15 2008-08-21 Microsoft Corporation Decentralized network architecture for travel related services
US20080222091A1 (en) * 1997-11-14 2008-09-11 Adobe Systems Incorporated Retrieving Documents Transitively Linked to an Initial Document
US20080228678A1 (en) * 2000-05-04 2008-09-18 International Business Machines Corporation Real time backup system for computer users
US20080235352A1 (en) * 2007-03-22 2008-09-25 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US20080256036A1 (en) * 2007-04-11 2008-10-16 David Alan Falk System and method for performing data searches using multiple data search providers
US20080306988A1 (en) * 2005-10-17 2008-12-11 International Business Machines Corporation Optimization-Based Visual Context Management
US20080319946A1 (en) * 2007-06-20 2008-12-25 Amadeus S.A.S. Method and system for searching availability of an entity for purchase or reservation
US20090030876A1 (en) * 2004-01-19 2009-01-29 Nigel Hamilton Method and system for recording search trails across one or more search engines in a communications network
US20090125340A1 (en) * 2005-10-06 2009-05-14 Peter John Gosney Booking a Chauffeured Vehicle
US20090144749A1 (en) * 2007-11-30 2009-06-04 Leviathan Entertainment Alert and Repair System for Data Scraping Routines
US7548883B2 (en) 2001-03-20 2009-06-16 Goldman Sachs & Co Construction industry risk management clearinghouse
US20090158298A1 (en) * 2007-12-12 2009-06-18 Abhishek Saxena Database system and eventing infrastructure
US20090165017A1 (en) * 2007-12-24 2009-06-25 Yahoo! Inc. Stateless proportionally consistent addressing
US7594001B1 (en) 2001-07-06 2009-09-22 Microsoft Corporation Partial page output caching
US7668809B1 (en) * 2004-12-15 2010-02-23 Kayak Software Corporation Method and apparatus for dynamic information connection search engine
US7729996B2 (en) 2002-11-01 2010-06-01 Checkfree Corporation Reuse of an EBP account through alternate authentication
US20100179947A1 (en) * 2002-11-05 2010-07-15 Martin Anthony G Updating Content of Presentation Vehicle in a Computer Network
US7792749B2 (en) 1999-04-26 2010-09-07 Checkfree Corporation Dynamic biller list generation
US7853643B1 (en) * 2001-11-21 2010-12-14 Blue Titan Software, Inc. Web services-based computing resource lifecycle management
US7873200B1 (en) 2006-10-31 2011-01-18 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US7876949B1 (en) 2006-10-31 2011-01-25 United Services Automobile Association Systems and methods for remote deposit of checks
US7885451B1 (en) 2006-10-31 2011-02-08 United Services Automobile Association (Usaa) Systems and methods for displaying negotiable instruments derived from various sources
US7885880B1 (en) 2008-09-30 2011-02-08 United Services Automobile Association (Usaa) Atomic deposit transaction
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US7895529B1 (en) * 2003-09-10 2011-02-22 Microsoft Corporation System and method for processing featured content
US7895308B2 (en) * 2005-05-11 2011-02-22 Tindall Steven J Messaging system configurator
US7899722B1 (en) 2001-03-20 2011-03-01 Goldman Sachs & Co. Correspondent bank registry
US7896232B1 (en) 2007-11-06 2011-03-01 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US7900822B1 (en) 2007-11-06 2011-03-08 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US7904361B2 (en) 2001-03-20 2011-03-08 Goldman Sachs & Co. Risk management customer registry
US20110119120A1 (en) * 2000-07-07 2011-05-19 Kern K Jon Loyalty reward program for reducing the balance of a loan obligation
US20110119196A1 (en) * 2009-11-18 2011-05-19 Nohold, Inc. Confederated knowledge for two or more internet-accessible knowledge management systems
US7949587B1 (en) 2008-10-24 2011-05-24 United States Automobile Association (USAA) Systems and methods for financial deposits by electronic message
US7958027B2 (en) 2001-03-20 2011-06-07 Goldman, Sachs & Co. Systems and methods for managing risk associated with a geo-political area
US7962411B1 (en) 2008-09-30 2011-06-14 United Services Automobile Association (Usaa) Atomic deposit transaction
US7970677B1 (en) 2008-10-24 2011-06-28 United Services Automobile Association (Usaa) Systems and methods for financial deposits by electronic message
US7974899B1 (en) 2008-09-30 2011-07-05 United Services Automobile Association (Usaa) Atomic deposit transaction
US7979457B1 (en) * 2005-03-02 2011-07-12 Kayak Software Corporation Efficient search of supplier servers based on stored search results
US7996315B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996316B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association Systems and methods to modify a negotiable instrument
US7996314B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8001051B1 (en) 2007-10-30 2011-08-16 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
EP2363995A1 (en) * 2010-03-02 2011-09-07 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
US8046301B1 (en) 2007-10-30 2011-10-25 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8060405B1 (en) 2004-12-31 2011-11-15 Google Inc. Methods and systems for correlating connections between users and links between articles
US8065600B2 (en) 2004-05-14 2011-11-22 Microsoft Corporation Systems and methods for defining web content navigation
US8069105B2 (en) 2001-03-20 2011-11-29 Goldman Sachs & Co. Hedge fund risk management
US8073866B2 (en) 2005-03-17 2011-12-06 Claria Innovations, Llc Method for providing content to an internet user based on the user's demonstrated content preferences
US8078602B2 (en) 2004-12-17 2011-12-13 Claria Innovations, Llc Search engine for a computer network
US8086697B2 (en) 2005-06-28 2011-12-27 Claria Innovations, Llc Techniques for displaying impressions in documents delivered over a computer network
US8121937B2 (en) 2001-03-20 2012-02-21 Goldman Sachs & Co. Gaming industry risk management clearinghouse
US8140415B2 (en) 2001-03-20 2012-03-20 Goldman Sachs & Co. Automated global risk management
US8156448B2 (en) 2004-05-28 2012-04-10 Microsoft Corporation Site navigation and site navigation data source
US8156246B2 (en) 1998-12-08 2012-04-10 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8185776B1 (en) * 2004-09-30 2012-05-22 Symantec Operating Corporation System and method for monitoring an application or service group within a cluster as a resource of another cluster
US8190708B1 (en) 1999-10-22 2012-05-29 Nomadix, Inc. Gateway device having an XML interface and associated method
US8209246B2 (en) 2001-03-20 2012-06-26 Goldman, Sachs & Co. Proprietary risk management clearinghouse
US8255413B2 (en) 2004-08-19 2012-08-28 Carhamm Ltd., Llc Method and apparatus for responding to request for information-personalization
US8266269B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8285615B2 (en) 2001-03-20 2012-10-09 Goldman, Sachs & Co. Construction industry risk management clearinghouse
US8290237B1 (en) 2007-10-31 2012-10-16 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8320657B1 (en) 2007-10-31 2012-11-27 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8351677B1 (en) 2006-10-31 2013-01-08 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8351678B1 (en) 2008-06-11 2013-01-08 United Services Automobile Association (Usaa) Duplicate check detection
US8358826B1 (en) 2007-10-23 2013-01-22 United Services Automobile Association (Usaa) Systems and methods for receiving and orienting an image of one or more checks
US8391599B1 (en) 2008-10-17 2013-03-05 United Services Automobile Association (Usaa) Systems and methods for adaptive binarization of an image
US8422758B1 (en) 2008-09-02 2013-04-16 United Services Automobile Association (Usaa) Systems and methods of check re-presentment deterrent
US8433127B1 (en) 2007-05-10 2013-04-30 United Services Automobile Association (Usaa) Systems and methods for real-time validation of check image quality
US8452689B1 (en) 2009-02-18 2013-05-28 United Services Automobile Association (Usaa) Systems and methods of check detection
US8538124B1 (en) 2007-05-10 2013-09-17 United Services Auto Association (USAA) Systems and methods for real-time validation of check image quality
US8542921B1 (en) 2009-07-27 2013-09-24 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instrument using brightness correction
US8613053B2 (en) 1998-12-08 2013-12-17 Nomadix, Inc. System and method for authorizing a portable communication device
US8620952B2 (en) 2007-01-03 2013-12-31 Carhamm Ltd., Llc System for database reporting
US8645941B2 (en) 2005-03-07 2014-02-04 Carhamm Ltd., Llc Method for attributing and allocating revenue related to embedded software
US8689238B2 (en) 2000-05-18 2014-04-01 Carhamm Ltd., Llc Techniques for displaying impressions in documents delivered over a computer network
US8688579B1 (en) 2010-06-08 2014-04-01 United Services Automobile Association (Usaa) Automatic remote deposit image preparation apparatuses, methods and systems
US8699779B1 (en) 2009-08-28 2014-04-15 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US8708227B1 (en) 2006-10-31 2014-04-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8762191B2 (en) 2004-07-02 2014-06-24 Goldman, Sachs & Co. Systems, methods, apparatus, and schema for storing, managing and retrieving information
US8799147B1 (en) 2006-10-31 2014-08-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instruments with non-payee institutions
US8832132B1 (en) 2004-06-22 2014-09-09 Google Inc. Personalizing search queries based on user membership in social network communities
US20150019678A1 (en) * 2006-03-24 2015-01-15 Blue Coat Systems, Inc. Methods and Systems for Caching Content at Multiple Levels
US8959033B1 (en) 2007-03-15 2015-02-17 United Services Automobile Association (Usaa) Systems and methods for verification of remotely deposited checks
US8977571B1 (en) 2009-08-21 2015-03-10 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US8996481B2 (en) 2004-07-02 2015-03-31 Goldman, Sach & Co. Method, system, apparatus, program code and means for identifying and extracting information
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US9047234B1 (en) * 2006-06-05 2015-06-02 Thomson Reuters (Markets) Llc Data context passing between non-interfaced application programs in a common framework
US9058581B2 (en) 2004-07-02 2015-06-16 Goldman, Sachs & Co. Systems and methods for managing information associated with legal, compliance and regulatory risk
US20150169367A1 (en) * 2013-12-18 2015-06-18 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US9063985B2 (en) 2004-07-02 2015-06-23 Goldman, Sachs & Co. Method, system, apparatus, program code and means for determining a redundancy of information
US20150242415A1 (en) * 2014-02-26 2015-08-27 Phantom Technologies, Inc. Detecting and managing abnormal data behavior
US20150309971A1 (en) * 2012-11-21 2015-10-29 Roofoveryourhead Marketing Ltd. A browser extension for the collection and distribution of data and methods of use thereof
US9286514B1 (en) 2013-10-17 2016-03-15 United Services Automobile Association (Usaa) Character count determination for a digital image
US9311634B1 (en) 2008-09-30 2016-04-12 United Services Automobile Association (Usaa) Systems and methods for automatic bill pay enrollment
US20160104197A1 (en) * 2007-10-15 2016-04-14 Google Inc. External Referencing By Portable Program Modules
US20160110239A1 (en) * 2014-10-20 2016-04-21 Teachers Insurance And Annuity Association Of America Identifying failed customer experience in distributed computer systems
US9473592B2 (en) 2010-03-02 2016-10-18 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
US9495446B2 (en) * 2004-12-20 2016-11-15 Gula Consulting Limited Liability Company Method and device for publishing cross-network user behavioral data
US9513961B1 (en) * 2014-04-02 2016-12-06 Google Inc. Monitoring application loading
US9537740B2 (en) 2014-07-31 2017-01-03 International Business Machines Corporation Monitoring device usage
US9626079B2 (en) 2005-02-15 2017-04-18 Microsoft Technology Licensing, Llc System and method for browsing tabbed-heterogeneous windows
US20170264624A1 (en) * 2016-03-10 2017-09-14 Huawei Technologies Co., Ltd Method of mitigating cookie-injection and cookie-replaying attacks
US9779392B1 (en) 2009-08-19 2017-10-03 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US9892454B1 (en) 2007-10-23 2018-02-13 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US9898778B1 (en) 2007-10-23 2018-02-20 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US20180067595A1 (en) * 2012-12-20 2018-03-08 Open Text Corporation Mechanism for partial page refresh using url addressable hierarchical page structure
US9998347B2 (en) 2014-07-31 2018-06-12 International Business Machines Corporation Monitoring device usage
US10042927B2 (en) 2006-04-24 2018-08-07 Yeildbot Inc. Interest keyword identification
US10102103B2 (en) 2015-11-11 2018-10-16 International Business Machines Corporation System resource component utilization
US10169182B2 (en) 2014-07-31 2019-01-01 International Business Machines Corporation Monitoring levels of utilization of device
US10268449B1 (en) * 2015-06-25 2019-04-23 EMC IP Holding Company LLC Natural order in API calls
US20190182358A1 (en) * 2009-10-08 2019-06-13 Web Spark Ltd. System providing faster and more efficient data communication
US10354235B1 (en) 2007-09-28 2019-07-16 United Services Automoblie Association (USAA) Systems and methods for digital signature detection
US10373136B1 (en) 2007-10-23 2019-08-06 United Services Automobile Association (Usaa) Image processing
US10380562B1 (en) 2008-02-07 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US10380565B1 (en) 2012-01-05 2019-08-13 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US10380559B1 (en) 2007-03-15 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for check representment prevention
US10402457B1 (en) 2004-12-31 2019-09-03 Google Llc Methods and systems for correlating connections between users and links between articles
US10402790B1 (en) 2015-05-28 2019-09-03 United Services Automobile Association (Usaa) Composing a focused document image from multiple image captures or portions of multiple image captures
US10410270B2 (en) * 2016-12-22 2019-09-10 Google Llc Granular selection and scheduling of queries
US10440146B2 (en) 2013-08-28 2019-10-08 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US10504185B1 (en) 2008-09-08 2019-12-10 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US10521781B1 (en) 2003-10-30 2019-12-31 United Services Automobile Association (Usaa) Wireless electronic check deposit scanning and cashing machine with webbased online account cash management computer application system
US20200036770A1 (en) * 2018-07-25 2020-01-30 Vmware, Inc. Techniques for improving implementation of a remote browser within a local browser
US10552810B1 (en) 2012-12-19 2020-02-04 United Services Automobile Association (Usaa) System and method for remote deposit of financial instruments
US10579618B1 (en) * 2015-12-15 2020-03-03 Amazon Technologies, Inc. Query routing and rewriting
US10616294B2 (en) 2015-05-14 2020-04-07 Web Spark Ltd. System and method for streaming content from multiple servers
US10649876B2 (en) 2017-04-20 2020-05-12 International Business Machines Corporation Maintaining manageable utilization in a system to prevent excessive queuing of system requests
US10853430B1 (en) 2016-11-14 2020-12-01 American Innovative Applications Corporation Automated agent search engine
US10880266B1 (en) 2017-08-28 2020-12-29 Luminati Networks Ltd. System and method for improving content fetching by selecting tunnel devices
US10902080B2 (en) 2019-02-25 2021-01-26 Luminati Networks Ltd. System and method for URL fetching retry mechanism
US10956728B1 (en) 2009-03-04 2021-03-23 United Services Automobile Association (Usaa) Systems and methods of check processing with background removal
US11030752B1 (en) 2018-04-27 2021-06-08 United Services Automobile Association (Usaa) System, computing device, and method for document detection
US11138578B1 (en) 2013-09-09 2021-10-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of currency
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11321775B2 (en) * 2013-06-27 2022-05-03 Euroclear Sa/Nv Asset inventory system
US11411922B2 (en) 2019-04-02 2022-08-09 Bright Data Ltd. System and method for managing non-direct URL fetching service
US11461308B2 (en) * 2019-12-23 2022-10-04 Amadeus S.A.S. System and method for optimizing transmission of requests for updated content from external data sources
WO2022232285A1 (en) * 2021-04-30 2022-11-03 Salmon Upstream, LLC Digital infrastructure to perform multi-network connections
US11900755B1 (en) 2020-11-30 2024-02-13 United Services Automobile Association (Usaa) System, computing device, and method for document detection and deposit processing

Families Citing this family (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513046B1 (en) * 1999-12-15 2003-01-28 Tangis Corporation Storing and recalling information to augment human memories
US9183306B2 (en) 1998-12-18 2015-11-10 Microsoft Technology Licensing, Llc Automated selection of appropriate information based on a computer user's context
US7046263B1 (en) 1998-12-18 2006-05-16 Tangis Corporation Requesting computer user's context data
US8225214B2 (en) 1998-12-18 2012-07-17 Microsoft Corporation Supplying enhanced computer user's context data
US6842877B2 (en) 1998-12-18 2005-01-11 Tangis Corporation Contextual responses based on automated learning techniques
US7225229B1 (en) 1998-12-18 2007-05-29 Tangis Corporation Automated pushing of computer user's context data to clients
US7231439B1 (en) * 2000-04-02 2007-06-12 Tangis Corporation Dynamically swapping modules for determining a computer user's context
US6791580B1 (en) * 1998-12-18 2004-09-14 Tangis Corporation Supplying notifications related to supply and consumption of user context data
US6920616B1 (en) 1998-12-18 2005-07-19 Tangis Corporation Interface for exchanging context data
US6801223B1 (en) * 1998-12-18 2004-10-05 Tangis Corporation Managing interactions between computer users' context models
US8181113B2 (en) 1998-12-18 2012-05-15 Microsoft Corporation Mediating conflicts in computer users context data
US7779015B2 (en) 1998-12-18 2010-08-17 Microsoft Corporation Logging and analyzing context attributes
WO2001075676A2 (en) * 2000-04-02 2001-10-11 Tangis Corporation Soliciting information based on a computer user's context
US7464153B1 (en) * 2000-04-02 2008-12-09 Microsoft Corporation Generating and supplying user context data
AU2001270032A1 (en) * 2000-06-20 2002-01-02 United Air Lines, Inc. Travel fares packaging system and method
US20020054130A1 (en) * 2000-10-16 2002-05-09 Abbott Kenneth H. Dynamically displaying current status of tasks
GB2386724A (en) * 2000-10-16 2003-09-24 Tangis Corp Dynamically determining appropriate computer interfaces
US8868448B2 (en) 2000-10-26 2014-10-21 Liveperson, Inc. Systems and methods to facilitate selling of products and services
US9819561B2 (en) 2000-10-26 2017-11-14 Liveperson, Inc. System and methods for facilitating object assignments
US20020143664A1 (en) * 2001-04-03 2002-10-03 Webb Brett M. Network based gift reminder and purchasing system and method
JP2003016250A (en) * 2001-06-28 2003-01-17 Pioneer Electronic Corp Device, system and method for searching client
EP1411718A1 (en) * 2001-07-05 2004-04-21 Matsushita Electric Industrial Co., Ltd. Broadcast system
GB2377781A (en) * 2001-07-20 2003-01-22 Hewlett Packard Co Content item management
US6922791B2 (en) * 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US20090006543A1 (en) * 2001-08-20 2009-01-01 Masterobjects System and method for asynchronous retrieval of information based on incremental user input
US9286601B2 (en) 2012-09-07 2016-03-15 Concur Technologies, Inc. Methods and systems for displaying schedule information
US9400959B2 (en) 2011-08-31 2016-07-26 Concur Technologies, Inc. Method and system for detecting duplicate travel path information
US7720702B2 (en) * 2003-02-26 2010-05-18 Concur Technologies, Inc. System and method for integrated travel and expense management
US20030120526A1 (en) * 2001-10-16 2003-06-26 Jonathan Altman System and method for managing booking and expensing of travel products and services
US10115128B2 (en) 2010-10-21 2018-10-30 Concur Technologies, Inc. Method and system for targeting messages to travelers
US8712811B2 (en) 2001-10-16 2014-04-29 Concur Technologies, Inc. Method and systems for detecting duplicate travel path
US7974892B2 (en) * 2004-06-23 2011-07-05 Concur Technologies, Inc. System and method for expense management
US10255362B2 (en) * 2001-11-28 2019-04-09 Benjamin Rodefer Method for performing a search, and computer program product and user interface for same
US20030131005A1 (en) * 2002-01-10 2003-07-10 International Business Machines Corporation Method and apparatus for automatic pruning of search engine indices
WO2003074478A1 (en) 2002-03-05 2003-09-12 Sumitomo Chemical Company, Limited Process for the preparation of biaryl compounds
US7908355B2 (en) * 2002-06-20 2011-03-15 International Business Machines Corporation Method for improving network server load balancing
WO2004075512A1 (en) * 2003-02-18 2004-09-02 Nortel Networks Limited Discovery of an application server in an ip network
US7873636B2 (en) * 2003-05-01 2011-01-18 International Business Machines Corporation Method, system and program product for matching a network document with a set of filters
US20040254819A1 (en) * 2003-06-16 2004-12-16 International Business Machines Corporation System and method for providing automatic and continuous price monitoring services for optimizing contract selection and replacement
US7398291B2 (en) * 2003-06-26 2008-07-08 International Business Machines Corporation Method, system and program product for providing a status of a transaction with an application on a server
US8266013B2 (en) * 2003-09-12 2012-09-11 Altisource Solutions S.à r.l. Methods and systems for vendor assurance
US20060155640A1 (en) * 2003-09-12 2006-07-13 Christopher Kennedy Product optimizer
US8078483B1 (en) 2003-12-16 2011-12-13 Ticketmaster Systems and methods for queuing access to network resources
US7581003B2 (en) * 2003-12-31 2009-08-25 Microsoft Corporation System and method for automatic recovery from fault conditions in networked computer services
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8600784B1 (en) 2004-07-30 2013-12-03 Kayak Software Corporation Indentifying information sources to search based on rules
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7873707B1 (en) * 2004-10-27 2011-01-18 Oracle America, Inc. Client-side URL rewriter
CA2827035A1 (en) 2004-11-08 2006-05-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US20060122872A1 (en) * 2004-12-06 2006-06-08 Stevens Harold L Graphical user interface for and method of use for a computer-implemented system and method for booking travel itineraries
WO2009021198A1 (en) * 2007-08-08 2009-02-12 Baynote, Inc. Method and apparatus for context-based content recommendation
TWI257053B (en) * 2005-01-20 2006-06-21 Via Tech Inc System and method used to automatically reload and manage hyperlinks
US20060206488A1 (en) * 2005-03-09 2006-09-14 David Distasio Information transfer
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9075657B2 (en) 2005-04-07 2015-07-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US9015324B2 (en) 2005-03-16 2015-04-21 Adaptive Computing Enterprises, Inc. System and method of brokering cloud computing resources
WO2008036058A2 (en) 2005-03-16 2008-03-27 Cluster Resources, Inc. On-demand computing environment
EP1866885A4 (en) 2005-03-22 2011-12-21 Ticketmaster Apparatus and methods for providing queue messaging over a network
US8782120B2 (en) 2005-04-07 2014-07-15 Adaptive Computing Enterprises, Inc. Elastic management of compute resources between a web server and an on-demand compute environment
BRPI0520273A2 (en) * 2005-06-02 2009-04-28 Thomson Licensing Method and content synchronization system
US20060277290A1 (en) * 2005-06-02 2006-12-07 Sam Shank Compiling and filtering user ratings of products
US20070027848A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Smart search for accessing options
US20070055930A1 (en) * 2005-09-07 2007-03-08 International Business Machines Corporation Tool for monitoring rules for a rules-based transformation engine
US9432468B2 (en) * 2005-09-14 2016-08-30 Liveperson, Inc. System and method for design and dynamic generation of a web page
US8738732B2 (en) 2005-09-14 2014-05-27 Liveperson, Inc. System and method for performing follow up based on user interactions
US8131574B2 (en) * 2005-09-29 2012-03-06 Amadeus S.A.S. Air travel system and method for planning roundtrip flights using one way combinable fares
US20070088659A1 (en) * 2005-10-19 2007-04-19 Mod Systems Distribution of selected digitally-encoded content to a storage device, user device, or other distribution target with concurrent rendering of selected content
US20070088633A1 (en) * 2005-10-19 2007-04-19 Mod Systems Method and system for optimal or near-optimal selection of content for broadcast in a commercial environment
US8260908B2 (en) * 2005-11-16 2012-09-04 Cisco Technologies, Inc. Techniques for sequencing system log messages
US7890573B2 (en) * 2005-11-18 2011-02-15 Toshiba Medical Visualization Systems Europe, Limited Server-client architecture in medical imaging
US7818340B1 (en) 2005-12-01 2010-10-19 Peter Warren Computer-implemented method and system for enabling network communication using sponsored chat links
US8996562B2 (en) 2005-12-01 2015-03-31 Peter Warren Computer-implemented method and system for enabling anonymous communication between networked users based on common search queries
US20070156566A1 (en) * 2005-12-30 2007-07-05 Ebay Inc. System and method for seller and item filters
EP1982297A4 (en) * 2006-01-25 2010-08-25 V1 Jets Internat Inc Method, system, and apparatus for aggregation system for searchable travel data
CA2636429C (en) 2006-01-27 2013-09-24 Unz.Org, Llc Presenting digitized content on a network
US7792857B1 (en) 2006-03-30 2010-09-07 Emc Corporation Migration of content when accessed using federated search
US20070239722A1 (en) * 2006-03-30 2007-10-11 Phillips Mark E Distributed user-profile data structure
US7962464B1 (en) * 2006-03-30 2011-06-14 Emc Corporation Federated search
EP1843290A1 (en) * 2006-04-07 2007-10-10 Amadeus s.a.s Improved global distribution system for searching best travel deals
US8712973B2 (en) * 2006-04-11 2014-04-29 International Business Machines Corporation Weighted determination in configuration management systems
US20070266015A1 (en) * 2006-05-12 2007-11-15 Microsoft Corporation User Created Search Vertical Control of User Interface
US7831586B2 (en) 2006-06-09 2010-11-09 Ebay Inc. System and method for application programming interfaces for keyword extraction and contextual advertisement generation
EP1865421B1 (en) * 2006-06-09 2019-02-20 Siemens Aktiengesellschaft System for the Generationan of Dynamic Web Pages
US8209320B2 (en) 2006-06-09 2012-06-26 Ebay Inc. System and method for keyword extraction
EP2044563A4 (en) * 2006-07-05 2009-10-28 Ebay Inc System and method for category-based contextual advertisement generation and management
US7945484B1 (en) 2006-09-28 2011-05-17 A9.Com, Inc. Local product information
US8160929B1 (en) 2006-09-28 2012-04-17 Amazon Technologies, Inc. Local item availability information
US20080140642A1 (en) * 2006-10-10 2008-06-12 Bill Messing Automated user activity associated data collection and reporting for content/metadata selection and propagation service
US20080115125A1 (en) * 2006-11-13 2008-05-15 Cingular Wireless Ii, Llc Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network
US7796592B2 (en) * 2006-11-13 2010-09-14 At&T Mobility Ii Llc Optimizing static dictionary usage for signal, hypertext transfer protocol and bytecode compression in a wireless network
US8086600B2 (en) * 2006-12-07 2011-12-27 Google Inc. Interleaving search results
US7827290B2 (en) * 2006-12-21 2010-11-02 Genesys Telecommunications Laboratories, Inc. Method for integrating client WEB history and call center history into a single interaction history accessible in real time
US20080154738A1 (en) * 2006-12-22 2008-06-26 Microsoft Corporation Interactive marketplace infrastructure
US20080183690A1 (en) 2007-01-26 2008-07-31 Ramachandran Puthukode G Method for providing assistance in making change decisions in a configurable managed environment
US20080183596A1 (en) * 2007-01-31 2008-07-31 Ebay Inc. Bid system for presentation of data items
US20080222155A1 (en) * 2007-03-08 2008-09-11 Phillips Mark E Method and apparatus for partial publication and inventory maintenance of media objects in a region
US20080262878A1 (en) * 2007-04-17 2008-10-23 Travelocity.Com Lp Systems, methods, and computer program products for generating and updating a cache of price and availability information for travel packages and components
US8090603B2 (en) * 2007-05-11 2012-01-03 Fansnap, Inc. System and method for selecting event tickets
US8880583B2 (en) * 2007-06-08 2014-11-04 Nixle, Llc System and method for permitting geographically-pertinent information to be ranked by users according to users' geographic proximity to information and to each other for affecting the ranking of such information
US8015181B2 (en) * 2007-06-19 2011-09-06 Conduit, Ltd System for providing enhanced search results on the internet
US20090018904A1 (en) 2007-07-09 2009-01-15 Ebay Inc. System and method for contextual advertising and merchandizing based on user configurable preferences
KR20090006572A (en) * 2007-07-12 2009-01-15 삼성전자주식회사 Apparatus and method for managing thread pool
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8583617B2 (en) 2007-09-28 2013-11-12 Yelster Digital Gmbh Server directed client originated search aggregator
US20090119264A1 (en) * 2007-11-05 2009-05-07 Chacha Search, Inc Method and system of accessing information
US8301651B2 (en) * 2007-11-21 2012-10-30 Chacha Search, Inc. Method and system for improving utilization of human searchers
US8972434B2 (en) * 2007-12-05 2015-03-03 Kayak Software Corporation Multi-phase search and presentation for vertical search websites
US8954430B1 (en) 2007-12-13 2015-02-10 Amazon Technologies, Inc. Persistent searches
US20090157523A1 (en) * 2007-12-13 2009-06-18 Chacha Search, Inc. Method and system for human assisted referral to providers of products and services
US7860982B2 (en) * 2008-03-14 2010-12-28 Microsoft Corporation Internet connectivity verification
WO2009146238A1 (en) * 2008-05-01 2009-12-03 Chacha Search, Inc. Method and system for improvement of request processing
US7966564B2 (en) 2008-05-08 2011-06-21 Adchemy, Inc. Web page server process using visitor context and page features to select optimized web pages for display
US20090327923A1 (en) * 2008-06-30 2009-12-31 Yahoo! Inc. Automated system and method for creating a web site based on a subject using information available on the internet
US8762313B2 (en) 2008-07-25 2014-06-24 Liveperson, Inc. Method and system for creating a predictive model for targeting web-page to a surfer
US8260846B2 (en) 2008-07-25 2012-09-04 Liveperson, Inc. Method and system for providing targeted content to a surfer
US8805844B2 (en) 2008-08-04 2014-08-12 Liveperson, Inc. Expert search
US9015227B2 (en) * 2008-09-08 2015-04-21 British Telecommunications Public Limited Company Distributed data processing system
US8422395B2 (en) * 2008-09-30 2013-04-16 Microsoft Corporation Resilient 1:N first-hop gateway selection mechanism
US20100094668A1 (en) * 2008-10-13 2010-04-15 Embarq Holdings Company, Llc System and method for making a reservation associated with a calendar appointment
US9892417B2 (en) 2008-10-29 2018-02-13 Liveperson, Inc. System and method for applying tracing tools for network locations
US7843237B2 (en) * 2008-11-17 2010-11-30 Infineon Technologies Austria Ag Circuit arrangement for actuating a transistor
KR101024532B1 (en) * 2009-02-06 2011-03-31 엔에이치엔(주) Sysem for providing applycation based on html capable of cotrol client and web action
US8095524B2 (en) * 2009-03-18 2012-01-10 International Business Machines Corporation Method and system for integrating personal information search and interaction on web/desktop applications
JP5458688B2 (en) * 2009-03-19 2014-04-02 富士通株式会社 Uniqueness guarantee support program, service providing system, and uniqueness guarantee realization method
US20100281414A1 (en) * 2009-05-04 2010-11-04 Ventura Dana L Methods and systems for travel planning
US8782069B2 (en) * 2009-06-11 2014-07-15 Chacha Search, Inc Method and system of providing a search tool
KR101136726B1 (en) * 2009-06-15 2012-05-04 차영철 User-generated rule based multi-function search box service method and system
US20110040656A1 (en) * 2009-08-12 2011-02-17 Groetzinger Jon D System and method for generating predictions of price and availability of event tickets on secondary markets
US8635119B1 (en) * 2009-09-17 2014-01-21 Amazon Technologies, Inc. Presenting alternative shopping options
US20110106598A1 (en) * 2009-10-29 2011-05-05 Mccann Monica Theresa Surfacing Digital Coupons to Customers
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20110131204A1 (en) * 2009-12-02 2011-06-02 International Business Machines Corporation Deriving Asset Popularity by Number of Launches
US8533281B2 (en) * 2009-12-02 2013-09-10 International Business Machines Corporation Centralized management of mobile assets—push based management of corporate assets
US8903793B2 (en) * 2009-12-15 2014-12-02 At&T Intellectual Property I, L.P. System and method for speech-based incremental search
US20110179108A1 (en) * 2010-01-21 2011-07-21 International Business Machines Corporation System for Aggregating Information and Delivering User Specific Content
EP2556449A1 (en) 2010-04-07 2013-02-13 Liveperson Inc. System and method for dynamically enabling customized web content and applications
US8280760B1 (en) * 2010-04-30 2012-10-02 Intuit Inc. Generating pricing estimates
US8938721B2 (en) * 2010-07-21 2015-01-20 Microsoft Corporation Measuring actual end user performance and availability of web applications
US9032017B1 (en) 2010-08-10 2015-05-12 Scalarc Inc Method and system for transparent read-write query routing when load balancing databases
US8543554B1 (en) 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US8484242B1 (en) 2010-08-24 2013-07-09 ScalArc, Inc. Method and system for transparent database connection pooling and query queuing
US8763091B1 (en) 2010-08-24 2014-06-24 ScalArc Inc. Method and system for user authentication offload in a transparent database load balancer
WO2012048158A1 (en) 2010-10-06 2012-04-12 Planet Data Solutions System and method for indexing electronic discovery data
US8918465B2 (en) 2010-12-14 2014-12-23 Liveperson, Inc. Authentication of service requests initiated from a social networking site
US9350598B2 (en) 2010-12-14 2016-05-24 Liveperson, Inc. Authentication of service requests using a communications initiation feature
US9684690B2 (en) 2011-01-12 2017-06-20 Google Inc. Flights search
JP6058272B2 (en) * 2011-04-06 2017-01-11 東芝メディカルシステムズ株式会社 Nuclear medicine diagnostic apparatus and control method
US8621516B2 (en) * 2011-04-11 2013-12-31 Echostar Technologies L.L.C. Apparatus, systems and methods for providing travel information related to a streaming travel related event
JP5039844B1 (en) * 2011-07-29 2012-10-03 楽天株式会社 Information providing apparatus, information providing method, information providing program, and computer-readable recording medium storing the program
US9595042B1 (en) * 2011-09-07 2017-03-14 Datalex (Ireland) Limited System and method for testing airline revenue optimization and related tools or products for travel
CN102291469B (en) * 2011-09-23 2013-11-20 王楠 Individual oriented acquisition cloud service system
US20130110585A1 (en) * 2011-11-02 2013-05-02 Invisiblehand Software Ltd. Data Processing
US8615504B2 (en) * 2011-12-14 2013-12-24 Artist Growth, Llc Action alignment for event planning, project management and process structuring
US8943002B2 (en) 2012-02-10 2015-01-27 Liveperson, Inc. Analytics driven engagement
US8805941B2 (en) 2012-03-06 2014-08-12 Liveperson, Inc. Occasionally-connected computing interface
US20130246143A1 (en) * 2012-03-14 2013-09-19 Wizhunt Inc. Competitive on-line marketplace
US8938520B2 (en) * 2012-04-03 2015-01-20 Salesforce.Com, Inc. Methods and systems for smart adapters in a social media content analytics environment
US9563336B2 (en) 2012-04-26 2017-02-07 Liveperson, Inc. Dynamic user interface customization
US9672196B2 (en) 2012-05-15 2017-06-06 Liveperson, Inc. Methods and systems for presenting specialized content using campaign metrics
US10540693B1 (en) 2012-08-20 2020-01-21 Amazon Technologies, Inc. Advertisements responsive to coupon states
US8880495B2 (en) * 2012-10-16 2014-11-04 Michael J. Andri Search query expansion and group search
US9430571B1 (en) 2012-10-24 2016-08-30 Google Inc. Generating travel queries in response to free text queries
US9836795B2 (en) * 2012-11-08 2017-12-05 Hartford Fire Insurance Company Computerized system and method for pre-filling of insurance data using third party sources
US9501799B2 (en) 2012-11-08 2016-11-22 Hartford Fire Insurance Company System and method for determination of insurance classification of entities
US10192238B2 (en) 2012-12-21 2019-01-29 Walmart Apollo, Llc Real-time bidding and advertising content generation
US9760959B2 (en) * 2013-05-09 2017-09-12 Reservation Counter, Llc Systems and methods for minimizing travel costs for multi-night stays
US10909475B2 (en) * 2013-05-09 2021-02-02 TravelPass, Group, LLC Systems and methods for minimizing travel costs for multi-night stays
US9870349B2 (en) 2013-09-20 2018-01-16 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
WO2015042681A1 (en) 2013-09-24 2015-04-02 Netsweeper (Barbados) Inc. Network policy service for dynamic media
CN104915852A (en) * 2014-03-14 2015-09-16 中国移动通信集团广东有限公司 Service promotion page realization method and system
US11386442B2 (en) 2014-03-31 2022-07-12 Liveperson, Inc. Online behavioral predictor
US9836765B2 (en) 2014-05-19 2017-12-05 Kibo Software, Inc. System and method for context-aware recommendation through user activity change detection
US10019743B1 (en) 2014-09-19 2018-07-10 Altisource S.á r.l. Methods and systems for auto expanding vendor selection
WO2016103265A1 (en) * 2014-12-26 2016-06-30 Splitty Travel Ltd. System and method for optimizing utilization of a population of underutilized physical facilities such as tourist facilities
US9811598B2 (en) * 2014-12-31 2017-11-07 Ebay Inc. Endless search result page
US10282694B2 (en) * 2015-02-18 2019-05-07 Cargo Chief Acquisition Inc. Partial load shipment consolidation and scheduling
US9082144B2 (en) 2015-02-18 2015-07-14 Cargo Chief Transportation service matching with arrival estimation adjusted for external factors
US9691091B2 (en) 2015-02-18 2017-06-27 Cargo Chief Transportation service matching with location tracking and arrival estimation
US10074065B2 (en) 2015-02-18 2018-09-11 Cargo Chief Aquisition Inc. Obtaining loads for next leg or backhaul
US10142908B2 (en) 2015-06-02 2018-11-27 Liveperson, Inc. Dynamic communication routing based on consistency weighting and routing rules
US11070608B2 (en) * 2015-06-17 2021-07-20 Fastly, Inc. Expedited sub-resource loading
IL256718B2 (en) 2015-07-26 2024-02-01 Holisto Ltd Split Vacation Deal Generating Server And Efficient Split Deal Generating Methods
US10089654B1 (en) 2015-09-24 2018-10-02 Amazon Technologies, Inc. Detecting expired content within slots in a user interface
US20170098287A1 (en) * 2015-09-25 2017-04-06 Avaea, Inc. Using dual customer identities for airlines
US10783460B1 (en) * 2015-12-15 2020-09-22 Amazon Technologies, Inc. Computer generation of itineraries
US10534828B2 (en) * 2016-08-12 2020-01-14 Kiddy Up LLC System and method for collection and storage of community information
CN116528220A (en) 2016-08-14 2023-08-01 利维帕尔森有限公司 Method and system for real-time remote control of mobile applications
US10217144B1 (en) 2016-11-01 2019-02-26 Bootler, LLC Methods, systems and program products for aggregating and presenting service data from multiple sources over a network
US10445683B1 (en) 2016-11-01 2019-10-15 Bootler, LLC Methods, systems and program products for aggregating and presenting service data from multiple sources over a network
US11030261B1 (en) * 2020-08-06 2021-06-08 Coupang Corp. Computerized systems and methods for managing and monitoring services and modules on an online platform
US11507060B2 (en) 2020-12-22 2022-11-22 Paperless Parts, Inc. Systems and methods for selecting processes to manufacture an object
US20230017717A1 (en) * 2021-07-19 2023-01-19 Amadeus S.A.S. Decentralized content distribution in a computing system
WO2023222899A1 (en) * 2022-05-20 2023-11-23 Amadeus S.A.S. Predictive data source selection for request handling systems
EP4280084A1 (en) * 2022-05-20 2023-11-22 Amadeus S.A.S. Predictive data source selection for request handling systems
DE202023105431U1 (en) 2023-09-18 2024-01-18 Patev Holding Gmbh Information processing device

Citations (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506984A (en) * 1993-06-30 1996-04-09 Digital Equipment Corporation Method and system for data retrieval in a distributed system using linked location references on a plurality of nodes
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
US5732398A (en) * 1995-11-09 1998-03-24 Keyosk Corp. Self-service system for selling travel-related services or products
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5855015A (en) * 1995-03-20 1998-12-29 Interval Research Corporation System and method for retrieval of hyperlinked information resources
US5864863A (en) * 1996-08-09 1999-01-26 Digital Equipment Corporation Method for parsing, indexing and searching world-wide-web pages
US5953716A (en) * 1996-05-30 1999-09-14 Massachusetts Inst Technology Querying heterogeneous data sources distributed over a network using context interchange
US5974409A (en) * 1995-08-23 1999-10-26 Microsoft Corporation System and method for locating information in an on-line network
US5983267A (en) * 1997-09-23 1999-11-09 Information Architects Corporation System for indexing and displaying requested data having heterogeneous content and representation
US6006218A (en) * 1997-02-28 1999-12-21 Microsoft Methods and apparatus for retrieving and/or processing retrieved information as a function of a user's estimated knowledge
US6006222A (en) * 1997-04-25 1999-12-21 Culliss; Gary Method for organizing information
US6038668A (en) * 1997-09-08 2000-03-14 Science Applications International Corporation System, method, and medium for retrieving, organizing, and utilizing networked data
US6041326A (en) * 1997-11-14 2000-03-21 International Business Machines Corporation Method and system in a computer network for an intelligent search engine
US6058417A (en) * 1998-10-23 2000-05-02 Ebay Inc. Information presentation and management in an online trading environment
US6078866A (en) * 1998-09-14 2000-06-20 Searchup, Inc. Internet site searching and listing service based on monetary ranking of site listings
US6108686A (en) * 1998-03-02 2000-08-22 Williams, Jr.; Henry R. Agent-based on-line information retrieval and viewing system
US6119101A (en) * 1996-01-17 2000-09-12 Personal Agents, Inc. Intelligent agents for electronic commerce
US6175830B1 (en) * 1999-05-20 2001-01-16 Evresearch, Ltd. Information management, retrieval and display system and associated method
US6178419B1 (en) * 1996-07-31 2001-01-23 British Telecommunications Plc Data access system
US6189002B1 (en) * 1998-12-14 2001-02-13 Dolphin Search Process and system for retrieval of documents using context-relevant semantic profiles
US6189003B1 (en) * 1998-10-23 2001-02-13 Wynwyn.Com Inc. Online business directory with predefined search template for facilitating the matching of buyers to qualified sellers
US6199067B1 (en) * 1999-01-20 2001-03-06 Mightiest Logicon Unisearch, Inc. System and method for generating personalized user profiles and for utilizing the generated user profiles to perform adaptive internet searches
US6199077B1 (en) * 1998-12-08 2001-03-06 Yodlee.Com, Inc. Server-side web summary generation and presentation
US6209007B1 (en) * 1997-11-26 2001-03-27 International Business Machines Corporation Web internet screen customizing system
US6226645B1 (en) * 1998-10-22 2001-05-01 Soft Camp., Ltd. Construction of conceptional drawings utilizing hyper link information of web document and internet searching method through it
US6233571B1 (en) * 1993-06-14 2001-05-15 Daniel Egger Method and apparatus for indexing, searching and displaying data
US6233584B1 (en) * 1997-09-09 2001-05-15 International Business Machines Corporation Technique for providing a universal query for multiple different databases
US6360205B1 (en) * 1998-10-30 2002-03-19 Trip.Com, Inc. Obtaining and utilizing commercial information
US6442526B1 (en) * 1995-09-06 2002-08-27 The Sabre Group, Inc. System for corporate travel planning and management

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7050986B1 (en) * 1995-09-06 2006-05-23 The Sabre Group, Inc. System for corporate traveler planning and travel management
US5850433A (en) * 1996-05-01 1998-12-15 Sprint Communication Co. L.P. System and method for providing an on-line directory service
GB2326492B (en) * 1997-06-20 2002-03-20 Ibm Apparatus, method and computer program for providing arbitrary locking modes for controlling concurrent access to server resources
US5995102A (en) * 1997-06-25 1999-11-30 Comet Systems, Inc. Server system and method for modifying a cursor image
US6052563A (en) * 1997-12-10 2000-04-18 Motorola Communication device controlled by appointment information stored therein, and method therefor
US6297819B1 (en) * 1998-11-16 2001-10-02 Essential Surfing Gear, Inc. Parallel web sites
US20010020242A1 (en) 1998-11-16 2001-09-06 Amit Gupta Method and apparatus for processing client information
US6272472B1 (en) * 1998-12-29 2001-08-07 Intel Corporation Dynamic linking of supplier web sites to reseller web sites
JP2000242392A (en) * 1999-02-12 2000-09-08 Dbm Korea:Kk Computer system for dynamic information display and method thereof
US6292796B1 (en) * 1999-02-23 2001-09-18 Clinical Focus, Inc. Method and apparatus for improving access to literature
US20020057285A1 (en) * 2000-08-04 2002-05-16 Nicholas James J. Non-intrusive interactive notification system and method
US6928615B1 (en) * 1999-07-07 2005-08-09 Netzero, Inc. Independent internet client object with ad display capabilities
US6697824B1 (en) * 1999-08-31 2004-02-24 Accenture Llp Relationship management in an E-commerce application framework
US6856967B1 (en) * 1999-10-21 2005-02-15 Mercexchange, Llc Generating and navigating streaming dynamic pricing information
US6801226B1 (en) * 1999-11-01 2004-10-05 Ita Software, Inc. Graphical user interface for travel planning system
US6549941B1 (en) * 1999-11-22 2003-04-15 Alexa Internet Software system and methods for resubmitting form data to related web sites
US6480837B1 (en) * 1999-12-16 2002-11-12 International Business Machines Corporation Method, system, and program for ordering search results using a popularity weighting
US6868525B1 (en) * 2000-02-01 2005-03-15 Alberti Anemometer Llc Computer graphic display visualization system and method
US20010049654A1 (en) * 2000-02-17 2001-12-06 Mark Cecchetti System and method for tracking work flow actvities
US6571256B1 (en) * 2000-02-18 2003-05-27 Thekidsconnection.Com, Inc. Method and apparatus for providing pre-screened content
US6926615B1 (en) * 2004-05-03 2005-08-09 Karsten Manufacturing Corporation Golf putter head with increased dimensions and increased moment of inertia

Patent Citations (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233571B1 (en) * 1993-06-14 2001-05-15 Daniel Egger Method and apparatus for indexing, searching and displaying data
US5506984A (en) * 1993-06-30 1996-04-09 Digital Equipment Corporation Method and system for data retrieval in a distributed system using linked location references on a plurality of nodes
US5855015A (en) * 1995-03-20 1998-12-29 Interval Research Corporation System and method for retrieval of hyperlinked information resources
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5974409A (en) * 1995-08-23 1999-10-26 Microsoft Corporation System and method for locating information in an on-line network
US6442526B1 (en) * 1995-09-06 2002-08-27 The Sabre Group, Inc. System for corporate travel planning and management
US5732398A (en) * 1995-11-09 1998-03-24 Keyosk Corp. Self-service system for selling travel-related services or products
US6119101A (en) * 1996-01-17 2000-09-12 Personal Agents, Inc. Intelligent agents for electronic commerce
US5953716A (en) * 1996-05-30 1999-09-14 Massachusetts Inst Technology Querying heterogeneous data sources distributed over a network using context interchange
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
US6178419B1 (en) * 1996-07-31 2001-01-23 British Telecommunications Plc Data access system
US5864863A (en) * 1996-08-09 1999-01-26 Digital Equipment Corporation Method for parsing, indexing and searching world-wide-web pages
US6006218A (en) * 1997-02-28 1999-12-21 Microsoft Methods and apparatus for retrieving and/or processing retrieved information as a function of a user's estimated knowledge
US6006222A (en) * 1997-04-25 1999-12-21 Culliss; Gary Method for organizing information
US6038668A (en) * 1997-09-08 2000-03-14 Science Applications International Corporation System, method, and medium for retrieving, organizing, and utilizing networked data
US6233584B1 (en) * 1997-09-09 2001-05-15 International Business Machines Corporation Technique for providing a universal query for multiple different databases
US5983267A (en) * 1997-09-23 1999-11-09 Information Architects Corporation System for indexing and displaying requested data having heterogeneous content and representation
US6041326A (en) * 1997-11-14 2000-03-21 International Business Machines Corporation Method and system in a computer network for an intelligent search engine
US6209007B1 (en) * 1997-11-26 2001-03-27 International Business Machines Corporation Web internet screen customizing system
US6108686A (en) * 1998-03-02 2000-08-22 Williams, Jr.; Henry R. Agent-based on-line information retrieval and viewing system
US6078866A (en) * 1998-09-14 2000-06-20 Searchup, Inc. Internet site searching and listing service based on monetary ranking of site listings
US6226645B1 (en) * 1998-10-22 2001-05-01 Soft Camp., Ltd. Construction of conceptional drawings utilizing hyper link information of web document and internet searching method through it
US6189003B1 (en) * 1998-10-23 2001-02-13 Wynwyn.Com Inc. Online business directory with predefined search template for facilitating the matching of buyers to qualified sellers
US6058417A (en) * 1998-10-23 2000-05-02 Ebay Inc. Information presentation and management in an online trading environment
US6360205B1 (en) * 1998-10-30 2002-03-19 Trip.Com, Inc. Obtaining and utilizing commercial information
US6199077B1 (en) * 1998-12-08 2001-03-06 Yodlee.Com, Inc. Server-side web summary generation and presentation
US6189002B1 (en) * 1998-12-14 2001-02-13 Dolphin Search Process and system for retrieval of documents using context-relevant semantic profiles
US6199067B1 (en) * 1999-01-20 2001-03-06 Mightiest Logicon Unisearch, Inc. System and method for generating personalized user profiles and for utilizing the generated user profiles to perform adaptive internet searches
US6175830B1 (en) * 1999-05-20 2001-01-16 Evresearch, Ltd. Information management, retrieval and display system and associated method

Cited By (522)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937409B2 (en) 1997-11-14 2011-05-03 Adobe Systems Incorporated Retrieving documents transitively linked to an initial document
US20080252912A1 (en) * 1997-11-14 2008-10-16 Adobe Systems Incorporated Retrieving Documents Transitively Linked To An Initial Document
US8005843B2 (en) 1997-11-14 2011-08-23 Adobe Systems Incorporated Retrieving documents transitively linked to an initial document
US20080222091A1 (en) * 1997-11-14 2008-09-11 Adobe Systems Incorporated Retrieving Documents Transitively Linked to an Initial Document
US7401067B2 (en) 1997-11-14 2008-07-15 Adobe Systems Incorporated Retrieving documents transitively linked to an initial document
US8156246B2 (en) 1998-12-08 2012-04-10 Nomadix, Inc. Systems and methods for providing content and services on a network system
US10341243B2 (en) 1998-12-08 2019-07-02 Nomadix, Inc. Systems and methods for providing content and services on a network system
US9160672B2 (en) 1998-12-08 2015-10-13 Nomadix, Inc. Systems and methods for controlling user perceived connection speed
US8364806B2 (en) 1998-12-08 2013-01-29 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8370477B2 (en) 1998-12-08 2013-02-05 Nomadix, Inc. Systems and methods for providing content and services on a network system
US9548935B2 (en) 1998-12-08 2017-01-17 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8266266B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing dynamic network authorization, authentication and accounting
US8244886B2 (en) * 1998-12-08 2012-08-14 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8266269B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8713641B1 (en) 1998-12-08 2014-04-29 Nomadix, Inc. Systems and methods for authorizing, authenticating and accounting users having transparent computer access to a network using a gateway device
US8788690B2 (en) 1998-12-08 2014-07-22 Nomadix, Inc. Systems and methods for providing content and services on a network system
US10110436B2 (en) 1998-12-08 2018-10-23 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8606917B2 (en) 1998-12-08 2013-12-10 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8613053B2 (en) 1998-12-08 2013-12-17 Nomadix, Inc. System and method for authorizing a portable communication device
US8725888B2 (en) 1998-12-08 2014-05-13 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8725899B2 (en) 1998-12-08 2014-05-13 Nomadix, Inc. Systems and methods for providing content and services on a network system
US8612342B2 (en) 1999-04-26 2013-12-17 Checkfree Corporation Notification of the availability of electronic bills
US7792749B2 (en) 1999-04-26 2010-09-07 Checkfree Corporation Dynamic biller list generation
US8516083B2 (en) 1999-10-22 2013-08-20 Nomadix, Inc. Systems and methods of communicating using XML
US8190708B1 (en) 1999-10-22 2012-05-29 Nomadix, Inc. Gateway device having an XML interface and associated method
US20110191293A1 (en) * 2000-05-04 2011-08-04 International Business Machines Corporation Real time backup system for computer users
US10275319B2 (en) 2000-05-04 2019-04-30 International Business Machines Corporation Real time backup system for computer users
US20130238560A1 (en) * 2000-05-04 2013-09-12 International Business Machines Corporation Real time backup system for computer users
US9292543B2 (en) * 2000-05-04 2016-03-22 International Business Machines Corporation Real time backup system for computer users
US7991739B2 (en) * 2000-05-04 2011-08-02 International Business Machines Corporation Real time backup system for computer users
US20080228678A1 (en) * 2000-05-04 2008-09-18 International Business Machines Corporation Real time backup system for computer users
US8423510B2 (en) * 2000-05-04 2013-04-16 International Business Machines Corporation Real time backup system for computer users
US20010039547A1 (en) * 2000-05-08 2001-11-08 Black Jonathan K. Internet web-based technology for storing, archiving, and updating key personal identity items
US20060080440A1 (en) * 2000-05-12 2006-04-13 Microsoft Corporation Authentication and authorization pipeline architecture for use in a server
US7266605B2 (en) 2000-05-12 2007-09-04 Microsoft Corporation Authentication and authorization pipeline architecture for use in a server
US6985946B1 (en) 2000-05-12 2006-01-10 Microsoft Corporation Authentication and authorization pipeline architecture for use in a web server
US7013340B1 (en) 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US8689238B2 (en) 2000-05-18 2014-04-01 Carhamm Ltd., Llc Techniques for displaying impressions in documents delivered over a computer network
US6961750B1 (en) 2000-05-18 2005-11-01 Microsoft Corp. Server-side control objects for processing client-side user interface elements
US6792607B1 (en) 2000-05-18 2004-09-14 Microsoft Corporation Databinding using server-side control objects
US6757900B1 (en) 2000-05-18 2004-06-29 Microsoft Corporation State management of server-side control objects
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US20020091550A1 (en) * 2000-06-29 2002-07-11 White Mitchell Franklin System and method for real-time rating, underwriting and policy issuance
US20110119120A1 (en) * 2000-07-07 2011-05-19 Kern K Jon Loyalty reward program for reducing the balance of a loan obligation
US7165116B2 (en) * 2000-07-10 2007-01-16 Netli, Inc. Method for network discovery using name servers
US20020059622A1 (en) * 2000-07-10 2002-05-16 Grove Adam J. Method for network discovery using name servers
US20020087620A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing search capabilties on a wireless device
US7616971B2 (en) 2000-12-29 2009-11-10 International Business Machines Corporation System and method for providing access to forms for displaying information on a wireless access device
US6983310B2 (en) 2000-12-29 2006-01-03 International Business Machines Corporation System and method for providing search capabilties on a wireless device
US20020086661A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing access to forms for displaying information on a wireless access device
US20020087628A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing wireless device access to e-mail applications
US7506030B2 (en) 2000-12-29 2009-03-17 International Business Machines Corporation System and method for providing wireless device access to e-mail applications
US20020087627A1 (en) * 2000-12-29 2002-07-04 Andrew Rouse System and method for providing search capabilities and storing functions on a wireless access device
US8112544B2 (en) 2000-12-29 2012-02-07 International Business Machines Corporation System and method for providing customizable options on a wireless device
US7142883B2 (en) * 2000-12-29 2006-11-28 International Business Machines Corporation System and method for providing search capabilities and storing functions on a wireless access device
US20050159136A1 (en) * 2000-12-29 2005-07-21 Andrew Rouse System and method for providing wireless device access
US20020103908A1 (en) * 2000-12-29 2002-08-01 Andrew Rouse System and method for providing customizable options on a wireless device
US8209246B2 (en) 2001-03-20 2012-06-26 Goldman, Sachs & Co. Proprietary risk management clearinghouse
US8140415B2 (en) 2001-03-20 2012-03-20 Goldman Sachs & Co. Automated global risk management
US8121937B2 (en) 2001-03-20 2012-02-21 Goldman Sachs & Co. Gaming industry risk management clearinghouse
US7904361B2 (en) 2001-03-20 2011-03-08 Goldman Sachs & Co. Risk management customer registry
US7548883B2 (en) 2001-03-20 2009-06-16 Goldman Sachs & Co Construction industry risk management clearinghouse
US7899722B1 (en) 2001-03-20 2011-03-01 Goldman Sachs & Co. Correspondent bank registry
US7958027B2 (en) 2001-03-20 2011-06-07 Goldman, Sachs & Co. Systems and methods for managing risk associated with a geo-political area
US8843411B2 (en) 2001-03-20 2014-09-23 Goldman, Sachs & Co. Gaming industry risk management clearinghouse
US8069105B2 (en) 2001-03-20 2011-11-29 Goldman Sachs & Co. Hedge fund risk management
US8285615B2 (en) 2001-03-20 2012-10-09 Goldman, Sachs & Co. Construction industry risk management clearinghouse
US20020152205A1 (en) * 2001-04-11 2002-10-17 Henrik Hodam Method of operating an automatic sector information system
US6915454B1 (en) 2001-06-12 2005-07-05 Microsoft Corporation Web controls validation
US20050144622A1 (en) * 2001-06-29 2005-06-30 Microsoft Corporation XML serialization and deserialization
US7640495B2 (en) 2001-06-29 2009-12-29 Microsoft Corporation XML serialization and deserialization
US6898604B1 (en) 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US7594001B1 (en) 2001-07-06 2009-09-22 Microsoft Corporation Partial page output caching
US20030085917A1 (en) * 2001-07-10 2003-05-08 Woo-Seok Chang Method of providing user interface via web
US20030025728A1 (en) * 2001-07-10 2003-02-06 Ebbo David S. User control objects for providing server-side code generation from a user-defined dynamic web page content file
US7120897B2 (en) 2001-07-10 2006-10-10 Microsoft Corporation User control objects for providing server-side code generation from a user-defined dynamic web page content file
US20030069906A1 (en) * 2001-07-27 2003-04-10 Cichowlas Bruce William Method and system for multi-page web applications with central control
US20030074432A1 (en) * 2001-09-26 2003-04-17 Mazzitelli John Joseph State data management method and system
US6975996B2 (en) 2001-10-09 2005-12-13 Goldman, Sachs & Co. Electronic subpoena service
US8255485B2 (en) * 2001-11-21 2012-08-28 Blue Titan Software, Inc. Web services-based computing resource lifecycle management
US20110196940A1 (en) * 2001-11-21 2011-08-11 Soa Software, Inc. Web Services-Based Computing Resource Lifecycle Management
US20030097464A1 (en) * 2001-11-21 2003-05-22 Frank Martinez Distributed web services network architecture
US7853643B1 (en) * 2001-11-21 2010-12-14 Blue Titan Software, Inc. Web services-based computing resource lifecycle management
US20080086573A1 (en) * 2001-11-21 2008-04-10 Frank Martinez Distributed Web Services Network Architecture
US7296061B2 (en) * 2001-11-21 2007-11-13 Blue Titan Software, Inc. Distributed web services network architecture
US7529805B2 (en) 2001-11-21 2009-05-05 Blue Titan Software, Inc. Distributed web services network architecture
US6665634B2 (en) * 2001-12-21 2003-12-16 Hewlett-Packard Development Company, L.P. Test system for testing dynamic information returned by a web server
US20030233569A1 (en) * 2002-01-22 2003-12-18 Geib Christopher W. Recognition plan/goal abandonment
US20030167223A1 (en) * 2002-03-01 2003-09-04 Financial Fusion, Inc., A Wholly-Owned Subsidiary Of Sybase, Inc. System with methodology for improved transmission of financial information
US7103642B1 (en) * 2002-04-30 2006-09-05 Sprint Communications Company L.P. System and method for personalizing a home page
US20030208603A1 (en) * 2002-05-02 2003-11-06 Eyal Manor System and method for initiating communication
US20060259548A1 (en) * 2002-05-29 2006-11-16 International Business Machines Corporation Web and lotus notes adapter layers
US7856484B2 (en) * 2002-05-29 2010-12-21 International Business Machines Corporation Web and lotus notes adapter layers
US7685287B2 (en) * 2002-05-30 2010-03-23 Microsoft Corporation Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
US20030225889A1 (en) * 2002-05-30 2003-12-04 Moutafov Kamen K. Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports
WO2003105054A1 (en) * 2002-06-07 2003-12-18 Goldman, Sachs & Co. Travel related risk management clearinghouse
US7668816B2 (en) * 2002-06-11 2010-02-23 Microsoft Corporation Dynamically updated quick searches and strategies
US20060129541A1 (en) * 2002-06-11 2006-06-15 Microsoft Corporation Dynamically updated quick searches and strategies
US20060053424A1 (en) * 2002-06-28 2006-03-09 Tommi Koistinen Load balancing devices and method therefor
US7363515B2 (en) * 2002-08-09 2008-04-22 Bae Systems Advanced Information Technologies Inc. Control systems and methods using a partially-observable markov decision process (PO-MDP)
US20040064735A1 (en) * 2002-08-09 2004-04-01 Frazier Tiffany M. Control systems and methods using a partially-observable markov decision process (PO-MDP)
US20040133509A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal A. Technique for making payments for a non-subscriber payor
US20040133515A1 (en) * 2002-11-01 2004-07-08 Mccoy Randal A. Distributed matching of consumers with billers having bills available for electronic presentment
US7729996B2 (en) 2002-11-01 2010-06-01 Checkfree Corporation Reuse of an EBP account through alternate authentication
US20040139009A1 (en) * 2002-11-01 2004-07-15 Kozee Casey W. Technique for identifying probable billers of a consumer
US8073773B2 (en) 2002-11-01 2011-12-06 Checkfree Corporation Technique for identifying probable billers of a consumer
US7395243B1 (en) 2002-11-01 2008-07-01 Checkfree Corporation Technique for presenting matched billers to a consumer
US20040088251A1 (en) * 2002-11-01 2004-05-06 Peter Moenickheim Easy establishment of biller or payees of a payor
US20100179947A1 (en) * 2002-11-05 2010-07-15 Martin Anthony G Updating Content of Presentation Vehicle in a Computer Network
US8316003B2 (en) 2002-11-05 2012-11-20 Carhamm Ltd., Llc Updating content of presentation vehicle in a computer network
US20040138998A1 (en) * 2002-11-14 2004-07-15 David Lawrence Independent research consensus earnings estimates and methods of determining such
US8364580B2 (en) 2002-11-14 2013-01-29 Goldman, Sachs & Co. Independent research consensus earnings estimates and methods of determining such
US7702574B2 (en) 2002-11-14 2010-04-20 Goldman Sachs & Co. Independent research consensus earnings estimates and methods of determining such
US7421738B2 (en) * 2002-11-25 2008-09-02 Honeywell International Inc. Skeptical system
US20040103296A1 (en) * 2002-11-25 2004-05-27 Harp Steven A. Skeptical system
US9092414B2 (en) 2002-11-27 2015-07-28 Adobe Systems Incorporated Using document templates to assemble a collection of documents
US7356768B1 (en) * 2002-11-27 2008-04-08 Adobe Systems Incorporated Using document templates to assemble a collection of documents
US9842174B2 (en) 2002-11-27 2017-12-12 Adobe Systems Incorporated Using document templates to assemble a collection of documents
US20050251469A1 (en) * 2003-01-27 2005-11-10 Gopal Nandakumar Network topology for processing consumer financial transactions
KR100877942B1 (en) * 2003-02-26 2009-01-12 인터내셔널 비지네스 머신즈 코포레이션 Dynamic data-driven application integration adapters
US7895589B2 (en) 2003-02-26 2011-02-22 International Business Machines Corporation Dynamic data-driven application integration adapters
WO2004077201A2 (en) * 2003-02-26 2004-09-10 International Business Machines Corporation Dynamic data-driven application integration adapters
WO2004077201A3 (en) * 2003-02-26 2005-06-23 Ibm Dynamic data-driven application integration adapters
US20040260806A1 (en) * 2003-06-20 2004-12-23 Eric Martin System supporting communication between a web enabled application and another application
US7895529B1 (en) * 2003-09-10 2011-02-22 Microsoft Corporation System and method for processing featured content
US20050060296A1 (en) * 2003-09-15 2005-03-17 Whitby David Scott Search system and method for simultaneous querying and notification of multiple web sales sites
US11200550B1 (en) 2003-10-30 2021-12-14 United Services Automobile Association (Usaa) Wireless electronic check deposit scanning and cashing machine with web-based online account cash management computer application system
US10521781B1 (en) 2003-10-30 2019-12-31 United Services Automobile Association (Usaa) Wireless electronic check deposit scanning and cashing machine with webbased online account cash management computer application system
US20050114263A1 (en) * 2003-11-20 2005-05-26 Fujitsu Limited Automatic transaction apparatus and automatic transaction system
US9098962B2 (en) * 2003-11-20 2015-08-04 Fujitsu Limited Automatic transaction apparatus and automatic transaction system
US20050114206A1 (en) * 2003-11-25 2005-05-26 Dominic Bennett Database structure and front end
US8170912B2 (en) 2003-11-25 2012-05-01 Carhamm Ltd., Llc Database structure and front end
US20050165789A1 (en) * 2003-12-22 2005-07-28 Minton Steven N. Client-centric information extraction system for an information network
US8572100B2 (en) * 2004-01-19 2013-10-29 Nigel Hamilton Method and system for recording search trails across one or more search engines in a communications network
US20090030876A1 (en) * 2004-01-19 2009-01-29 Nigel Hamilton Method and system for recording search trails across one or more search engines in a communications network
US7890604B2 (en) 2004-05-07 2011-02-15 Microsoft Corproation Client-side callbacks to server events
US8065600B2 (en) 2004-05-14 2011-11-22 Microsoft Corporation Systems and methods for defining web content navigation
US9026578B2 (en) 2004-05-14 2015-05-05 Microsoft Corporation Systems and methods for persisting data between web pages
US8156448B2 (en) 2004-05-28 2012-04-10 Microsoft Corporation Site navigation and site navigation data source
US8832132B1 (en) 2004-06-22 2014-09-09 Google Inc. Personalizing search queries based on user membership in social network communities
US9489462B1 (en) 2004-06-22 2016-11-08 Google Inc. Personalizing search queries based on user membership in social network communities
US10706115B1 (en) 2004-06-22 2020-07-07 Google Llc Personalizing search queries based on user membership in social network communities
US9971839B1 (en) 2004-06-22 2018-05-15 Google Llc Personalizing search queries based on user membership in social network communities
US9063985B2 (en) 2004-07-02 2015-06-23 Goldman, Sachs & Co. Method, system, apparatus, program code and means for determining a redundancy of information
US8996481B2 (en) 2004-07-02 2015-03-31 Goldman, Sach & Co. Method, system, apparatus, program code and means for identifying and extracting information
US8762191B2 (en) 2004-07-02 2014-06-24 Goldman, Sachs & Co. Systems, methods, apparatus, and schema for storing, managing and retrieving information
US9058581B2 (en) 2004-07-02 2015-06-16 Goldman, Sachs & Co. Systems and methods for managing information associated with legal, compliance and regulatory risk
US20060080383A1 (en) * 2004-07-19 2006-04-13 International Business Machines Corporation Time-out management for session dependent applications
US9654544B2 (en) * 2004-07-19 2017-05-16 International Business Machines Corporation Time-out management for session dependent applications
US8255413B2 (en) 2004-08-19 2012-08-28 Carhamm Ltd., Llc Method and apparatus for responding to request for information-personalization
US8464092B1 (en) * 2004-09-30 2013-06-11 Symantec Operating Corporation System and method for monitoring an application or service group within a cluster as a resource of another cluster
US8185776B1 (en) * 2004-09-30 2012-05-22 Symantec Operating Corporation System and method for monitoring an application or service group within a cluster as a resource of another cluster
US20150199621A1 (en) * 2004-12-15 2015-07-16 Kayak Software Corporation Profitability based ranking of search results for lodging reservations
US8095536B1 (en) * 2004-12-15 2012-01-10 Kayak Software Corporation Profitability based ranking of search results for lodging reservations
US20120179673A1 (en) * 2004-12-15 2012-07-12 Kayak Software Corporation Profitability based ranking of search results for lodging reservations
US7668809B1 (en) * 2004-12-15 2010-02-23 Kayak Software Corporation Method and apparatus for dynamic information connection search engine
US20130275425A1 (en) * 2004-12-15 2013-10-17 Kayak Software Corporation Profitability based ranking of seach results for lodging reservations
US9430744B2 (en) * 2004-12-15 2016-08-30 Kayak Software Corporation Profitability based ranking of search results for lodging reservations
US8078602B2 (en) 2004-12-17 2011-12-13 Claria Innovations, Llc Search engine for a computer network
US10033716B2 (en) 2004-12-20 2018-07-24 Gula Consulting Limited Liability Company Method and device for publishing cross-network user behavioral data
US9495446B2 (en) * 2004-12-20 2016-11-15 Gula Consulting Limited Liability Company Method and device for publishing cross-network user behavioral data
US11546313B2 (en) 2004-12-20 2023-01-03 Gula Consulting Limited Liability Company Method and device for publishing cross-network user behavioral data
US10402457B1 (en) 2004-12-31 2019-09-03 Google Llc Methods and systems for correlating connections between users and links between articles
US8060405B1 (en) 2004-12-31 2011-11-15 Google Inc. Methods and systems for correlating connections between users and links between articles
US8521591B1 (en) 2004-12-31 2013-08-27 Google Inc. Methods and systems for correlating connections between users and links between articles
US9626079B2 (en) 2005-02-15 2017-04-18 Microsoft Technology Licensing, Llc System and method for browsing tabbed-heterogeneous windows
US7979457B1 (en) * 2005-03-02 2011-07-12 Kayak Software Corporation Efficient search of supplier servers based on stored search results
US20160260182A1 (en) * 2005-03-02 2016-09-08 Kayak Software Corporation Use of stored search results by a travel search system
US9727649B2 (en) * 2005-03-02 2017-08-08 Kayak Software Corporation Use of stored search results by a travel search system
US9342837B2 (en) * 2005-03-02 2016-05-17 Kayak Software Corporation Use of stored search results by a travel search system
US20150073868A1 (en) * 2005-03-02 2015-03-12 Kayak Software Corporation Use of stored search results by a travel search system
US8898184B1 (en) * 2005-03-02 2014-11-25 Kayak Software Corporation Use of stored search results by a travel search system
US8645941B2 (en) 2005-03-07 2014-02-04 Carhamm Ltd., Llc Method for attributing and allocating revenue related to embedded software
US8073866B2 (en) 2005-03-17 2011-12-06 Claria Innovations, Llc Method for providing content to an internet user based on the user's demonstrated content preferences
US7895308B2 (en) * 2005-05-11 2011-02-22 Tindall Steven J Messaging system configurator
US8086697B2 (en) 2005-06-28 2011-12-27 Claria Innovations, Llc Techniques for displaying impressions in documents delivered over a computer network
US20070011020A1 (en) * 2005-07-05 2007-01-11 Martin Anthony G Categorization of locations and documents in a computer network
US20070214034A1 (en) * 2005-08-30 2007-09-13 Michael Ihle Systems and methods for managing and regulating object allocations
US20090125340A1 (en) * 2005-10-06 2009-05-14 Peter John Gosney Booking a Chauffeured Vehicle
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US20080306988A1 (en) * 2005-10-17 2008-12-11 International Business Machines Corporation Optimization-Based Visual Context Management
US9298855B2 (en) * 2005-10-17 2016-03-29 International Business Machines Corporation Optimization-based visual context management
US10419515B2 (en) 2005-11-15 2019-09-17 Ebay Inc. Method and system to process navigation information
US20070112780A1 (en) * 2005-11-15 2007-05-17 Stone Gregory L Method and system to process navigation information
US11303694B2 (en) 2005-11-15 2022-04-12 Ebay Inc. Method and system to process navigation information
US9311398B2 (en) * 2005-11-15 2016-04-12 Ebay Inc. Method and system to process navigation information
US20070118317A1 (en) * 2005-11-21 2007-05-24 Corredoura Paul L System and method for generating triggers based on predetermined trigger waveform and a measurement signal
US20070150427A1 (en) * 2005-12-22 2007-06-28 Honeywell International Inc. Recognition plan/goal abandonment
US7954152B2 (en) * 2005-12-30 2011-05-31 Microsoft Corporation Session management by analysis of requests and responses
US20070169170A1 (en) * 2005-12-30 2007-07-19 Microsoft Corporation Session Management By Analysis Of Requests And Responses
US20070226164A1 (en) * 2006-03-21 2007-09-27 Honeywell International Inc. Type variables and/or temporal constraints in plan recognition
US20150019678A1 (en) * 2006-03-24 2015-01-15 Blue Coat Systems, Inc. Methods and Systems for Caching Content at Multiple Levels
US20070239688A1 (en) * 2006-04-11 2007-10-11 Clark David K System and method for altering search result sequence based on user preferences
US9760640B2 (en) 2006-04-24 2017-09-12 Yieldbot Inc. Relevancy-based domain classification
US8768954B2 (en) 2006-04-24 2014-07-01 Working Research, Inc. Relevancy-based domain classification
US8069182B2 (en) 2006-04-24 2011-11-29 Working Research, Inc. Relevancy-based domain classification
US20070250468A1 (en) * 2006-04-24 2007-10-25 Captive Traffic, Llc Relevancy-based domain classification
US10042927B2 (en) 2006-04-24 2018-08-07 Yeildbot Inc. Interest keyword identification
US9047234B1 (en) * 2006-06-05 2015-06-02 Thomson Reuters (Markets) Llc Data context passing between non-interfaced application programs in a common framework
US20080065237A1 (en) * 2006-09-10 2008-03-13 Long Wesley V Dynamic HTML based Multi Tabbed Sortable Results
US11182753B1 (en) 2006-10-31 2021-11-23 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US10621559B1 (en) 2006-10-31 2020-04-14 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11023719B1 (en) 2006-10-31 2021-06-01 United Services Automobile Association (Usaa) Digital camera processing system
US7885451B1 (en) 2006-10-31 2011-02-08 United Services Automobile Association (Usaa) Systems and methods for displaying negotiable instruments derived from various sources
US7876949B1 (en) 2006-10-31 2011-01-25 United Services Automobile Association Systems and methods for remote deposit of checks
US8708227B1 (en) 2006-10-31 2014-04-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US10719815B1 (en) 2006-10-31 2020-07-21 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8799147B1 (en) 2006-10-31 2014-08-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instruments with non-payee institutions
US10460295B1 (en) 2006-10-31 2019-10-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11682222B1 (en) 2006-10-31 2023-06-20 United Services Automobile Associates (USAA) Digital camera processing system
US10769598B1 (en) 2006-10-31 2020-09-08 United States Automobile (USAA) Systems and methods for remote deposit of checks
US11682221B1 (en) 2006-10-31 2023-06-20 United Services Automobile Associates (USAA) Digital camera processing system
US11544944B1 (en) 2006-10-31 2023-01-03 United Services Automobile Association (Usaa) Digital camera processing system
US9224136B1 (en) 2006-10-31 2015-12-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US10013605B1 (en) 2006-10-31 2018-07-03 United Services Automobile Association (Usaa) Digital camera processing system
US10013681B1 (en) 2006-10-31 2018-07-03 United Services Automobile Association (Usaa) System and method for mobile check deposit
US11488405B1 (en) 2006-10-31 2022-11-01 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11562332B1 (en) 2006-10-31 2023-01-24 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11625770B1 (en) 2006-10-31 2023-04-11 United Services Automobile Association (Usaa) Digital camera processing system
US11461743B1 (en) 2006-10-31 2022-10-04 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US10482432B1 (en) 2006-10-31 2019-11-19 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US7873200B1 (en) 2006-10-31 2011-01-18 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8392332B1 (en) 2006-10-31 2013-03-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US10402638B1 (en) 2006-10-31 2019-09-03 United Services Automobile Association (Usaa) Digital camera processing system
US8351677B1 (en) 2006-10-31 2013-01-08 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11348075B1 (en) 2006-10-31 2022-05-31 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11875314B1 (en) 2006-10-31 2024-01-16 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11429949B1 (en) 2006-10-31 2022-08-30 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US11538015B1 (en) 2006-10-31 2022-12-27 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8620952B2 (en) 2007-01-03 2013-12-31 Carhamm Ltd., Llc System for database reporting
US20080198761A1 (en) * 2007-02-15 2008-08-21 Microsoft Corporation Decentralized network architecture for travel related services
US10380559B1 (en) 2007-03-15 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for check representment prevention
US8959033B1 (en) 2007-03-15 2015-02-17 United Services Automobile Association (Usaa) Systems and methods for verification of remotely deposited checks
US8316105B2 (en) * 2007-03-22 2012-11-20 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US20080235352A1 (en) * 2007-03-22 2008-09-25 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US8352454B2 (en) * 2007-04-11 2013-01-08 Travelport Development Llc System and method for performing data searches using multiple data search providers
US20080256036A1 (en) * 2007-04-11 2008-10-16 David Alan Falk System and method for performing data searches using multiple data search providers
US8433127B1 (en) 2007-05-10 2013-04-30 United Services Automobile Association (Usaa) Systems and methods for real-time validation of check image quality
US8538124B1 (en) 2007-05-10 2013-09-17 United Services Auto Association (USAA) Systems and methods for real-time validation of check image quality
US8065287B2 (en) * 2007-06-20 2011-11-22 Amadeus S.A.S. Method and system for searching availability of an entity for purchase or reservation
US20080319946A1 (en) * 2007-06-20 2008-12-25 Amadeus S.A.S. Method and system for searching availability of an entity for purchase or reservation
US11328267B1 (en) 2007-09-28 2022-05-10 United Services Automobile Association (Usaa) Systems and methods for digital signature detection
US10713629B1 (en) 2007-09-28 2020-07-14 United Services Automobile Association (Usaa) Systems and methods for digital signature detection
US10354235B1 (en) 2007-09-28 2019-07-16 United Services Automoblie Association (USAA) Systems and methods for digital signature detection
US20160104197A1 (en) * 2007-10-15 2016-04-14 Google Inc. External Referencing By Portable Program Modules
US10373136B1 (en) 2007-10-23 2019-08-06 United Services Automobile Association (Usaa) Image processing
US10810561B1 (en) 2007-10-23 2020-10-20 United Services Automobile Association (Usaa) Image processing
US11392912B1 (en) 2007-10-23 2022-07-19 United Services Automobile Association (Usaa) Image processing
US10915879B1 (en) 2007-10-23 2021-02-09 United Services Automobile Association (Usaa) Image processing
US10460381B1 (en) 2007-10-23 2019-10-29 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US8358826B1 (en) 2007-10-23 2013-01-22 United Services Automobile Association (Usaa) Systems and methods for receiving and orienting an image of one or more checks
US9898778B1 (en) 2007-10-23 2018-02-20 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US9892454B1 (en) 2007-10-23 2018-02-13 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US8046301B1 (en) 2007-10-30 2011-10-25 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996315B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996316B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association Systems and methods to modify a negotiable instrument
US7996314B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8001051B1 (en) 2007-10-30 2011-08-16 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8320657B1 (en) 2007-10-31 2012-11-27 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8290237B1 (en) 2007-10-31 2012-10-16 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US7900822B1 (en) 2007-11-06 2011-03-08 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US7896232B1 (en) 2007-11-06 2011-03-01 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US8464933B1 (en) 2007-11-06 2013-06-18 United Services Automobile Association (Usaa) Systems, methods and apparatus for receiving images of one or more checks
US20090144749A1 (en) * 2007-11-30 2009-06-04 Leviathan Entertainment Alert and Repair System for Data Scraping Routines
US20090158298A1 (en) * 2007-12-12 2009-06-18 Abhishek Saxena Database system and eventing infrastructure
US20090165017A1 (en) * 2007-12-24 2009-06-25 Yahoo! Inc. Stateless proportionally consistent addressing
US11531973B1 (en) 2008-02-07 2022-12-20 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US10839358B1 (en) 2008-02-07 2020-11-17 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US10380562B1 (en) 2008-02-07 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US8611635B1 (en) 2008-06-11 2013-12-17 United Services Automobile Association (Usaa) Duplicate check detection
US8351678B1 (en) 2008-06-11 2013-01-08 United Services Automobile Association (Usaa) Duplicate check detection
US8422758B1 (en) 2008-09-02 2013-04-16 United Services Automobile Association (Usaa) Systems and methods of check re-presentment deterrent
US11216884B1 (en) 2008-09-08 2022-01-04 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US10504185B1 (en) 2008-09-08 2019-12-10 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US11694268B1 (en) 2008-09-08 2023-07-04 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US7885880B1 (en) 2008-09-30 2011-02-08 United Services Automobile Association (Usaa) Atomic deposit transaction
US7974899B1 (en) 2008-09-30 2011-07-05 United Services Automobile Association (Usaa) Atomic deposit transaction
US7962411B1 (en) 2008-09-30 2011-06-14 United Services Automobile Association (Usaa) Atomic deposit transaction
US9311634B1 (en) 2008-09-30 2016-04-12 United Services Automobile Association (Usaa) Systems and methods for automatic bill pay enrollment
US8391599B1 (en) 2008-10-17 2013-03-05 United Services Automobile Association (Usaa) Systems and methods for adaptive binarization of an image
US7970677B1 (en) 2008-10-24 2011-06-28 United Services Automobile Association (Usaa) Systems and methods for financial deposits by electronic message
US7949587B1 (en) 2008-10-24 2011-05-24 United States Automobile Association (USAA) Systems and methods for financial deposits by electronic message
US8452689B1 (en) 2009-02-18 2013-05-28 United Services Automobile Association (Usaa) Systems and methods of check detection
US11062130B1 (en) 2009-02-18 2021-07-13 United Services Automobile Association (Usaa) Systems and methods of check detection
US11749007B1 (en) 2009-02-18 2023-09-05 United Services Automobile Association (Usaa) Systems and methods of check detection
US9946923B1 (en) 2009-02-18 2018-04-17 United Services Automobile Association (Usaa) Systems and methods of check detection
US11062131B1 (en) 2009-02-18 2021-07-13 United Services Automobile Association (Usaa) Systems and methods of check detection
US11721117B1 (en) 2009-03-04 2023-08-08 United Services Automobile Association (Usaa) Systems and methods of check processing with background removal
US10956728B1 (en) 2009-03-04 2021-03-23 United Services Automobile Association (Usaa) Systems and methods of check processing with background removal
US8542921B1 (en) 2009-07-27 2013-09-24 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instrument using brightness correction
US10896408B1 (en) 2009-08-19 2021-01-19 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US11222315B1 (en) 2009-08-19 2022-01-11 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US9779392B1 (en) 2009-08-19 2017-10-03 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US11341465B1 (en) 2009-08-21 2022-05-24 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US11321678B1 (en) 2009-08-21 2022-05-03 United Services Automobile Association (Usaa) Systems and methods for processing an image of a check during mobile deposit
US9569756B1 (en) 2009-08-21 2017-02-14 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US11373150B1 (en) 2009-08-21 2022-06-28 United Services Automobile Association (Usaa) Systems and methods for monitoring and processing an image of a check during mobile deposit
US8977571B1 (en) 2009-08-21 2015-03-10 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US9818090B1 (en) 2009-08-21 2017-11-14 United Services Automobile Association (Usaa) Systems and methods for image and criterion monitoring during mobile deposit
US11373149B1 (en) 2009-08-21 2022-06-28 United Services Automobile Association (Usaa) Systems and methods for monitoring and processing an image of a check during mobile deposit
US10235660B1 (en) 2009-08-21 2019-03-19 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US11321679B1 (en) 2009-08-21 2022-05-03 United Services Automobile Association (Usaa) Systems and methods for processing an image of a check during mobile deposit
US10855914B1 (en) 2009-08-28 2020-12-01 United Services Automobile Association (Usaa) Computer systems for updating a record to reflect data contained in image of document automatically captured on a user's remote mobile phone displaying an alignment guide and using a downloaded app
US9177198B1 (en) 2009-08-28 2015-11-03 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US9336517B1 (en) 2009-08-28 2016-05-10 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US9177197B1 (en) 2009-08-28 2015-11-03 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US10848665B1 (en) 2009-08-28 2020-11-24 United Services Automobile Association (Usaa) Computer systems for updating a record to reflect data contained in image of document automatically captured on a user's remote mobile phone displaying an alignment guide and using a downloaded app
US8699779B1 (en) 2009-08-28 2014-04-15 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US11064111B1 (en) 2009-08-28 2021-07-13 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US10574879B1 (en) 2009-08-28 2020-02-25 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
US11811848B2 (en) 2009-10-08 2023-11-07 Bright Data Ltd. System providing faster and more efficient data communication
US20230124615A1 (en) * 2009-10-08 2023-04-20 Bright Data Ltd. System providing faster and more efficient data communication
US10491713B2 (en) 2009-10-08 2019-11-26 Web Spark Ltd. System providing faster and more efficient data communication
US11616826B2 (en) * 2009-10-08 2023-03-28 Bright Data Ltd. System providing faster and more efficient data communication
US11457058B2 (en) 2009-10-08 2022-09-27 Bright Data Ltd. System providing faster and more efficient data communication
US20230208903A1 (en) * 2009-10-08 2023-06-29 Bright Data Ltd. System providing faster and more efficient data communication
US10523788B2 (en) * 2009-10-08 2019-12-31 Web Sparks Ltd. System providing faster and more efficient data communication
US11700295B2 (en) 2009-10-08 2023-07-11 Bright Data Ltd. System providing faster and more efficient data communication
US11412025B2 (en) 2009-10-08 2022-08-09 Bright Data Ltd. System providing faster and more efficient data communication
US10484510B2 (en) * 2009-10-08 2019-11-19 Web Spark Ltd. System providing faster and more efficient data communication
US10582014B2 (en) 2009-10-08 2020-03-03 Luminati Networks Ltd. System providing faster and more efficient data communication
US20220232107A1 (en) * 2009-10-08 2022-07-21 Bright Data Ltd. System providing faster and more efficient data communication
US10582013B2 (en) * 2009-10-08 2020-03-03 Luminati Networks Ltd. System providing faster and more efficient data communication
US10616375B2 (en) 2009-10-08 2020-04-07 Luminati Networks Ltd. System providing faster and more efficient data communication
US20220232106A1 (en) * 2009-10-08 2022-07-21 Bright Data Ltd. System providing faster and more efficient data communication
US20210289050A1 (en) * 2009-10-08 2021-09-16 Bright Data Ltd. System providing faster and more efficient data communication
US10484511B2 (en) 2009-10-08 2019-11-19 Web Spark Ltd. System providing faster and more efficient data communication
US10637968B2 (en) 2009-10-08 2020-04-28 Luminati Networks Ltd. System providing faster and more efficient data communication
US20230199053A1 (en) * 2009-10-08 2023-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US20230199054A1 (en) * 2009-10-08 2023-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US11770435B2 (en) 2009-10-08 2023-09-26 Bright Data Ltd. System providing faster and more efficient data communication
US11916993B2 (en) 2009-10-08 2024-02-27 Bright Data Ltd. System providing faster and more efficient data communication
US20190191011A1 (en) * 2009-10-08 2019-06-20 Web Spark Ltd. System providing faster and more efficient data communication
US10469628B2 (en) * 2009-10-08 2019-11-05 Web Spark Ltd. System providing faster and more efficient data communication
US11671476B2 (en) * 2009-10-08 2023-06-06 Bright Data Ltd. System providing faster and more efficient data communication
US11611607B2 (en) 2009-10-08 2023-03-21 Bright Data Ltd. System providing faster and more efficient data communication
US11659017B2 (en) 2009-10-08 2023-05-23 Bright Data Ltd. System providing faster and more efficient data communication
US11811850B2 (en) 2009-10-08 2023-11-07 Bright Data Ltd. System providing faster and more efficient data communication
US11303734B2 (en) 2009-10-08 2022-04-12 Bright Data Ltd. System providing faster and more efficient data communication
US11811849B2 (en) 2009-10-08 2023-11-07 Bright Data Ltd. System providing faster and more efficient data communication
US10785347B1 (en) 2009-10-08 2020-09-22 Luminati Networks Ltd. System providing faster and more efficient data communication
US11838119B2 (en) * 2009-10-08 2023-12-05 Bright Data Ltd. System providing faster and more efficient data communication
US10805429B1 (en) * 2009-10-08 2020-10-13 Luminati Networks Ltd. System providing faster and more efficient data communication
US11659018B2 (en) 2009-10-08 2023-05-23 Bright Data Ltd. System providing faster and more efficient data communication
US11539779B2 (en) * 2009-10-08 2022-12-27 Bright Data Ltd. System providing faster and more efficient data communication
US10491712B2 (en) * 2009-10-08 2019-11-26 Web Spark Ltd. System providing faster and more efficient data communication
US11297167B2 (en) 2009-10-08 2022-04-05 Bright Data Ltd. System providing faster and more efficient data communication
US20190182358A1 (en) * 2009-10-08 2019-06-13 Web Spark Ltd. System providing faster and more efficient data communication
US11233880B2 (en) 2009-10-08 2022-01-25 Bright Data Ltd. System providing faster and more efficient data communication
US11876853B2 (en) 2009-10-08 2024-01-16 Bright Data Ltd. System providing faster and more efficient data communication
US11233879B2 (en) 2009-10-08 2022-01-25 Bright Data Ltd. System providing faster and more efficient data communication
US11888921B2 (en) 2009-10-08 2024-01-30 Bright Data Ltd. System providing faster and more efficient data communication
US11233881B2 (en) 2009-10-08 2022-01-25 Bright Data Ltd. System providing faster and more efficient data communication
US10931792B2 (en) * 2009-10-08 2021-02-23 Luminati Networks Ltd. System providing faster and more efficient data communication
US11888922B2 (en) * 2009-10-08 2024-01-30 Bright Data Ltd. System providing faster and more efficient data communication
US10958768B1 (en) * 2009-10-08 2021-03-23 Luminati Networks Ltd. System providing faster and more efficient data communication
US11228666B2 (en) 2009-10-08 2022-01-18 Bright Data Ltd. System providing faster and more efficient data communication
US20190182359A1 (en) * 2009-10-08 2019-06-13 Web Spark Ltd. System providing faster and more efficient data communication
US11902351B2 (en) * 2009-10-08 2024-02-13 Bright Data Ltd. System providing faster and more efficient data communication
US10986216B2 (en) 2009-10-08 2021-04-20 Luminati Networks Ltd. System providing faster and more efficient data communication
US11206317B2 (en) 2009-10-08 2021-12-21 Bright Data Ltd. System providing faster and more efficient data communication
US20210289051A1 (en) * 2009-10-08 2021-09-16 Bright Data Ltd. System providing faster and more efficient data communication
US11190622B2 (en) 2009-10-08 2021-11-30 Bright Data Ltd. System providing faster and more efficient data communication
US11089135B2 (en) 2009-10-08 2021-08-10 Bright Data Ltd. System providing faster and more efficient data communication
US11178258B2 (en) 2009-10-08 2021-11-16 Bright Data Ltd. System providing faster and more efficient data communication
US20210289052A1 (en) * 2009-10-08 2021-09-16 Bright Data Ltd. System providing faster and more efficient data communication
US11128738B2 (en) 2009-10-08 2021-09-21 Bright Data Ltd. Fetching content from multiple web servers using an intermediate client device
US11038989B2 (en) 2009-10-08 2021-06-15 Bright Data Ltd. System providing faster and more efficient data communication
US11044346B2 (en) * 2009-10-08 2021-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US11044342B2 (en) * 2009-10-08 2021-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US11044344B2 (en) * 2009-10-08 2021-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US11044345B2 (en) 2009-10-08 2021-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US11044341B2 (en) * 2009-10-08 2021-06-22 Bright Data Ltd. System providing faster and more efficient data communication
US20210194992A1 (en) * 2009-10-08 2021-06-24 Luminati Networks Ltd. System providing faster and more efficient data communication
US11050852B2 (en) 2009-10-08 2021-06-29 Bright Data Ltd. System providing faster and more efficient data communication
US20110119196A1 (en) * 2009-11-18 2011-05-19 Nohold, Inc. Confederated knowledge for two or more internet-accessible knowledge management systems
US8589484B2 (en) 2010-03-02 2013-11-19 Usablenet Inc. Method for optimizing a web content proxy server and devices thereof
US20110219057A1 (en) * 2010-03-02 2011-09-08 Usablenet Inc. Method for optimizing a web content proxy server and devices thereof
US9473592B2 (en) 2010-03-02 2016-10-18 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
US8321502B2 (en) 2010-03-02 2012-11-27 Usablenet Inc. Method for optimizing a web content proxy server and devices thereof
EP2363995A1 (en) * 2010-03-02 2011-09-07 Usablenet Inc. Methods for optimizing a web content proxy server and devices thereof
US9779452B1 (en) 2010-06-08 2017-10-03 United Services Automobile Association (Usaa) Apparatuses, methods, and systems for remote deposit capture with enhanced image detection
US11915310B1 (en) 2010-06-08 2024-02-27 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a video remote deposit capture platform
US11295378B1 (en) 2010-06-08 2022-04-05 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a video remote deposit capture platform
US10380683B1 (en) 2010-06-08 2019-08-13 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a video remote deposit capture platform
US11232517B1 (en) 2010-06-08 2022-01-25 United Services Automobile Association (Usaa) Apparatuses, methods, and systems for remote deposit capture with enhanced image detection
US11295377B1 (en) 2010-06-08 2022-04-05 United Services Automobile Association (Usaa) Automatic remote deposit image preparation apparatuses, methods and systems
US11893628B1 (en) 2010-06-08 2024-02-06 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a video remote deposit capture platform
US8688579B1 (en) 2010-06-08 2014-04-01 United Services Automobile Association (Usaa) Automatic remote deposit image preparation apparatuses, methods and systems
US10706466B1 (en) 2010-06-08 2020-07-07 United Services Automobile Association (Ussa) Automatic remote deposit image preparation apparatuses, methods and systems
US11068976B1 (en) 2010-06-08 2021-07-20 United Services Automobile Association (Usaa) Financial document image capture deposit method, system, and computer-readable
US10621660B1 (en) 2010-06-08 2020-04-14 United Services Automobile Association (Usaa) Apparatuses, methods, and systems for remote deposit capture with enhanced image detection
US8837806B1 (en) 2010-06-08 2014-09-16 United Services Automobile Association (Usaa) Remote deposit image inspection apparatuses, methods and systems
US9129340B1 (en) 2010-06-08 2015-09-08 United Services Automobile Association (Usaa) Apparatuses, methods and systems for remote deposit capture with enhanced image detection
US11797960B1 (en) 2012-01-05 2023-10-24 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US11544682B1 (en) 2012-01-05 2023-01-03 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US10769603B1 (en) 2012-01-05 2020-09-08 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US10380565B1 (en) 2012-01-05 2019-08-13 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US11062283B1 (en) 2012-01-05 2021-07-13 United Services Automobile Association (Usaa) System and method for storefront bank deposits
US11449666B2 (en) 2012-11-21 2022-09-20 Roofoveryourhead Marketing Ltd. Browser extension for the collection and distribution of data and methods of use thereof
US11048858B2 (en) * 2012-11-21 2021-06-29 Roofoveryourhead Marketing Ltd. Browser extension for the collection and distribution of data and methods of use thereof
US20150309971A1 (en) * 2012-11-21 2015-10-29 Roofoveryourhead Marketing Ltd. A browser extension for the collection and distribution of data and methods of use thereof
US10552810B1 (en) 2012-12-19 2020-02-04 United Services Automobile Association (Usaa) System and method for remote deposit of financial instruments
US10509528B2 (en) * 2012-12-20 2019-12-17 Open Text Corporation Mechanism for partial page refresh using URL addressable hierarchical page structure
US20180067595A1 (en) * 2012-12-20 2018-03-08 Open Text Corporation Mechanism for partial page refresh using url addressable hierarchical page structure
US11321775B2 (en) * 2013-06-27 2022-05-03 Euroclear Sa/Nv Asset inventory system
US11336746B2 (en) 2013-08-28 2022-05-17 Bright Data Ltd. System and method for improving Internet communication by using intermediate nodes
US11412066B2 (en) 2013-08-28 2022-08-09 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11272034B2 (en) 2013-08-28 2022-03-08 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11632439B2 (en) 2013-08-28 2023-04-18 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10924580B2 (en) 2013-08-28 2021-02-16 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11233872B2 (en) 2013-08-28 2022-01-25 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11102326B2 (en) 2013-08-28 2021-08-24 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11870874B2 (en) 2013-08-28 2024-01-09 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10979533B2 (en) 2013-08-28 2021-04-13 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11303724B2 (en) 2013-08-28 2022-04-12 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11310341B2 (en) 2013-08-28 2022-04-19 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11316950B2 (en) 2013-08-28 2022-04-26 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10986208B2 (en) 2013-08-28 2021-04-20 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US10721325B2 (en) 2013-08-28 2020-07-21 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US10999402B2 (en) 2013-08-28 2021-05-04 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11924307B2 (en) 2013-08-28 2024-03-05 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11336745B2 (en) 2013-08-28 2022-05-17 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11677856B2 (en) 2013-08-28 2023-06-13 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10659562B2 (en) 2013-08-28 2020-05-19 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11349953B2 (en) 2013-08-28 2022-05-31 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10652357B2 (en) 2013-08-28 2020-05-12 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11838388B2 (en) 2013-08-28 2023-12-05 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10652358B2 (en) 2013-08-28 2020-05-12 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11388257B2 (en) 2013-08-28 2022-07-12 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11005967B2 (en) 2013-08-28 2021-05-11 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11838386B2 (en) 2013-08-28 2023-12-05 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11595496B2 (en) 2013-08-28 2023-02-28 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11595497B2 (en) 2013-08-28 2023-02-28 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11902400B2 (en) 2013-08-28 2024-02-13 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11689639B2 (en) 2013-08-28 2023-06-27 Bright Data Ltd. System and method for improving Internet communication by using intermediate nodes
US11799985B2 (en) 2013-08-28 2023-10-24 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11012530B2 (en) 2013-08-28 2021-05-18 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11588920B2 (en) 2013-08-28 2023-02-21 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11012529B2 (en) 2013-08-28 2021-05-18 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11758018B2 (en) 2013-08-28 2023-09-12 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11451640B2 (en) 2013-08-28 2022-09-20 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11178250B2 (en) 2013-08-28 2021-11-16 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10469615B2 (en) 2013-08-28 2019-11-05 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11575771B2 (en) 2013-08-28 2023-02-07 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10469614B2 (en) 2013-08-28 2019-11-05 Luminati Networks Ltd. System and method for improving Internet communication by using intermediate nodes
US11729297B2 (en) 2013-08-28 2023-08-15 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US10447809B2 (en) 2013-08-28 2019-10-15 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US10440146B2 (en) 2013-08-28 2019-10-08 Luminati Networks Ltd. System and method for improving internet communication by using intermediate nodes
US11924306B2 (en) 2013-08-28 2024-03-05 Bright Data Ltd. System and method for improving internet communication by using intermediate nodes
US11138578B1 (en) 2013-09-09 2021-10-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of currency
US10360448B1 (en) 2013-10-17 2019-07-23 United Services Automobile Association (Usaa) Character count determination for a digital image
US11694462B1 (en) 2013-10-17 2023-07-04 United Services Automobile Association (Usaa) Character count determination for a digital image
US9904848B1 (en) 2013-10-17 2018-02-27 United Services Automobile Association (Usaa) Character count determination for a digital image
US11144753B1 (en) 2013-10-17 2021-10-12 United Services Automobile Association (Usaa) Character count determination for a digital image
US11281903B1 (en) 2013-10-17 2022-03-22 United Services Automobile Association (Usaa) Character count determination for a digital image
US9286514B1 (en) 2013-10-17 2016-03-15 United Services Automobile Association (Usaa) Character count determination for a digital image
US9558035B2 (en) * 2013-12-18 2017-01-31 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US20150169367A1 (en) * 2013-12-18 2015-06-18 Oracle International Corporation System and method for supporting adaptive busy wait in a computing environment
US20160072848A1 (en) * 2014-02-26 2016-03-10 Iboss, Inc. Detecting and managing abnormal data behavior
US9195669B2 (en) * 2014-02-26 2015-11-24 Iboss, Inc. Detecting and managing abnormal data behavior
US9794291B2 (en) * 2014-02-26 2017-10-17 Iboss, Inc. Detecting and managing abnormal data behavior
US20150242415A1 (en) * 2014-02-26 2015-08-27 Phantom Technologies, Inc. Detecting and managing abnormal data behavior
US10057296B2 (en) 2014-02-26 2018-08-21 Iboss, Inc. Detecting and managing abnormal data behavior
US9513961B1 (en) * 2014-04-02 2016-12-06 Google Inc. Monitoring application loading
US9537740B2 (en) 2014-07-31 2017-01-03 International Business Machines Corporation Monitoring device usage
US10169182B2 (en) 2014-07-31 2019-01-01 International Business Machines Corporation Monitoring levels of utilization of device
US9998347B2 (en) 2014-07-31 2018-06-12 International Business Machines Corporation Monitoring device usage
US10048994B2 (en) * 2014-10-20 2018-08-14 Teachers Insurance And Annuity Association Of America Identifying failed customer experience in distributed computer systems
US20180329771A1 (en) * 2014-10-20 2018-11-15 Teachers Insurance And Annuity Association Of America Identifying failed customer experience in distributed computer systems
US10795744B2 (en) * 2014-10-20 2020-10-06 Teachers Insurance And Annuity Association Of America Identifying failed customer experience in distributed computer systems
US20160110239A1 (en) * 2014-10-20 2016-04-21 Teachers Insurance And Annuity Association Of America Identifying failed customer experience in distributed computer systems
US10616294B2 (en) 2015-05-14 2020-04-07 Web Spark Ltd. System and method for streaming content from multiple servers
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US11770429B2 (en) 2015-05-14 2023-09-26 Bright Data Ltd. System and method for streaming content from multiple servers
US11757961B2 (en) 2015-05-14 2023-09-12 Bright Data Ltd. System and method for streaming content from multiple servers
US10402790B1 (en) 2015-05-28 2019-09-03 United Services Automobile Association (Usaa) Composing a focused document image from multiple image captures or portions of multiple image captures
US10268449B1 (en) * 2015-06-25 2019-04-23 EMC IP Holding Company LLC Natural order in API calls
US10423516B2 (en) 2015-11-11 2019-09-24 International Business Machines Corporation System resource component utilization
US10102103B2 (en) 2015-11-11 2018-10-16 International Business Machines Corporation System resource component utilization
US11182270B2 (en) 2015-11-11 2021-11-23 International Business Machines Corporation System resource component utilization
US10685134B1 (en) 2015-12-15 2020-06-16 Amazon Technologies, Inc. Database proxy service
US11449503B2 (en) 2015-12-15 2022-09-20 Amazon Technologies, Inc. Query routing and rewriting
US10579618B1 (en) * 2015-12-15 2020-03-03 Amazon Technologies, Inc. Query routing and rewriting
US10356112B2 (en) * 2016-03-10 2019-07-16 Huawei Technologies Co., Ltd. Method of mitigating cookie-injection and cookie-replaying attacks
US20170264624A1 (en) * 2016-03-10 2017-09-14 Huawei Technologies Co., Ltd Method of mitigating cookie-injection and cookie-replaying attacks
US10853430B1 (en) 2016-11-14 2020-12-01 American Innovative Applications Corporation Automated agent search engine
US10410270B2 (en) * 2016-12-22 2019-09-10 Google Llc Granular selection and scheduling of queries
US10649876B2 (en) 2017-04-20 2020-05-12 International Business Machines Corporation Maintaining manageable utilization in a system to prevent excessive queuing of system requests
US11909547B2 (en) 2017-08-28 2024-02-20 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11729012B2 (en) 2017-08-28 2023-08-15 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11757674B2 (en) 2017-08-28 2023-09-12 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11888638B2 (en) 2017-08-28 2024-01-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US10985934B2 (en) 2017-08-28 2021-04-20 Luminati Networks Ltd. System and method for improving content fetching by selecting tunnel devices
US11424946B2 (en) 2017-08-28 2022-08-23 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11711233B2 (en) 2017-08-28 2023-07-25 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11902044B2 (en) 2017-08-28 2024-02-13 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US10880266B1 (en) 2017-08-28 2020-12-29 Luminati Networks Ltd. System and method for improving content fetching by selecting tunnel devices
US11888639B2 (en) 2017-08-28 2024-01-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11764987B2 (en) 2017-08-28 2023-09-19 Bright Data Ltd. System and method for monitoring proxy devices and selecting therefrom
US11729013B2 (en) 2017-08-28 2023-08-15 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11863339B2 (en) 2017-08-28 2024-01-02 Bright Data Ltd. System and method for monitoring status of intermediate devices
US11115230B2 (en) 2017-08-28 2021-09-07 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11558215B2 (en) 2017-08-28 2023-01-17 Bright Data Ltd. System and method for content fetching using a selected intermediary device and multiple servers
US11876612B2 (en) 2017-08-28 2024-01-16 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
US11030752B1 (en) 2018-04-27 2021-06-08 United Services Automobile Association (Usaa) System, computing device, and method for document detection
US11676285B1 (en) 2018-04-27 2023-06-13 United Services Automobile Association (Usaa) System, computing device, and method for document detection
US11190573B2 (en) * 2018-07-25 2021-11-30 Vmware, Inc. Techniques for improving implementation of a remote browser within a local browser
US20200036770A1 (en) * 2018-07-25 2020-01-30 Vmware, Inc. Techniques for improving implementation of a remote browser within a local browser
US10902080B2 (en) 2019-02-25 2021-01-26 Luminati Networks Ltd. System and method for URL fetching retry mechanism
US10963531B2 (en) 2019-02-25 2021-03-30 Luminati Networks Ltd. System and method for URL fetching retry mechanism
US11593446B2 (en) 2019-02-25 2023-02-28 Bright Data Ltd. System and method for URL fetching retry mechanism
US11675866B2 (en) 2019-02-25 2023-06-13 Bright Data Ltd. System and method for URL fetching retry mechanism
US11657110B2 (en) 2019-02-25 2023-05-23 Bright Data Ltd. System and method for URL fetching retry mechanism
US11902253B2 (en) 2019-04-02 2024-02-13 Bright Data Ltd. System and method for managing non-direct URL fetching service
US11411922B2 (en) 2019-04-02 2022-08-09 Bright Data Ltd. System and method for managing non-direct URL fetching service
US11418490B2 (en) 2019-04-02 2022-08-16 Bright Data Ltd. System and method for managing non-direct URL fetching service
US11789932B2 (en) * 2019-12-23 2023-10-17 Amadeus S.A.S. System and method for optimizing transmission of requests for updated content from external data sources
US11461308B2 (en) * 2019-12-23 2022-10-04 Amadeus S.A.S. System and method for optimizing transmission of requests for updated content from external data sources
US11900755B1 (en) 2020-11-30 2024-02-13 United Services Automobile Association (Usaa) System, computing device, and method for document detection and deposit processing
WO2022232285A1 (en) * 2021-04-30 2022-11-03 Salmon Upstream, LLC Digital infrastructure to perform multi-network connections

Also Published As

Publication number Publication date
WO2001071572A2 (en) 2001-09-27
US8738599B2 (en) 2014-05-27
US20060080297A1 (en) 2006-04-13
US20050010567A1 (en) 2005-01-13
US20050251497A1 (en) 2005-11-10
WO2001071572A3 (en) 2004-02-05
US20120179578A1 (en) 2012-07-12
US7483883B2 (en) 2009-01-27
EP1428142A2 (en) 2004-06-16
AU2001247789A1 (en) 2001-10-03
US20080033770A1 (en) 2008-02-07
US8458162B2 (en) 2013-06-04
US20060123012A1 (en) 2006-06-08
US20060080298A1 (en) 2006-04-13
US20050262064A1 (en) 2005-11-24
US20130246103A1 (en) 2013-09-19
US7774331B2 (en) 2010-08-10
US20050234853A1 (en) 2005-10-20
US20050262065A1 (en) 2005-11-24
US7627606B2 (en) 2009-12-01
US7349894B2 (en) 2008-03-25
US20100268623A1 (en) 2010-10-21

Similar Documents

Publication Publication Date Title
US8738599B2 (en) Purchase handoff in a travel search engine
US7668811B2 (en) Updating prices of search results during a search for a travel related item
US9430744B2 (en) Profitability based ranking of search results for lodging reservations
US9727649B2 (en) Use of stored search results by a travel search system
US20070100962A1 (en) Dynamic flight packaging
US7548982B2 (en) Predictive branching and caching method and apparatus for applications
US8069407B1 (en) Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes
US8335792B2 (en) Methods and apparatus for enterprise application integration
US7558795B2 (en) Method and apparatus for tracking functional states of a Web-site and reporting results to web developers
US8849693B1 (en) Techniques for advertising in electronic commerce
US20080071775A1 (en) System And Method For Ranking Items
US20020156685A1 (en) System and method for automating electronic commerce transactions using a virtual shopping cart
AU2002340375B2 (en) Methods, systems, and articles of manufacture for providing product availability information
EP1193596A2 (en) Intelligently classifying and handling user requests in a data service system
Powles et al. Extending UDDI with recommendations: an association analysis approach

Legal Events

Date Code Title Description
AS Assignment

Owner name: SIDESTEP, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARTH, BRIAN E.;GUNN, LAWRENCE A.;IVEY, GLEN E.;AND OTHERS;REEL/FRAME:012006/0314;SIGNING DATES FROM 20010628 TO 20010703

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION