US20170147659A1 - Systems and Methods for Accessing Applications in Grouped Search Results - Google Patents
Systems and Methods for Accessing Applications in Grouped Search Results Download PDFInfo
- Publication number
- US20170147659A1 US20170147659A1 US15/396,723 US201715396723A US2017147659A1 US 20170147659 A1 US20170147659 A1 US 20170147659A1 US 201715396723 A US201715396723 A US 201715396723A US 2017147659 A1 US2017147659 A1 US 2017147659A1
- Authority
- US
- United States
- Prior art keywords
- application
- search
- user device
- search results
- state
- 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
Links
Images
Classifications
-
- G06F17/30554—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
- G06F16/287—Visualization; Browsing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9038—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G06F17/30601—
-
- G06F17/30864—
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0251—Targeted advertisements
- G06Q30/0255—Targeted advertisements based on user history
- G06Q30/0256—User search
Definitions
- This disclosure relates to searching, accessing, and displaying functionality of applications.
- the method includes receiving, at a computing device (e.g., of a user device), search results transmitted from a search system in communication with the computing device.
- the search results include a header for an application executable on the computing device and application access mechanisms associated with the header.
- Each application access mechanism has a reference to the application and indicates one or more performable operations for the application.
- the method further includes displaying, on a display in communication with the computing device, a graphical user interface including the header, an expansion element associated with the header, and user selectable access links grouped with the header.
- Each access link is associated with an application access mechanism for the application.
- the expansion element has a collapsed state and an expanded state.
- the method When the expansion element is in the expanded state, the method includes displaying on the display all of the user selectable access links grouped with the header. However, when the expansion element is in the expanded state, the method includes displaying on the display a threshold number of the user selectable access links grouped with the header, the threshold number being less than a total number of the user selectable access links grouped with the header. The threshold number may be greater than zero.
- a user device includes a display, a computing device in communication with the display, and non-transitory memory in communication with the computing device. The non-transitory memory stores instructions that when executed on the computing device cause the computing device to perform operations that include the method describe above.
- Implementations of the disclosure may include one or more of the following optional features.
- the search results include an advertisement associated with a header.
- the GUI displays the advertisement in the header or associated with a user selectable access link grouped with the header.
- the search results include an advertisement record including one or more of an advertisement name, an advertisement identification, a sponsored link name, a sponsored link identification, advertising content, or advertisement parameters.
- the method includes displaying in the GUI the expansion element in the header.
- the method includes displaying in the GUI the expansion element among the user selectable access links grouped with the header.
- the method may include displaying on the display a list of all of the user selectable access links grouped with the header and displaying on the display the expansion element as a last element in the list.
- the method may include displaying on the display a list of all of the threshold number of the user selectable access links grouped with the header; and displaying on the display the expansion element as a last element in the list.
- the header includes a name of the associated application.
- the method may include displaying in the graphical user interface a header link in the header indicating an installation state of the associated application as being installed or uninstalled.
- the method may include executing the application on the computing device; and when the installation state of the associated application is uninstalled, the method may include downloading the application to non-transitory memory in communication with the computing device and executing the application on the computing device.
- the method includes directing the user device to a digital distribution platform to download the application. Once in communication with the digital distribution platform, the user may choose to install the application on the user device.
- the method includes displaying in the graphical user interface an ungrouped access link having an associated application access mechanism for an application different from the application associated with the header.
- the method may include displaying in the graphical user interface an indicator in the ungrouped access link indicating an installation state of the associated application as being installed or uninstalled.
- the method in response to receiving a user selection of an ungrouped access link, when the installation state of the associated application is installed, the method may include executing the application on the computing device; and when the installation state of the associated application is uninstalled, the method may include downloading the application to non-transitory memory in communication with the computing device and executing the application on the computing device.
- the method when the installation state of the associated application is uninstalled, includes directing the user device to a digital distribution platform, where the user may choose to install the application on the user device. In some examples, in response to receiving a user selection of an ungrouped access link, when the installation state of the associated application is uninstalled, the method includes executing a web browser on the computing device and accessing functionality of the associated application through the web browser.
- the method may include displaying the access links in an order under the header based on a score associated with the application access mechanism of each access link.
- the method includes receiving, at the computing device, search criteria (i.e., search query) through the graphical user interface, generating, at the computing device, a query wrapper including the search criteria, and transmitting the query wrapper from the computing device to the search system.
- search criteria i.e., search query
- the method includes receiving at a computing device, a search criteria from a user device in communication with the computing device and executing, using the computing device, a search of a data store in communication with the computing device using the search criteria.
- the method includes receiving, at the computing device, function records from the data store in response to the executed search.
- Each of the function records includes an application identifier, an application access mechanism, and application state information.
- the application access mechanism has a reference to a native application and indicates one or more performable operations for the native application.
- the application state information describes a state of the native application when the native application performs the one or more operations indicated in the application access mechanism.
- the method includes grouping the function records, at the computing device, based on the application identifiers, and transmitting header search results from the computing device to the user device for display on the user device.
- the header search results include a header for each group of function records and an expansion element associated with each header.
- the method also includes receiving, at the computing device, an expansion command from the user device.
- the expansion command indicative of a user selection of an expansion element.
- the method also includes transmitting access mechanism search results from the computing device to the user device.
- the access mechanism search results include the application access mechanisms of the group of function records is associated with the header of the selected expansion element.
- the access mechanism search results include link data for each application access mechanism.
- the link data includes at least one of text or an image associated with the state of the application referenced by the corresponding application access mechanism.
- the method further includes filtering the function records, at the computing device, based on their application identifiers by limiting a number of function records per application identifier. Additionally, the method includes scoring the function records based on a relevancy of the function record to the search criteria, and ordering the function records based on their scores. The scoring is based on the application state information of the function record. In some examples, executing the search includes identifying function records of the data store based on matches between terms of the search criteria and terms of the application state information of the function records.
- At least one of the application access mechanisms includes an application resource identifier referencing a native application, wherein the application resource identifier is in an application-specific format specific for the referenced native application and indicates one or more performable operations for the user device.
- the application resource identifier includes a domain name and a path to be used by the referenced native application to retrieve and display information.
- the application access mechanism includes instructions for at least one of a search application, an operating system, or the referenced native application when executed on user device.
- at least one of the application access mechanisms includes a web address that when executed by the user device causes the user device to execute a web browser and access a web version of the native application referenced in the application access mechanism.
- FIG. 1A is a schematic view of an example environment including a user device in communication with a search system.
- FIG. 1B is a functional block diagram of a search system interacting with user devices and data sources.
- FIG. 2 is a schematic view of an example user device in communication with a search system.
- FIGS. 3A and 3B are schematic views of example function records.
- FIG. 4A is a schematic view of an example search module receiving and processing a query wrapper and outputting search results.
- FIG. 4B is a schematic view of an example set generation module generating a consideration set and a set processing module scoring, filtering, and grouping function records of the consideration set.
- FIG. 4C is a schematic view of an example set generation module generating a consideration set and a set processing module scoring, filtering, and grouping function records of the consideration set.
- FIG. 4D is a schematic view of an example advertisement module.
- FIGS. 5A-5C is a schematic view of an example arrangement of operations for a method of performing a search on a user device.
- FIG. 6A is a schematic view of an example arrangement of operations for a method of performing a search on a search system.
- FIGS. 6B and 6C are schematic view of an example arrangement of operations for a method of generating search results.
- FIGS. 7A-7D are flow diagrams illustrating example methods of operating a user device.
- FIGS. 8A and 8B are schematic views of an example user device displaying a graphical user interface that receives a search query and displays search results.
- FIG. 8C is a schematic view of an example user device displaying a graphical user interface displaying search results grouped under a bare header (i.e., a header without links).
- FIG. 8D is a schematic view of an example user device displaying a graphical user interface displaying search results grouped under a header having a header link.
- FIG. 8E is a schematic view of an example user device displaying a graphical user interface displaying search results with indicators indicating an installation state of a corresponding application.
- FIGS. 8F-8I are schematic views of example user device displaying a graphical user interface displaying an expanded state and a collapsed state of search results.
- FIGS. 8J and 8K are schematic views of example user device showing information relating to a link of the search results.
- FIG. 9 is a schematic view of an example computing device executing any systems or methods described herein.
- a search system of the present disclosure implements a search based on a query received from a user device.
- the search system receives a query from a user device that includes search criteria, generates search results in response to the received query, and transmits the search results to the user device.
- the search results may include various mechanisms for accessing applications or functionality of applications relevant to the search query of the user.
- the user device may launch an application referenced in the application access mechanism and perform the one or more operations indicated in the application access mechanism.
- FIG. 1A illustrates an example system 100 that includes a user device 200 associated with a user 10 in communication with a remote system 110 via a network 120 .
- FIG. 1B provides a functional block diagram of the system 100 .
- the remote system 110 may be a distributed system (e.g., cloud environment) having scalable/elastic computing resources 112 and/or storage resources 114 .
- the user device 200 and/or the remote system 110 may execute a search system 300 and optionally receive data from one or more data sources 130 .
- the search system 300 communicates with one or more user devices 200 and the data source(s) 130 via the network 120 .
- the network 120 may include various types of networks, such as a local area network (LAN), wide area network (WAN), and/or the Internet.
- FIG. 2 shows an example user device 200 in communication with the search system 300 .
- User devices 200 can be any computing devices that are capable of providing queries 210 , 212 to the search system 300 .
- User devices 200 include, but are not limited to, mobile computing devices, such as laptops 200 a , tablets 200 b , smart phones 200 c , and wearable computing devices 200 d (e.g., headsets and/or watches).
- User devices 200 may also include other computing devices having other form factors, such as computing devices included in desktop computers 200 e , vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances).
- the user devices 200 may use a variety of different operating systems 224 .
- a user device 200 may run an operating system including, but not limited to, ANDROID® developed by Google Inc., IOS® developed by Apple Inc., or WINDOWS PHONE® developed by Microsoft Corporation.
- the operating system 224 running on the user device 200 may include, but is not limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®.
- the user device may run an operating system including, but not limited to, MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., or Linux.
- User devices 200 may also access the search system 300 while running operating systems 224 other than those operating systems 224 described above, whether presently available or developed in the future.
- a software application 204 may refer to computer software that, when executed by a computing device, causes the computing device to perform a task.
- a software application 204 may be referred to as an “application”, an “app”, or a “program”.
- Example software applications 204 include, but are not limited to, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and games.
- Applications 204 can be executed on a variety of different user devices 200 .
- a native application 204 a may be installed on a user device 200 prior to a user 10 purchasing the user device 200 .
- the user may 10 download and install native applications 204 a on the user device 200 .
- an application 204 may be accessed on the computing device 200 on which the application 204 is installed. Additionally or alternatively, the functionality of an application 204 may be accessed via a remote computing device 112 . In some examples, all of an application's functionality is included on the computing device 112 , 200 on which the application 204 is installed. These applications 204 may function without communication with other computing devices 112 , 200 (e.g., via the Internet). In other examples, an application 204 installed on a computing device 200 may access information from other remote computing devices 112 during operation. For example, a weather application installed on a computing device 200 may access the latest weather information via the Internet and display the accessed weather information to the user 10 through the installed weather application.
- a web-based application 204 b may be partially executed by the user's computing device 200 and partially executed by a remote computing device 112 .
- a web application 204 b may be an application 204 that is executed, at least in part, by a web server and accessed by a web browser (e.g., a native application 204 a ) of the user's computing device 200 .
- Example web applications 204 b may include, but are not limited to, web-based email, online auctions, and online retail sites.
- the user device 200 may communicate with the search system 300 using any software application 204 that can transmit search queries 212 to the search system 300 .
- the user device 200 runs a native application 204 a that is dedicated to interfacing with the search system 300 , such as a native application 204 a dedicated to searches (e.g., a search application 216 ).
- the user device 200 communicates with the search system 300 using a more general application 204 , such as a web-browser application 204 b accessed using a web browser native application 204 a .
- the user device 200 may communicate with the search system 300 using the native search application 216 and/or a web-browser application 204 b , the user device 200 may be described hereinafter as using the native search application 216 to communicate with the search system 300 .
- the functionality attributed to the search application 216 may be included as a searching component of a larger application 204 that has additional functionality.
- the functionality attributed to the search application 216 may be included as part of a native application 204 a or a web application 204 b as a feature that provides search capabilities.
- Native applications 204 a can perform a variety of different functions for a user 10 .
- a restaurant reservation application can make reservations for restaurants.
- an internet media player application can stream media (e.g., a song or movie) from the Internet.
- a single native application 204 a can perform more than one function.
- a restaurant reservation application may also allow a user to retrieve information about a restaurant and read user reviews for the restaurant in addition to making reservations.
- an internet media player application may also allow a user to perform searches for digital media, purchase digital media, and generate media playlists.
- the search system 300 includes a search module 310 in communication with a search data store 320 .
- the search data store 320 may include one or more databases, indices (e.g., inverted indices), tables, files, or other data structures which may be used to implement the techniques of the present disclosure.
- the search module 310 receives a query wrapper 210 and generates search results 220 based on the data included in the data store 320 .
- the search module 310 receives a query wrapper 210 from the user device 200 and performs a search for function records 330 included in the search data store 320 based on data included in the query wrapper 210 , such as a search query 212 .
- the function records 330 include one or more access mechanisms 202 that the user device 200 can use to access different functions for a variety of different applications, such as native applications 204 a installed on the user device 200 .
- the search module 310 transmits search results 220 including a list of access mechanisms 202 to the user device 200 that generated the query wrapper 210 .
- the user device 200 generates user selectable links 230 based on the received search results 220 (e.g., links 230 - 1 , 230 - 2 , . . . , 230 - 5 of FIG. 2 ).
- Each user selectable link 230 displayed to the user 10 may include an access mechanism 202 .
- the user 10 may select a user selectable link 230 on the user device 200 by interacting with the link 230 (e.g., touching or clicking the link).
- the user device 200 may launch a corresponding software application 204 (e.g., a native application 204 a or a web-browser application 204 b ) referenced by the access mechanism 202 and perform one or more operations indicated in the access mechanism 202 .
- a corresponding software application 204 e.g., a native application 204 a or a web-browser application 204 b
- Access mechanisms 202 may include at least one of a native application access mechanism 202 a (hereinafter “application access mechanism”), a web access mechanism 202 b , and an application download mechanism 202 c .
- the user device 200 may use the access mechanisms 202 to access functionality of applications 204 .
- the user 10 may select a user selectable link 230 including an access mechanism 202 in order to access functionality of an application 204 indicated in the user selectable link 230 .
- the search module 310 may transmit one or more application access mechanisms 202 a , one or more web access mechanisms 202 b , and one or more application download mechanisms 202 c to the user device 200 in the search results 220 .
- An application access mechanism 202 a may be a string that includes a reference to a native application 204 a and indicates one or more operations for the user device 200 to perform. If a user 10 selects a user selectable link 230 including an application access mechanism 202 a , the user device 200 may launch the native application 204 a referenced in the application access mechanism 202 a and perform the one or more operations indicated in the application access mechanism 202 a.
- An application access mechanism 202 a includes data that the user device 200 can use to access functionality provided by a native application 204 a .
- an application access mechanism 202 a can include data that causes the user device 200 to launch a native application 204 a and perform a function associated with the native application 204 a .
- Performance of a function according to the access mechanism 202 may set the native application 204 a into a specified state. Accordingly, the process of launching a native application 204 a and performing a function according to an application access mechanism 202 a may be referred to herein as launching the native application 204 a and setting the native application 204 a into a state that is specified by the application access mechanism 202 a .
- an application access mechanism 202 a for a restaurant reservation application can include data that causes the user device 200 to launch the restaurant reservation application and assist in making a reservation at a restaurant.
- the restaurant reservation application may be set in a state that displays reservation information to the user 10 , such as a reservation time, a description of the restaurant, and user reviews.
- an application access mechanism 202 a for an internet media player application can include data that causes the user device 200 to launch the internet media player application and stream media from the Internet.
- the internet media player application may be set in a state that displays information regarding the media (e.g., music) being streamed, such as a song name, an artist, or an album name.
- Application access mechanisms 202 a may have various different formats and content. The format and content of an application access mechanism 202 a may depend on the native application 204 a with which the application access mechanism 202 is associated and the operations that are to be performed by the native application 204 a in response to selection of the application access mechanism 202 a .
- an application access mechanism 202 a for an internet music player application may differ from an application access mechanism 202 a for a shopping application.
- An application access mechanism 202 a for an internet music player application may include references to musical artists, songs, and albums, for example.
- the application access mechanism 202 a for an internet music player application may also reference operations, such as randomizing a list of songs and playing a song or album.
- An application access mechanism 202 a for a shopping application may include references to different products that are for sale.
- the application access mechanism 202 a for the shopping application may also include references to one or more operations, such as adding products to a shopping cart and proceeding to a checkout.
- the search system 300 transmits additional data in the search results 220 along with the application access mechanisms 202 a .
- the search system 300 may transmit data (e.g., link data 232 , such as text and/or images) which may be used by the user device 200 to generate user selectable links 230 in the search results 220 .
- a link 230 may include text and/or images that the user 10 may select (e.g., touch) via a user interface 240 displayed on a screen 201 (e.g., a display or touch screen) of the user device 200 .
- Each user selectable link 230 may be associated with an application access mechanism 202 a such that when the user 10 selects a link 230 , the user device 200 launches the native application 204 a referenced in the application access mechanism 202 a and performs the one or more operations indicated in the application access mechanism 202 a .
- the text and/or images of a link 230 displayed to the user 10 may indicate the operations that will be performed in response to selection of the link 230 . For example, if the link 230 is to a song in a music playing application, the text and/or images may identify the music application that will be launched by the user device 200 and the song that will be played by the music playing application when the user 10 selects the link 230 .
- the user 10 may select a link 230 to cause the user device 200 to launch the native application 204 a identified in the link 230 and perform one or more operations according to the application access mechanism 202 a associated with the link 230 .
- the user device 200 launches a native application 204 a and sets the native application 204 a into a state defined by the application access mechanism 202 a associated with the link.
- a state of a native application 204 a may refer to the operations and/or the resulting outcome of the native application 204 a in response to selection of a link 230 .
- a state of a native application 204 a may also be referred to herein as an “application state.”
- An application state specified by an application access mechanism 202 a may depend on the functionality provided by the native application 204 a .
- the native application 204 a can be set into a state in which the native application 204 a retrieves information from the Internet and displays information to the user 10 .
- the native application 204 a can be set into a state in which the native application 204 a is playing a song or a movie from the Internet.
- the native application 204 a can be set into a state in which the native application 204 a displays available restaurant reservations to the user 10 .
- a web access mechanism 202 b may include a resource identifier that includes a reference to a web resource (e.g., a page of a web application/website).
- a web access mechanism 202 b may include a uniform resource locator (URL) (i.e., a web address) used with hypertext transfer protocol (HTTP).
- URL uniform resource locator
- HTTP hypertext transfer protocol
- a user 10 selects a user selectable link 230 including a web access mechanism 202 b
- the user device 200 may launch a corresponding web-browser application 204 b and access a state (e.g., a page) of a web application/website.
- web access mechanisms 202 b include URLs for mobile-optimized sites and/or full sites.
- the web access mechanism 202 b included in a function record 330 may be used by a web browser to access a web resource that includes similar information and/or performs similar functions as would be performed by a native application 204 a that receives an application access mechanism 202 a of the function record 330 .
- the web access mechanism 202 b of a function record 330 may direct the web-browser application 204 b of the user device 200 to a web version of the native application 204 a referenced in the application access mechanisms 202 a of the function record 330 .
- the web access mechanism 202 b may direct the web-browser application 204 b of the user device 200 to a web page entry for the specific Mexican restaurant.
- An application download mechanism 202 c may indicate a location (e.g., a digital distribution platform 130 b ) where a native application 204 a can be downloaded in the scenario where the native application 204 a is not installed on the user device 200 . If a user 10 selects a user selectable link 230 including an application download mechanism 202 a , the user device 200 may access a digital distribution platform from which the referenced native application 204 a may be downloaded. The user device 200 may access a digital distribution platform 130 b using at least one of the web-browser application 204 b and one of the native applications 204 a.
- the search module 310 is configured to receive a query wrapper 210 from the user device 200 via the network 120 .
- a query wrapper 210 may include a search query 212 , which may include text, numbers, and/or symbols (e.g., punctuation) entered into the user device 200 by the user.
- the user 10 may enter the search query 212 into a search field 214 (e.g., a search box) of a graphical user interface (GUI) 240 of a search application 216 running on the user device 200 .
- GUI graphical user interface
- a user 10 may enter a search query 212 using a touchscreen keypad, a mechanical keypad, a speech-to-text program, or other form of user input.
- a search query 212 may be a request for information retrieval (e.g., search results) from the search system 300 .
- a search query 212 may be directed to retrieving a list of links 230 to application functionality or application states in examples where the search system 300 is configured to generate a list of access mechanisms 202 as search results 220 .
- a search query 212 directed to retrieving a list of links 230 to application functionality may indicate a user's desire to access functionality of one or more applications described by the search query.
- the query wrapper 210 may include additional data along with the search query 212 .
- the query wrapper 210 may include geo-location data 218 that indicates the location of the user device 200 , such as latitude and longitude coordinates.
- the user device 200 may include a global positioning system (GPS) receiver that generates the geo-location data 218 transmitted in the query wrapper 210 .
- GPS global positioning system
- the query wrapper 210 may also include an IP address 228 , which the search module 310 may use to determine the location of the user device 200 .
- the query wrapper 210 may also include additional data, including, but not limited to, platform data 222 (e.g., version of the operating system 224 , device type, and web-browser version), an identity of a user of the user device 200 (e.g., a username), partner specific data, and other data.
- platform data 222 e.g., version of the operating system 224 , device type, and web-browser version
- identity of a user of the user device 200 e.g., a username
- partner specific data e.g., a username
- other data e.g., partner specific data, and other data.
- the search module 310 can use the search query 212 and the additional data included in the query wrapper 210 to generate the search results 220 .
- the search module 310 can determine a geo-location of the user device 200 , which the search module 310 can use along with the search query 212 to generate the search results 220 .
- the search module 310 can determine the geo-location of the user device 200 based on the geo-location data 218 or other data (e.g., IP address 228 ) included in the query wrapper 210 .
- the search module 310 detects a location (e.g., a postal address, street name, city name, etc.) specified in the search query 212 (i.e., a query-specified location). In these implementations, the search module 310 can use the query-specified location along with the search query 212 to generate the search results 220 .
- the search module 310 performs a search for function records 330 included in the search data store 320 in response to the received query wrapper 210 (e.g., in response to the search query 212 and the geo-location data 218 ). In some implementations, the search module 310 generates result scores 226 for function records 330 identified during the search. The result score 226 associated with a function record 330 may indicate the relevance of the function record 330 to the search query 212 . A higher result score 226 may indicate that the function record 330 is more relevant to the search query 212 . The search module 310 may retrieve access mechanisms 202 from the scored function records 330 . The search module 310 can transmit a result score 226 along with an access mechanism 202 retrieved from a scored function record 330 in order to indicate the rank of the access mechanism 202 among other transmitted access mechanisms 202 .
- An application access mechanism 202 a included in a function record 330 may be an application resource identifier or a string that includes a reference to a native application 204 a and/or indicates one or more operations for execution by the native application 204 a on the user device 200 .
- An application resource identifier may be a string having an application specific scheme in some examples.
- the application resource identifier may include a reference to a native application 204 a , a domain name, and a path to be used by the native application 204 a to retrieve and display information to the user 10 .
- an application resource identifier is an application specific resource identifier that is defined by the developer of the application 204 .
- the search application 216 receives the application resource identifier and the operating system 224 may send the application resource identifier to the native application 204 a referenced in the application resource identifier.
- the native application 204 a referenced in the application resource identifier launches and is set into the state specified by the application resource identifier.
- the application access mechanism 202 a includes operations for the user device 200 to perform in addition to the operation(s) indicated in the application resource identifier.
- the search application 216 , the operating system 224 , and/or a native application 204 a on the user device 200 may perform the operations included in the application access mechanism 202 a .
- a script includes the operations. Examples of operations may include, but are not limited to, launching a native application 204 a , creating and sending a search request 212 (via a search wrapper 210 ) to an application server 112 , setting a current geographic location in a native application 204 a , making a restaurant reservation, sending a text message, and adding an appointment to a calendar.
- an application access mechanism 202 a may not include an application resource identifier. Instead, the application access mechanism 202 a includes one or more operations that reference a native application 204 a and indicate one or more operations for execution by the user device 200 . The one or more operations may include instructions for at least one of the search application 216 , the operating system 224 , and/or a native application 204 a on the user device 200 . In response to selection of the application access mechanism 202 a , the user device 200 may perform the operations included in the application access mechanism 202 a . In some examples, the operations may be included in a script.
- an application function may not be accessible using an application resource identifier.
- a function of the application may not include a corresponding application resource identifier that the application 204 may use to perform the function.
- some applications 204 may not be configured to receive application resource identifiers.
- an application access mechanism 202 for the native application 204 a can include one or more operations that cause the native application to perform the function that may not otherwise be accessible using an application resource identifier.
- the search application 216 may receive the one or more operations and execute the one or more operations to set the native application 204 a into the desired application state.
- the one or more operations may include launching the native application 204 a along with additional operations for the native application 204 a to perform.
- the search application 216 may initially trigger the native application 204 a to start and then wait for a period of time for the native application 204 a to start. Then the search application 216 may perform additional operations included in the received application access mechanism 202 , such as issuing a search instruction to the native application 204 a.
- a native application 204 a may be configured to directly receive the operations transmitted by the search system 100 .
- the native application 204 a may be launched according to the application access mechanism 202 and then the launched native application 204 a may directly perform the operations received from the search system 100 .
- a single native application 204 a can provide a variety of different functionalities.
- a restaurant reservation application can access reviews for a variety of different restaurants and set up reservations at a variety of different restaurants.
- a travel application can book hotels, book flights, and provide reviews for different travel destinations.
- the different functionalities associated with a single native application may be accessed using a plurality of different application access mechanisms.
- the search data store 320 may include function records 330 having different application access mechanisms 202 for accessing different restaurant reviews and setting up reservations.
- the search data store 320 may include function records 330 having different application access mechanisms 202 for booking hotels, booking flights, and accessing reviews for different travel destinations.
- the application access mechanisms 202 for a single native application 204 a may vary in complexity.
- the application access mechanisms 202 may cause a native application 204 a to launch (e.g., the operating system 224 may be instructed to launch the application 204 ) and then perform additional operations after launching, as described above.
- application access mechanisms 202 may cause an application 204 to launch into a default state (e.g., a default homepage) without performing any additional operations.
- a function record 330 including an application access mechanism 202 that causes an application 204 to launch into a default state may be thought of as an access mechanism 202 that is related to the native application 204 a , but not any particular state which may be accessed by the application 204 .
- the search module 310 may transmit additional data to the user device 200 along with the access mechanisms 202 and the result score(s) 226 .
- the search module 310 may transmit data (e.g., link data 232 , such as text and/or images) to be included in the user selectable links 230 .
- Data for the user selectable links 230 e.g., text and/or images
- link data e.g., link data 232
- the user device 200 displays the user selectable links 230 to the user 10 based on received link data 232 .
- Each user selectable link 230 may be associated with an access mechanism 202 included in the search results 220 , such that when a user 10 selects a link 230 , the user device 200 launches the application 204 referenced in the access mechanism 202 and sets the application 204 into the state specified by the access mechanism 202 .
- the user device 200 may receive a set of search results 220 from the search module 310 in response to transmission of the query wrapper 210 to the search system 300 .
- the GUI 240 of the search application 216 displays (e.g., renders) the search results 220 received from the search module 310 .
- the search application 216 may display the search results 220 to the user in a variety of different ways, depending on what information is transmitted to the user device 200 .
- the search application 216 may display the search results 220 to the user 10 as a list of user selectable links 230 including text and images.
- the text and images in the links 230 may include application names associated with the access mechanisms 202 , text describing the access mechanisms 202 , images associated with the application 204 referenced by the access mechanisms 202 (e.g., application icons), and images associated with the application state (e.g., application screen images) defined by the access mechanisms 202 .
- the search application 216 displays the search results 220 as a list of links 230 arranged under the search field 214 in which the user 10 entered the search query 212 . Moreover, the search application 216 may arrange the links 230 in order based on result scores 226 associated with the access mechanisms 202 included in the links 230 . In some examples, the search application 216 groups the links 230 together if the links 230 are related to the same application 204 (e.g., a native application 204 a ).
- Each of the links 230 includes link data 232 .
- each of the links 230 includes an image (e.g., an icon) and text (e.g., an application or business name) that may describe an application and a state of an application.
- Each of the links 230 may include an access mechanism so that if a user selects one of links 230 , the user device 200 launches the application and sets the application into a state that is specified by the access mechanism associated with the selected link.
- the user device 200 may arrange the links 230 based on result scores associated with the access mechanisms included in the links 230 .
- links 230 for the same application 204 may be combined together in the search results 220 displayed to the user 10 .
- Links 230 - 1 , 230 - 2 and link 230 - 3 reference the YELP® native application and the TRIPADVISOR® native application, respectively.
- the GUI 240 includes a header 242 , including the name “Yelp,” under which the links 230 - 1 , 230 - 2 are arranged.
- the header 242 may indicate that the links 230 - 1 , 230 - 2 arranged below the header 242 are associated with the YELP® native application 204 a .
- Selection of link 230 - 1 may cause the user device 200 to launch the YELP® native application 204 a and retrieve an IHOP® restaurant entry of the YELP® native application 204 a .
- Selection of link 230 - 2 may cause the user device 200 to launch the YELP® native application 204 a and retrieve a DENNY'S® restaurant entry of the YELP® native application 204 a .
- Selection of link 230 - 3 may cause the user device 200 to launch the TRIPADVISOR® native application 204 a and retrieve an entry for “Late night diners” in the TRIPADVISOR® native application 204 a (e.g., a search for “Late night diners”).
- the header 242 may include an expansion element 250 for displaying all or some of the links 230 associated with the header 242 .
- the expansion element 250 includes a collapsed state 250 a ( FIGS. 8F and 8H ) and an expanded state 250 b ( FIGS. 8G and 8I ) that are mutually exclusive. As described, the expansion element 250 toggles between the collapsed state 250 a and the expanded state 250 b .
- the expansion element 250 may include an expansion button separate from a collapse button.
- the search application 216 groups links 230 together when the links 230 are related to the same application 204 . In such a case, the search application 216 only displays the header 242 associated with the application 204 and a user 10 may select the expansion element 250 to view the links 230 . In other examples, the search application 216 displays a threshold number of links 230 (e.g., three links 230 ) and when the user 10 selects the expansion link 250 the remainder of the search results 220 , i.e., links 230 associated with the application 204 are displayed.
- a threshold number of links 230 e.g., three links 230
- Link 230 - 4 includes a web access mechanism 202 b (e.g., a URL). Selection of link 230 - 4 may cause the user device 200 to launch the web-browser application 204 b and retrieve an entry for “Late night diners” in the OPENTABLE® web-browser application 204 b developed by OpenTable, Inc.
- Link 230 - 5 includes an application download mechanism 202 c for the URBANSPOON® native application 204 a by InterActiveCorp. Selection of link 230 - 5 may cause the user device 200 to access a digital distribution platform 130 b ( FIG. 1B ) from which the URBANSPOON® native application 204 a can be downloaded and/or previewed.
- the search module 310 can be configured to transmit any combination of application access mechanisms 202 a , web access mechanisms 202 b , and application download mechanisms 202 c in the search results 220 .
- user devices 200 communicate with the search system 300 via a partner computing system (not illustrated).
- the partner computing system may be a computing system of a third party that may leverage the search functionality of the search system 300 .
- the partner computing system may belong to a company or organization other than that which operates the search system 300 .
- Example third parties which may leverage the functionality of the search system 300 may include, but are not limited to, internet search providers and wireless communications service providers.
- the user devices 200 may send search queries to the search system 300 and receive search results via the partner computing system.
- the partner computing system may provide a user interface to the user devices 200 in some examples and/or modify the search experience provided on the user devices 200 .
- FIG. 1B shows a plurality of data sources 130 .
- the data sources 130 may be sources of data which the search system 300 (e.g., the search module 310 ) may use to generate and update the data store 320 .
- the data retrieved from the data sources 130 can include any type of data related to application functionality and/or application states.
- Data retrieved from the data sources 130 may be used to create and/or update one or more databases, indices, tables (e.g., an access table), files, or other data structures included in the data store 320 .
- function records 330 may be created and updated based on data retrieved from the data sources 130 .
- some data included in a data source 130 may be manually generated by a human operator.
- Data included in the function records 330 may be updated over time so that the search system 300 provides up-to-date results.
- the data sources 130 may include a variety of different data providers.
- the data sources 130 may include data from application developers 130 a , such as application developers' websites and data feeds provided by developers.
- the data sources 130 may include operators of digital distribution platforms 130 b configured to distribute native applications 204 a to user devices 200 .
- Example digital distribution platforms 130 b include, but are not limited to, the GOOGLE PLAY® digital distribution platform by Google, Inc., the APP STORE® digital distribution platform by Apple, Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation.
- the data sources 130 may also include other websites, such as websites that include web logs 130 c (i.e., blogs), application review websites 130 d , or other websites including data related to applications. Additionally, the data sources 130 may include social networking sites 130 e , such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets). Data sources 130 may also include online databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants. Data sources 130 may also include additional types of data sources in addition to the data sources described above. Different data sources 130 may have their own content and update rate.
- social networking sites 130 e such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets).
- Data sources 130 may also include online databases 130 f that include, but are not limited to, data related to movies, television
- the search system 300 retrieves data from one or more of the data sources 130 .
- the data retrieved from the data sources 130 can include any type of data related to application functionality and/or application states.
- the search system 300 generates function records 330 based on the data retrieved from the data sources 130 .
- a human operator manually generates some data included in the function records 330 .
- the search system 300 may update data included in the function records 330 over time so that the search system 300 provides up-to-date results 220 .
- the search data store 320 includes a plurality of different function records 330 .
- Each function record 330 may include data related to a function of an application 204 and/or the state of the application 204 resulting from performance of the function.
- a function record 330 may include a function identifier (ID) 332 , application state information 334 , an application identifier (ID) 336 , and one or more access mechanisms 202 , 202 a , 202 b , 202 c used to access functionality provided by an application 204 .
- ID function identifier
- ID application state information
- ID application identifier
- the function ID 332 may be used to identify the function record 330 among the other function records 330 included in the search data store 320 .
- the function ID 332 may be a string of alphabetic, numeric, and/or symbolic characters (e.g., punctuation marks) that uniquely identifies the associated function record 330 .
- the function ID 332 describes a function and/or an application state in human readable form.
- the function ID 332 may include the name of the application 204 referenced in the access mechanism(s) 202 .
- a function ID 332 for an internet music player application may include the name of the internet music player application along with the song name that will be played when the internet music player application is set into the state defined by the application access mechanism included in the function record. Additionally or alternatively, the function ID 332 may be a human readable string that describes a function performed according to the access mechanism(s) 202 and/or an application state resulting from performance of the function according to the access mechanism(s) 202 . In some examples, the function ID 332 includes a string in the format of a uniform resource locator (URL) of a web access mechanism 202 b for the function record 330 , which may uniquely identify the function record 330 .
- URL uniform resource locator
- the function ID 332 may include the name “Yelp” along with a description of the application state described in the application state information 334 .
- the function ID 332 for a function record 330 that describes the restaurant named “The French Laundry” may be “Yelp—The French Laundry.”
- the function ID 332 may include a URL using a namespace other than “http://,” such as “func://,” which may indicate that the URL is being used as a function ID in a function record.
- the application state information 334 may include data that describes an application state into which an application 204 is set according to the access mechanism(s) 202 in the function record 330 . Additionally or alternatively, the application state information 334 may include data that describes the function performed according to the access mechanism(s) 202 included in the function record 330 .
- the application state information 334 can include text, numbers, and symbols that describe the application state.
- the types of data included in the application state information 334 may depend on the type of information associated with the application state and the functionality specified by the application access mechanism 202 a .
- the application state information 334 may include a variety of different types of data, such as structured, semi-structured, and/or unstructured data.
- the application state information 334 may be automatically and/or manually generated based on documents retrieved from the data sources 130 . Moreover, the application state information 334 may be updated so that up-to-date search results 220 can be provided in response to a search query 212 .
- the application state information 334 includes data that may be presented to the user 10 by an application 204 when the application 204 is set in the application state defined by the access mechanism(s) 202 .
- the application state information 334 may include data that describes a state of the native application 204 a after the user device 200 has performed the one or more operations indicated in the application access mechanism 202 a .
- the application state information 334 may include data that describes products (e.g., names and prices) that are shown when the shopping application is set to the application state defined by the access mechanism(s) 202 .
- the application state information 334 may include data that describes a song (e.g., name and artist) that is played when the music player application is set to the application state defined by the access mechanism(s) 202 .
- the types of data included in the application state information 334 may depend on the type of information associated with the application state and the functionality defined by the access mechanism(s) 202 .
- the application state information 334 may include information (e.g., text and numbers) related to a restaurant, such as a category of the restaurant, reviews of the restaurant, and a menu for the restaurant.
- the access mechanism(s) 202 may cause the application 204 (e.g., a native application 204 a or a web-browser application 204 b ) to launch and retrieve information for the restaurant.
- the application state information 334 may include information related to a song, such as the name of the song, the artist, lyrics, and listener reviews.
- the access mechanism(s) 202 may cause the application 204 to launch and play the song described in the application state information 334 .
- the search system 300 may generate application state information 334 included in a function record 330 in a variety of different ways.
- the search system 300 retrieves data to be included in the application state information 334 via partnerships with database owners and developers of native applications 204 a .
- the search system 300 may automatically retrieve the data from online databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants.
- a human operator manually generates some data included in the application state information 334 .
- the search system 300 may update data included in the application state information 334 over time so that the search system 300 provides up-to-date results 220 .
- the application ID 336 may be used to identify a native application 204 a associated with the function record 330 .
- the application ID 336 may be a string of alphabetic, numeric, and/or symbolic characters (e.g., punctuation marks) that uniquely identifies the associated native application 204 a .
- the application ID 336 the native application 204 a in human readable form.
- the application ID 336 may include the name of the application 204 referenced in the access mechanism(s) 202 .
- the application ID 336 for a restaurant finder application 204 may include the name of the restaurant finder application.
- a function record 330 including an application access mechanism 202 that causes an application 204 to launch into a default state may include application state information 334 describing the native application 204 a , instead of any particular application state.
- the application state information 334 may include the name of the developer of the application 204 , the publisher of the application 204 , a category 335 a (e.g., genre) of the application 204 , a description 335 b of the application 204 (e.g., a developer's description), and the price of the application 204 .
- the application state information 334 may also include security or privacy data about the application 204 , battery usage of the application 204 , and bandwidth usage of the application 204 .
- the application state information 334 may also include application statistics.
- Application statistics may refer to numerical data related to a native application 204 a .
- application statistics may include, but are not limited to, a number of downloads, a download rate (e.g., downloads per month), a number of ratings, and a number of reviews.
- FIG. 3B shows an example function record 330 associated with the OPENTABLE® application, developed by OpenTable, Inc.
- the OPENTABLE® application is a restaurant-reservation application that allows users to search for restaurants and make restaurant reservations.
- the OPENTABLE® application provides information about restaurants including descriptions of restaurants and user reviews of the restaurants.
- the example function record 330 of FIG. 3B describes an application state of the OPENTABLE® application in which the OPENTABLE® application accesses information for THE FRENCH LAUNDRY® restaurant.
- the example function record 330 includes a function ID 332 of “OPENTABLE—THE FRENCH LAUNDRY,” which may be used as a unique identifier to identify the function record 330 .
- the function ID 332 could include a URL as a unique identifier for the function record 330 .
- the function ID 332 may include the string “http://www.opentable.com/the-french-laundry” as a unique identifier for the function record 330 .
- such a function ID may be included in a web access mechanism 202 b of a function record 330 .
- the function ID 332 may have a different namespace than “http://,” such as “func://.”
- the function ID 332 could be a string of characters, numbers, and/or symbols that are not in human readable form. Each example is optional and may be combined with other examples.
- the example application state information 334 includes data fields 335 , such as a category 335 a of THE FRENCH LAUNDRY® restaurant, a description 335 b of THE FRENCH LAUNDRY® restaurant, user reviews 335 c of THE FRENCH LAUNDRY® restaurant, and additional data fields 335 .
- the restaurant category 335 a field may include the text “French cuisine” and “contemporary,” for example.
- the description field 335 b may include text that describes THE FRENCH LAUNDRY® restaurant.
- the user reviews field 335 c may include text of user reviews for THE FRENCH LAUNDRY® restaurant.
- the additional data fields 335 may include additional data for THE FRENCH LAUNDRY® restaurant that may not specifically fit within the other defined fields, such as a menu for the restaurant, prices, and operating hours for the restaurant.
- the function record 330 includes one or more access mechanism(s) 202 .
- the access mechanism(s) 202 may include a reference to the OPENTABLE® application 204 .
- An example application access mechanism 202 a for the function record 330 may include a reference to the OPENTABLE® native application 204 a along with one or more operations to be performed by the user device 200 .
- the application access mechanism 202 a may include an application resource identifier and/or one or more operations that cause the user device 200 to access the entry for THE FRENCH LAUNDRY® restaurant in the OPENTABLE® native application.
- a function record 330 includes multiple different application access mechanisms 202 , 202 a , 202 b , 202 c that may include a variety of information.
- the application access mechanism 202 may include edition information that indicates the application edition with which the application access mechanism 202 is compatible.
- the edition information may indicate the operating system 224 with which the application access mechanism 202 is compatible.
- different application access mechanisms 202 may be associated with different editions of a native application 204 a .
- a native application edition (hereinafter “application edition”) refers to a particular implementation or variation of a native application 204 a .
- an application edition may refer to a version of a native application 204 a , such as a version 1.0 of a native application 204 a or a version 2.0 of a native application 204 a .
- an application edition may refer to an implementation of a native application 204 a for a specific platform, such as a specific operating system 224 .
- the different application access mechanisms 202 included in a function record 330 may cause the corresponding application editions to launch and perform similar functions. Accordingly, the different application access mechanisms 202 included in a function record 330 may cause the corresponding application editions to be set into similar application states. For example, if the different application access mechanisms 202 reference different editions of an information retrieval application, the different application access mechanisms 202 may cause the corresponding application editions to retrieve similar information. In another example, if the different application access mechanisms 202 reference different editions of an internet music player application, the different application access mechanisms 202 may cause the corresponding application editions to play the same song.
- a function record 330 for a native application that retrieves restaurant information may include multiple different application access mechanisms 202 for multiple different application editions. Assuming the function record 330 is associated with a specific Mexican restaurant, the application access mechanisms 202 for the different application editions may cause each application edition to retrieve information for the same specific Mexican restaurant. For example, a first application access mechanism 202 may cause a first application edition (e.g., on a first OS) to retrieve information for the specific Mexican restaurant. A second application access mechanism 202 may cause a second application edition (e.g., on a second OS) to retrieve information for the specific Mexican restaurant.
- the search system 300 can determine whether to transmit the application access mechanism 202 in the search results 220 based on whether the user device 200 can handle the application access mechanism 202 .
- the search system 300 generates search results 220 including a list of application access mechanisms 202 that are included in selected function records 330 .
- the search system 300 analyzes the search query 212 received from the user device 200 .
- the search system 300 then identifies a set of function records 330 based on the received search query 212 .
- the search system 300 may identify the set of function records 330 based on matches (e.g., text matches) between terms of the search query 212 and terms of the application state information 334 included in the identified function records 330 .
- the search system 300 processes (e.g., scores) the identified set of function records 330 . For example, the search system 300 may determine how well the function records 330 match the received search query 212 . The search system 300 may then select the application access mechanisms 202 from the function records 330 that best match the received search query 212 . The search system 300 transmits search results 220 including the selected application access mechanisms 202 to the user device 200 that generated the search query 212 . The search system 300 may also transmit additional data along with the application access mechanisms 202 . For example, the search system 300 may transmit data (e.g., link data 232 , such as text and/or images) to be included in user selectable links 230 .
- data e.g., link data 232 , such as text and/or images
- the search system 300 may identify one or more function records 330 that include multiple application access mechanisms 202 . In these scenarios, the search system 300 may process (e.g., score) the identified set of function records 330 in the manner described above. For each identified function record 330 including multiple application access mechanisms 202 , the search system 300 may select which application access mechanisms 202 to transmit to the user device 200 . In some examples, the search system 300 transmits each of the application access mechanisms 202 of the identified function record 330 to the user device 200 so that the user device 200 may determine which application access mechanism 202 to use. In other examples, the search system 300 determines which of the multiple application access mechanisms 202 to transmit to the user device 200 based on information included in the query wrapper 210 received from the user device 200 . For example, the search system 300 may select and transmit one or more of the application access mechanisms 202 that are likely to be compatible with the user device 200 , e.g., based on a version of the operating system 224 of the user device 200 .
- the search system 300 may identify one or more function records 330 that include application access mechanisms 202 a and one or more web access mechanisms 202 b . In these scenarios, the search system 300 may process (e.g., score) the identified set of function records 330 in the manner described above. For each identified function record 330 including application access mechanisms 202 a and a web access mechanism 202 b , the search system 300 may determine whether to transmit the web access mechanism 202 b and the application access mechanisms 202 a . In some examples, the search system may transmit the web access mechanism and each of the multiple application access mechanisms to the user device so that the user device can determine which of the access mechanisms to use. In other examples, the search system may determine whether any of the application access mechanisms should be transmitted to the user device.
- the search system can refrain from sending the application access mechanisms to the user device. Instead, the search system may transmit the web access mechanism to the user device. As described above, the user device may use a web browser to access the web resource identified in the web access mechanism.
- the search results 220 include an advertisement 371 .
- the advertisement icon 371 is indicative of an advertisement from an advertiser.
- An advertiser may generally refer to any party that advertises on search results 220 displayed on a user screen 201 (e.g., a display or touchscreen) generated by a search system 300 , either to advertise its own goods and services or the goods and services of a related party.
- An advertiser can advertise, for example, a business, products, services, media content, or any other suitable item of commerce referenced in an application 204 .
- the search results 220 displayed on a user screen 201 provide advertisers with a medium to advertise websites or other services.
- an advertiser can register one or more keywords and an advertisement with a company that provides the service of the search and/or provides the search result page, such that when a search system 300 user 10 includes the one or more keywords in a search query 212 , the search system 300 may also include the advertisements 371 corresponding to the one or more keywords in the search results 220 .
- the search system 300 can sell the keywords according to different advertising schemes, including cost per number of impressions (e.g., number of views), cost per click-through, and cost per action. According to the cost per number of views model, the advertiser agrees to pay a specified amount each time the advertisement is displayed a specified number of times on a result page in response to a relevant search query 212 .
- the advertiser agrees to a pay a specified amount each time a user 10 clicks on the advertisement 271 displayed in response to a relevant search query 212 .
- the advertiser agrees to pay a specified amount each time a user 10 performs a specific action in response to the advertisement 271 being displayed. For example, the advertiser can agree to pay the specified amount when a user 10 clicks on a hyperlink in the advertisement 271 and makes a purchase from the website associated with the advertisement 271 .
- an advertisement system 360 generates one or more advertisements 371 for the user 10 .
- the advertisement system 360 transmits (e.g., serves) the generated advertisement 371 to the computing device 200 of the user 10 .
- the computing device 200 of the user 10 may display on the display 201 of the user computing device 200 the advertisement 371 along with the search results 220 .
- the advertisement 371 may include information indicating that the advertisement 371 is a sponsored result.
- the advertisement 371 may include text indicating that the sponsored application is a “Sponsored Result” an “Advertisement” or an “AD.”
- the advertisement system 360 includes an advertisement data store 362 that the advertisement system 360 may use to generate advertisements 371 .
- the advertisement data store 362 includes data associated with a plurality of different advertisements 371 .
- the data associated with an advertisement 371 may be referred to as an “an advertisement record” (e.g., advertisement record 370 of FIG. 3C ).
- the advertisement data store 362 may include a plurality of advertisement records 370 that each include data for a different advertisement 371 .
- the advertisement records 370 may be generated by advertisers (using advertiser devices 368 ), by advertisement agencies, or by providers of any of the search and advertisement generation functionalities described above (i.e., by providers of one or more of the search system 300 and the advertisement system 360 ).
- An advertisement 371 may include an application advertisement or an entity (e.g., business) advertisement.
- An advertisement record 370 may include a variety of different types of data related to an advertisement 371 .
- An advertisement record 370 may include data that identifies the advertisement record 370 .
- the advertisement record 370 may include an advertisement name and/or advertisement identifier (i.e., an “advertisement ID”) 372 that identifies the advertisement record 370 among the different advertisement records 370 in the advertisement data store 362 .
- An advertisement record 370 may also include a sponsored application name and/or sponsored application ID that identifies a sponsored application and/or a business associated with the advertisement record 370 .
- a sponsored application 204 may be an application 204 for which an advertiser has paid to have the application 204 displayed to a user 10 .
- an advertiser may pay for a sponsored application 204 to be advertised along with search results generated by the search system 300 .
- the advertisement record 370 includes advertisement content 376 used to generate an advertisement 371 for the sponsored application 204 of the advertisement record 372 .
- advertisement content may include text, images (e.g., icons), animations, and videos associated with the sponsored application 204 .
- the advertisement 371 (e.g., text and images) for a sponsored application 204 may be displayed along with the list of applications 204 included in the search results 220 on a user's computing device 200 .
- the advertisement record 370 may also include advertisement parameters 378 .
- Advertisement parameters 378 may define budget parameters 392 associated with advertising the sponsored application 204 .
- Advertisement parameters 378 may also define timing parameters 394 associated with advertising the sponsored application 204 , such as start and stop dates for advertising the sponsored application 204 and/or time(s) of day during which the sponsored application 204 is to be advertised.
- advertisement parameters 378 may specify user parameters associated with advertising the sponsored application 204 , such as, e.g., one or more search query languages for which the sponsored application 204 is to be advertised and/or the number of times a particular advertisement is to be displayed to each user 10 . Other parameters are possible as well.
- Advertisement parameters 378 may also include a variety of different types of targeting parameters 380 .
- a targeting parameter 380 may refer to a condition that should be satisfied before the advertisement system 360 generates an advertisement 371 .
- the advertisement system 360 may use targeting parameters 380 in an advertisement record 370 to determine whether to generate an advertisement 371 for the sponsored application 204 of the advertisement record 370 .
- the advertisement system 360 may generate an advertisement 371 for the sponsored application 204 listed in an advertisement record 370 when one or more targeting parameters 380 of the advertisement record 370 are satisfied.
- Example types of targeting parameters 380 may include, but are not limited to, keyword targeting parameters 382 and platform targeting parameters 384 .
- Additional advertisement (e.g., target) parameters 378 may include, e.g., time-slotting, day-parting, category, geographical, contextual, demographic, behavioral, platform, device, and partner parameters.
- the advertisement system 360 may generate an advertisement 371 for a sponsored application 204 in one or more of the following instances: 1) during one or more designated time slots; 2) on one or more given days or during one or more specified portions thereof; 3) for one or more particular categories of applications 204 included in the search results 220 ; 4) for users 10 located in one or more geographic locations or regions; 5) based on context (e.g., for one or more states of the user's computing device 200 , the search system 300 , and/or the advertisement system 360 ); 6) for one or more specified user types or groups; 7) when one or more user behaviors are detected (e.g., when the user 10 interacts with the user's computing device 200 in a particular manner); 8) for one or more platform (e.g., operating system) and device types
- platform e
- An advertisement record 370 may include a targeting parameter function 381 .
- a targeting parameter function 381 may define which of the targeting parameters 380 of the advertisement record 370 should be satisfied in order to generate an advertisement 371 .
- the targeting parameter function 381 includes a single targeting parameter 380 .
- the advertisement system 360 may generate an advertisement 371 for a sponsored application 204 based on satisfaction of a single targeting parameter 380 , such as a similarity targeting parameter 381 or a keyword targeting parameter 384 .
- the targeting parameter function 381 includes multiple different targeting parameters 380 .
- the advertisement system 360 may generate an advertisement 371 for a sponsored application 204 based on satisfaction of multiple targeting parameters 380 , such as one or more similarity targeting parameters 381 , one or more keyword targeting parameters 382 , and a platform targeting parameter 384 .
- multiple targeting parameters 380 such as one or more similarity targeting parameters 381 , one or more keyword targeting parameters 382 , and a platform targeting parameter 384 .
- the targeting parameter function 381 may include a Boolean function that includes the multiple targeting parameters 380 .
- FIG. 4A shows an example search module 310 that includes a query analysis module 400 , a consideration set generation module 402 (hereinafter “set generation module 402 ”), and a consideration set processing module 404 (hereinafter “set processing module 404 ”).
- the query analysis module 400 receives the query wrapper 210 and analyzes the received search query 212 .
- the query analysis module 400 may perform various analysis operations on the received search query 212 , which may include, but are not limited to, tokenization of the search query 212 , filtering of the search query 212 , stemming, synonymization, and stop word removal.
- the query analysis module 400 detects a query-specified location included in the search query 212 .
- the set generation module 402 identifies a plurality of function records 330 based on the received search query 212 . In some examples, the set generation module 402 identifies the function records 330 based on matches between terms of the search query 212 and terms in the function records 330 . For example, the set generation module 402 may identify the function records 330 based on matches between tokens generated by the query analysis module 400 and words included in the function records 330 , such as words included in the function IDs 332 and/or the application state information 334 .
- the consideration set 350 of function records 330 may refer to the function records 330 that are to be scored by the set processing module 404 .
- the set generation module 402 may determine the geo-location of the user device 200 based on data included in the query wrapper 210 . In additional examples, if the query analysis module 400 detects a query-specified location, the set generation module 402 uses the query-specified location as the search location. In some examples, the set generation module 402 uses the geo-location of the user device 200 as the search location (e.g., to filter function records 330 based on location).
- the set processing module 404 may score the function records 330 in the consideration set 350 in order to generate a set of search results 220 .
- the scores 226 associated with the function records 330 may be referred to as “result scores.”
- the set processing module 404 may determine a result score 226 for each of the function records 330 in the consideration set 350 .
- the result scores 226 associated with a function record 330 may indicate the relative rank of the function record 330 (e.g., by the access mechanisms 202 ) among other function records 330 . For example, a larger result score 226 may indicate that a function record 330 is more relevant to the received search query 212 .
- the set processing module 404 selects application access mechanisms 202 from the selected function records 330 (e.g., the highest scoring function records).
- the set processing module 404 transmits the selected application access mechanisms 202 to the user device 200 that generated the search query 212 .
- the set processing module 404 may also transmit the result scores 226 associated with the selected application access mechanisms 202 .
- an application access mechanism 202 may be associated with the result score 226 of the function record 330 from which the application access mechanism 202 was selected.
- the information conveyed by the search results 220 may depend on how the result scores 226 are calculated by the set processing module 404 .
- the result scores 226 may indicate the relevance of an application function or application state to the search query 212 , the popularity of an application function or state, or other properties of the application function or state, depending on what parameters the set processing module 404 uses to score the function records 330 .
- the set processing module 404 may generate result scores 226 for function records 330 in a variety of different ways. In some implementations, the set processing module 404 generates a result score 226 for a function record 330 based on one or more scoring features.
- the scoring features may be associated with the function record 330 and/or the search query 212 .
- a function record scoring feature (hereinafter “record scoring feature”) may be based on any data associated with a function record 330 . For example, record scoring features may be based on any data included in the application state information 334 of the function record 330 .
- Example record scoring features may be based on metrics associated with a person, place, or thing described in the function record 330 .
- Example metrics may include the popularity of a place described in the function record 330 and/or ratings (e.g., user ratings) of the place described in the function record 330 .
- a metric may be based on the popularity of the song described in the function record 330 and/or ratings (e.g., user ratings) of the song described in the function record 330 .
- the record scoring features may also be based on measurements associated with the function record 330 , such as how often the function record 330 is retrieved during a search and how often access mechanisms 202 of the function record 330 are selected by a user 10 . Record scoring features may also be based on whether the function record 330 includes an application access mechanism 202 that leads to a default state or a deeper native application state.
- a query scoring feature may include any data associated with the search query 212 .
- query scoring features may include, but are not limited to, a number of words in the search query 212 , the popularity of the search query 212 , and the expected frequency of the words in the search query 212 .
- a record-query scoring feature may include any data generated based on data associated with both the function record 330 and the search query 212 that resulted in identification of the function record 330 by the set generation module 402 .
- record-query scoring features may include, but are not limited to, parameters that indicate how well the terms of the search query 212 match the terms of the application state information 334 of the identified function record 330 .
- the set processing module 404 may generate a result score 226 for a function record 330 based on at least one of the record scoring features, the query scoring features, and the record-query scoring features.
- the set processing module 404 may determine a result score 226 for a function record 330 based on one or more of the scoring features listed herein and/or additional scoring features not explicitly listed.
- the set processing module 404 may include one or more machine learned models (e.g., a supervised learning model) configured to receive one or more scoring features.
- the one or more machine learned models may generate result scores 226 based on at least one of the record scoring features, the query scoring features, and the record-query scoring features.
- the set processing module 404 may pair the search query 212 with each function record 330 and calculate a vector of features for each (query, record) pair.
- the vector of features may include one or more record scoring features, one or more query scoring features, and one or more record-query scoring features.
- the set processing module 404 may then input the vector of features into a machine-learned regression model to calculate a result score for the function record 330 .
- the machine-learned regression model may include a set of decision trees (e.g., gradient boosted decision trees).
- the machine-learned regression model may include a logistic probability formula.
- the machine learned task can be framed as a semi-supervised learning task, where a minority of the training data is labeled with human curated scores and the rest are used without human labels.
- the result scores 226 associated with the function records 330 may be used in a variety of different ways.
- the set processing module 404 and/or the user device 200 may rank the access mechanisms 202 based on the result scores 226 associated with the access mechanisms 202 .
- a larger result score may indicate that the access mechanism 202 (e.g., the function or application state) is more relevant to a user than an access mechanism 202 having a smaller result score.
- the user device 200 may display the links 230 for access mechanisms 202 having larger result scores 226 nearer to the top of the results list (e.g., near to the top of the screen).
- the user device 200 may display the links 230 for access mechanisms 202 having lower result scores 226 farther down the list (e.g., off screen).
- the user device 200 groups together the links 230 associated with the same native application 204 a.
- the set processing module 404 filters the function records 330 based on one or more criteria.
- the criteria may be based on characteristics of the function records 330 and/or characteristics associated with the user 10 .
- the set processing module 404 filters the function records 330 based on application ID 336 . If the set generation module 402 generates a consideration set 350 of function records 330 (or function IDs 332 corresponding to function records 330 , as shown) and the consideration set 350 includes a number of function records 330 associated with the same application 204 , the set processing module 404 may filter the function records 330 (e.g., based on application ID 336 ) to reduce the consideration set 350 .
- the set processing module 404 may restrict the number of function records 330 associated with any one application 204 to a maximum number of function records 330 for that application 204 . For example, if the consideration set 350 includes five function records 330 for the YELP® native application 204 a , but the set processing module 404 has a policy that limits the number of function records 330 for any given application 204 to three function records 330 , the set processing module 404 can eliminate two of the five function records 330 from the consideration set 350 (or results 220 ). The set processing module 404 may eliminate function records 330 based on their result score 226 and/or some other metric, such as location, user preference, etc. The set processing module 404 may implement a policy of limiting function records 330 associated with one or more applications 204 to limit the result set 220 to a manageable number or a number practical for displaying on the user device 200 .
- the set processing module 404 groups the function records 330 .
- the set processing module 404 may group by application ID 336 , access mechanism 202 , application state information 334 , a result score 226 , or some other attribute associated with the function record 330 .
- the search application 216 can display the search results 220 in an organized or ordered fashion.
- result score 226 the search application 216 can display the search results 220 in an order based on relevancy to the search query 212 .
- the set processing module 404 may group function records 330 by multiple grouping attributes, for example, by result score 226 and application ID 336 .
- the consideration set 350 includes three function records 330 for the YELP® native application 204 a (i.e., function records 330 have example function IDs 332 of Yelp A, Yelp B, and Yelp C).
- the set processing module 404 groups the function records 330 by result score 226 and application ID 336 .
- the resulting consideration set 350 (or result set 220 ) includes a list of function records 330 (or function IDs 332 referencing the function records 330 , as shown) with the three function records 330 for the YELP® native application 204 a in consecutive order based on their corresponding result score 226 .
- Other methods of grouping are possible as well.
- the processing module 404 filters the function records 330 based on one or more criteria.
- the criteria may be based on characteristics of the function records 330 and/or characteristics associated with the user 10 .
- the set processing module 404 filters the function records 330 based on the application ID 336 . If the set generation module 402 generates a consideration set of function records 330 (or function IDs 332 corresponding to function records 330 , as shown) and the consideration set 350 includes a number of function records 330 associated with the same application 204 , the set processing module 404 may filter the function records 330 (e.g., based on the application ID 336 ) to reduce the consideration set 350 .
- the set processing module 404 restricts the number of function records 330 associated with any one application 204 to a maximum number of function records 330 for that application 204 ; however, in other examples, the set processing module 404 does not restrict the number of function records 330 . For example, if the consideration set 350 includes ten function records 330 for YELP® native application 204 a shown as APP 1 in FIG. 4C , the set processing module 404 may provide all the function records 330 of the consideration set 330 (or result set 220 ).
- the set processing module 404 groups the function records 330 by the application ID 336 , access mechanism 202 , application state information 334 , result score 226 , or some other attribute associated with the function records 330 , allowing the search application 216 to display the search results 220 in an organized and orderly fashion. Also, by grouping the function records 330 by the result score 226 , the search application 216 can display the search results 220 in an order based on the relevancy of the search query 212 . Moreover, the set processing module 404 may group function records 330 by multiple grouping attributes resulting in groups and sub-groups, for example, by result score 226 and application ID 336 . In the example shown in FIG.
- the consideration set 350 includes ten function records 350 for APP 1 e.g., YELP® native application 204 a (i.e., function records 330 have example function IDs 332 of APP 1 A, APP 1 B, APP 1 C, APP 1 D, APP 1 E, APP 1 F, APP 1 G, APP 1 H, APP 1 I, and APP 1 J).
- the consideration set 330 also includes three function records 350 for APP 2 (i.e., function records 330 have example function IDs 332 of APP 2 A, APP 2 B, and APP 2 C).
- the set processing module 404 groups the function records 330 by result score 226 and application ID 226 .
- the resulting consideration set 350 (or result set 220 ) includes a list of function records 330 (or function IDs 332 referencing the function records 330 , as shown) with all ten function records 330 for APP 1 e.g., YELP® native application 204 a in consecutive order based on their corresponding result score 226 .
- a function record 330 is not available for an application 204 , therefore, the consideration set 330 includes the application 204 without any function records 330 associated with the application 204 , as shown in the ungrouped set. Other methods of grouping are possible as well.
- an example advertisement system 360 includes an advertisement data store 362 , a record generation module 364 , and advertisement generation module 366 .
- the advertisement system 360 generates one or more advertisements 371 for a user 10 .
- the advertisement system 360 receives advertisement data from an advertiser device(s) 368 and the record generation module 364 .
- the record generation module 364 generates an advertisement record 370 and stores the advertisement record 370 in the advertisement data store 362 .
- the advertisement data store 362 includes data associated with the plurality of different advertisements 371 , i.e., advertisement records 370 .
- the advertisement record 370 may include a variety of different types of data related to an advertisement 371 .
- An advertisement record 370 may include data that identifies the advertisement record 370 (see FIGS. 3C and 3D ).
- the advertisement system 360 includes an advertisement generation module 366 in communication with the user device 200 and the search system 300 .
- the advertisement generation module 366 receives search results from the search system 300 (e.g., search module 310 ), the query wrapper 210 from the user device 200 , and based on the received search results 220 and the query wrapper 210 , the advertisement generation module 366 determines the advertisements 371 to send to the user device 200 .
- the advertisement generation module 366 identifies one or more advertisement records 370 based on the received search results 220 and the received query wrapper 210 . In some examples, the advertisement generation module 366 identifies advertisement records 370 based on matches between terms of the search query 212 and terms in the advertisement records 370 .
- the advertisement generation module 366 may identify the advertisement records 370 based on matches between tokens generated by the query analysis module 400 and words included in the advertisement records 370 , such as words included in the advertisement ID 372 and/or any other parameter associated with the advertisement record 370 .
- the advertisement generation module 366 may determine the geo-location of the user device 200 based on data included in the query wrapper 210 .
- the advertisement generation module 366 may filter advertisements 371 associated with the geo-location of the user device 200 , and send the selected advertisements 371 based on the geo-location of the user device 200 .
- the advertisement generation module 366 is in communication with the search data store 320 . In some examples, the advertisement generation module 366 associates a different advertisement 371 with one or more search results 220 (e.g., access mechanism 202 ) displayed on the user display 201 .
- search results 220 e.g., access mechanism 202
- FIG. 5A provides an example arrangement of operations for a method 500 a of performing a search.
- the method 500 a includes receiving, at a computing device 910 ( FIG. 9 ) of the user device 200 , search results 220 transmitted from a search system 300 in communication with the computing device 200 .
- the search results 220 include a header 242 for an application 204 executable on the computing device 910 and application access mechanisms 202 associated with the header 242 .
- Each application access mechanism 202 has a reference to the application 204 and indicates one or more performable operations for the application 204 .
- the method 500 further includes displaying, on a display 201 , 980 ( FIG.
- a graphical user interface 240 in communication with the computing device 910 , a graphical user interface 240 including the header 242 and user selectable access links 230 grouped with the header 242 .
- Each access link 230 is associated with an application access mechanism 202 for the application 204 .
- FIG. 5B provides an example arrangement of operations for a method 500 b of performing a search.
- the method 500 includes receiving, at a computing device 910 ( FIG. 9 ) of the user device 200 , search results 220 transmitted from a search system 300 in communication with the computing device 200 .
- the search results 220 include a header 242 for an application 204 executable on the computing device 910 and application access mechanisms 202 associated with the header 242 .
- Each application access mechanism 202 has a reference to the application 204 and indicates one or more performable operations for the application 204 .
- the method 500 further includes displaying, on a display 201 , 980 ( FIG.
- a graphical user interface 240 in communication with the computing device 910 , a graphical user interface 240 including the header 242 , an expansion element 370 associated with the header 242 , and user selectable access links 230 grouped with the header 242 .
- Each access link 230 is associated with an application access mechanism 202 for the application 204 .
- the expansion element 250 has a collapsed state 250 a and an expanded state 250 b (see FIG. 8F ).
- the method 500 b includes displaying on the display 201 all of the user selectable access links 230 grouped with the header 242 .
- the method 500 b when the expansion element 250 is in the expanded state 250 b , the method 500 b includes displaying on the display 201 a threshold number of the user selectable access links 230 grouped with the header 242 , the threshold number being less than a total number of the user selectable access links 230 grouped with the header 242 .
- the threshold number may be greater than zero.
- the search results 220 include an advertisement 271 associated with a header 242 .
- the GUI 240 displays the advertisement 271 in the header 242 or associated with a user selectable access link 230 grouped with the header 242 .
- the search results 230 include an advertisement record 370 including one or more of an advertisement name 372 , an advertisement identification 372 , a sponsored link name 374 , a sponsored link identification 374 , advertising content 376 , or advertisement parameters 378 .
- the method 700 B includes displaying in the GUI 240 the expansion element 250 in the header 242 .
- the method 500 b includes displaying in the GUI 240 the expansion element 250 among the user selectable access links 230 grouped with the header 242 .
- the method 500 b may include displaying on the display 201 a list of all of the user selectable access links 230 grouped with the header 242 and displaying on the display 201 the expansion element 250 as a last element in the list 230 .
- the method 500 b may include displaying on the display 201 a list of all of the threshold number of the user selectable access links 230 grouped with the header 242 and displaying on the display 201 the expansion element as a last element in the list 230 .
- the header 242 includes a name of the associated application 204 .
- the method 500 may include displaying in the graphical user interface 240 a header link 244 in the header 242 indicating an installation state of the associated application 204 as being installed or uninstalled.
- the method 500 may include executing the application 204 on the computing device 910 ; and when the installation state of the associated application 204 is uninstalled, the method 500 may include downloading the application 204 to non-transitory memory 920 ( FIG.
- the method 500 includes directing the user device 200 to a digital distribution platform 130 b to download the application 204 .
- the user 10 may choose to install the application 204 on the user device 200 .
- the method 500 includes displaying in the graphical user interface 240 (see FIG. 2 ) an ungrouped access link 230 having an associated application access mechanism 202 for an application 204 different from the application 204 associated with the header 242 .
- the method 500 may include displaying in the graphical user interface 240 an indicator 244 , 244 a , 244 b in the ungrouped access link 230 indicating an installation state of the associated application 204 as being installed or uninstalled.
- the method 500 may include executing the application 204 on the computing device 910 ; and when the installation state of the associated application 204 is uninstalled, the method 500 may include downloading the application 204 to non-transitory memory 920 in communication with the computing device 910 and executing the application 204 on the computing device 910 .
- the method 500 includes directing the user device 200 to a digital distribution platform 130 b , where the user 10 may choose to install the application 204 on the user device 200 .
- the method 500 in response to receiving a user selection of an ungrouped access link 230 , when the installation state of the associated application 204 is uninstalled, the method 500 includes executing a web browser on the computing device 910 and accessing functionality of the associated application 204 through the web browser.
- the method 500 may include displaying the access links 230 in an order under the header 242 based on a score 226 associated with the application access mechanism 202 of each access link 230 .
- the method 500 includes receiving, at the computing device 910 , search criteria (i.e., search query 212 ) through the graphical user interface 240 , generating, at the computing device 910 , a query wrapper 210 including the search criteria 212 , and transmitting the query wrapper 210 from the computing device 910 to the search system 300 .
- search criteria i.e., search query 212
- the method 500 c includes receiving at a computing device 910 , search criteria (i.e., search query 212 ) from a user device 200 in communication with the computing device 910 .
- the method includes executing, using the computing device 910 , a search of a data store 320 in communication with the computing device 910 using the search criteria (i.e., search query 212 ).
- the method 500 c includes receiving, at the computing device 910 , function records 330 from the data store 320 in response to the executed search.
- Each of the function records 330 includes an application identifier 336 , an application access mechanism 202 , 202 a , 202 b , 202 , and application state information 334 .
- the application access mechanism 202 , 202 a , 202 b , 202 has a reference to a native application 204 a and indicates one or more performable operations for the native application 204 a .
- the application state information 334 describes a state of the native application 204 a when the native application 204 a performs the one or more operations indicated in the application access mechanism 202 , 202 a , 202 b , 202 .
- the method 500 c includes grouping the function records 330 , at the computing device 910 , based on the application identifiers 336 .
- the method includes transmitting header search results 244 from the computing device 910 to the user device 200 for display on the user device 200 (e.g., a display 201 ).
- the header search results 244 include a header 242 for each group of function records 330 and an expansion element 250 associated with each header 242 .
- the method 500 c also includes receiving, at the computing device, an expansion command from the user device 200 .
- the expansion command indicative of a user selection of an expansion element 250 .
- the method 500 c also includes transmitting access mechanism search results 202 , 202 a , 202 b , 202 from the computing device to the user device 200 .
- the access mechanism search results include the application access mechanisms 202 , 202 a , 202 b , 202 of the group of function records 330 is associated with the header 242 of the selected expansion element 250 .
- the access mechanism search results include link data 232 for each application access mechanism 202 , 202 a , 202 b , 202 .
- the link data 232 includes at least one of text or an image associated with the state of the application referenced by the corresponding application access mechanism 202 , 202 a , 202 b , 202 .
- the method 500 c further includes filtering the function records 330 , at the computing device, based on their application identifiers 336 by limiting a number of function records 330 per application identifier 336 . Additionally, the method 500 c includes scoring the function records 330 based on a relevancy of the function record 330 to the search criteria, and ordering the function records 330 based on their scores 226 . The scoring is based on the application state information 334 of the function record 330 . In some examples, executing the search includes identifying function records 330 of the data store 320 based on matches between terms of the search criteria and terms of the application state information 334 of the function records 330 .
- At least one of the application access mechanisms 202 , 202 a , 202 b , 202 includes an application resource identifier referencing a native application 204 a , wherein the application resource identifier is in an application-specific format specific for the referenced native application 204 a and indicates one or more performable operations for the user device 200 .
- the application resource identifier includes a domain name and a path to be used by the referenced native application 204 a to retrieve and display information.
- the application access mechanism 202 , 202 a , 202 b , 202 includes instructions for at least one of a search application, an operating system, or the referenced native application 204 a when executed on user device 200 .
- At least one of the application access mechanisms 202 , 202 a , 202 b , 202 includes a web address that when executed by the user device 200 causes the user device 200 to execute a web browser and access a web version of the native application 204 a referenced in the application access mechanism 202 , 202 a , 202 b , 202 .
- FIG. 6A provides an example arrangement of operations for a method 600 a of performing a search.
- the method 600 a is described with respect to the user device 200 , the search system 300 , and the search module 310 as illustrated in FIG. 2 .
- the search module 310 receives the query wrapper 210 .
- the search module 310 analyzes data (e.g., the search query 212 ) included in the query wrapper 210 .
- the query analysis module 400 analyzes the search query 212 (and/or other data) of the query wrapper 210 .
- the search module 310 may determine the geo-location of the user device 200 in terms of latitude and longitude values that indicate the latitude and longitude of the user device 200 . Additionally, or alternatively, the search module 310 may determine the geo-location of the user device 200 in terms of an address, such as a postal address (e.g., a street address, zip code, and/or city name). The geo-location of the user device 200 determined by the search module 310 may be a point location (e.g., a latitude/longitude or a postal address). The user device 200 may generate geo-location data 218 (e.g., latitude and longitude) and the query wrapper 210 including the geo-location data 218 .
- geo-location data 218 e.g., latitude and longitude
- the search module 310 determines the geo-location of the user device 200 based on data (e.g., an IP address 228 ) included in the query wrapper 210 . For example, the search module 310 may look up the location of the user device 200 using the IP address 228 . The search module 310 may communicate with a remote server 110 that can provide geo-location data for the user device 200 based on the IP address 228 .
- data e.g., an IP address 228
- the search module 310 may communicate with a remote server 110 that can provide geo-location data for the user device 200 based on the IP address 228 .
- the method 600 a includes executing a search, for example, by identifying and selecting function records 330 based on the data of the query wrapper 210 (e.g., the search query 212 ).
- the method 600 a includes generating the search results 220 .
- the search system 300 e.g., in particular, the search module 310
- the set processing module 404 generates search results 226 including a list of the selected or all application access mechanisms 202 from selected function records 330 or all the function records 330 .
- the method 600 a includes transmitting the search results 220 to the user device 200 .
- the search module 310 may deliver the search results 220 , which can include access mechanisms 202 , results scores 226 , and/or link data 232 .
- the set processing module 404 transmits the search results 226 to the user device 200 that generated the search query 212 .
- FIG. 6B provides an example arrangement of operations for a method 600 b of executing the search (e.g., at block 606 ).
- the method 600 b is described with respect to the user device 200 , the search module 310 , and the data store 320 as illustrated in FIG. 2 .
- the method 600 b includes identifying function records 330 based on a search query 212 .
- the search module 310 identifies function records 330 in the search data store 320 based on the search query 212 received in the query wrapper 210 .
- the search module 310 may identify function records 330 in the data store 320 by detecting search term matches between terms (e.g., words) of the search query 212 and terms included in the application state information 334 of the function records 330 .
- the set generation module 402 identifies a consideration set 350 of function records 330 based on the search query 212 (e.g., based on output from the query analysis module 400 ).
- the method 600 b includes selecting a consideration set 350 of function records 330 .
- the search module 310 selects a set 350 of function records 330 from those function records 330 identified at block 612 .
- the selected set 350 of function records 330 may be referred to as a “consideration set” of function records 330 and/or function identifiers 332 of those function records 330 .
- the search module 310 may score the consideration set 350 of function records 330 and include information from the consideration set 350 of function records 330 in the search results 220 .
- the search module 310 may filter the consideration set 350 of function records 330 based on one or more criteria.
- the method 600 b includes scoring the consideration set 350 of function records 330 .
- the search module 310 e.g., the set processing module 404
- may generate a score e.g., a result score 226
- the method 600 b includes grouping function records 330 of the consideration set 350 .
- the set processing module 404 may group the function records 330 by application ID 336 , access mechanism 202 , application state information 334 , result score 226 , or some other attribute associated with the function record 330 .
- the search application 216 can display the search results 220 in an organized or ordered fashion.
- the method 600 b determines if a function records filter is set, and if so, at block 620 , the method 600 b includes filtering function records 330 of the consideration set 350 .
- the set processing module 404 filters the function records 330 based on one or more criteria. The criteria may be based on characteristics of the function records 330 and/or characteristics associated with the user 10 .
- the set processing module 404 may impose a policy that limits or reduces the number of function records 330 in the consideration set 350 and/or the result set 220 .
- the set processing module 404 may filter the function records 330 based on application ID 336 and impose a policy that limits or reduces the number of function records 330 to a maximum number of function records 330 per each application ID 332 .
- the method 600 b includes selecting one or more access mechanisms 202 , link data 232 , header data 242 , and optionally an expansion element 250 associated with function records 330 in the consideration set 350 for transmission in the search results 220 .
- the header 242 is a name or nickname of an application 204 having a grouping of function records 330 in the search results 220 .
- the search module 310 may select access mechanisms 202 from the function records 330 associated with the largest result scores 226 determined at block 616 .
- the search module 310 determines which access mechanisms 202 are compatible with the user device 200 based on the platform data 222 . In these implementations, the search module 310 may transmit a subset of the access mechanisms 202 from the selected function records 330 which are compatible with the user device 200 (e.g., based on OS version, web browser version, and/or device type).
- the set processing module 404 may select function records 330 from the consideration set 350 based on the result scores 226 associated with the function records 330 and select access mechanisms 202 from the selected function records 330 . For example, the set processing module 404 may select function records 330 having the highest result scores 226 and then select access mechanisms 202 from those function records 330 .
- the method 600 b includes transmitting the search results 220 to the user device 200 .
- the search module 310 may deliver the search results 220 , which can include access mechanisms 202 , results scores 226 , and/or link data 232 .
- the set processing module 404 transmits the search results 226 to the user device 200 that generated the search query 212 .
- FIG. 6C provides an example arrangement of operations for a method 600 c of executing the search (e.g., at block 606 ).
- the method 600 c is described with respect to the user device 200 , the search module 310 , and the data store 320 as illustrated in FIG. 2 .
- the method 600 c includes the same elements 612 - 618 of the method 600 b in FIG. 6B .
- the method 600 c includes filtering function records 330 of the consideration set 350 , similar to block 620 in FIG. 6B .
- the method 600 c includes selecting one or more access mechanisms 202 , link data 232 , header data 242 , and an expansion element 250 associated with function records 330 in the consideration set 350 for transmission in the search results 220 .
- the method 600 c includes transmitting to the user device 200 , a predetermined number of search results 220 .
- the threshold number of search results may be any number greater or equal to zero.
- the user 10 may request additional search results 220 by selecting the expansion element 350 on the display 201 of the user device 200 .
- the method 600 c includes waiting for receipt of an additional search result 220 request from the user device 200 by way of the user 10 selecting the expansion element 370 displayed on the display 201 in association with a header 242 .
- the search module 310 ways for receipt of the user additional requests from the user device 200 .
- the method 600 c includes selecting one or more access mechanisms 202 and link data 232 , associated with function records 330 in the consideration set 350 for transmission in the search results 220 that were not previously transmitted at block 624 .
- the search module 310 may select access mechanisms 202 from the function records 330 associated with the largest result scores 226 determined at block 616 .
- the search module 310 determines which access mechanisms 202 are compatible with the user device 200 based on the platform data 222 .
- the search module 310 may transmit a subset of the access mechanisms 202 from the selected function records 330 that are compatible with the user device 200 (e.g., based on OS version, web browser version, and/or device type).
- the set processing module 404 may select function records 330 from the consideration set 350 based on the result scores 226 associated with the function records 330 and select access mechanisms 202 from the selected function records 330 . For example, the set processing module 404 may select function records 330 having the highest result scores 226 and then select access mechanisms 202 from those function records 330 .
- the method 600 c includes transmitting the search results 220 not previously transmitted at block 624 to the user device 200 .
- the search module 310 may deliver the search results 220 , which can include access mechanisms 202 , results scores 226 , and/or link data 232 .
- the set processing module 404 transmits the search results 226 to the user device 200 that generated the search query 212 .
- FIGS. 7A-7D provide example arrangements of operations for a method 700 of operating a user device 200 . It may be assumed that the user device 200 described according to the method 700 includes a search application 216 (e.g., a native application 204 a or web-browser application 204 b ) configured to communicate with the search system 300 .
- a search application 216 e.g., a native application 204 a or web-browser application 204 b
- the method 700 includes receiving a search query 212 from a user 10 .
- the search application 216 executing on the user device 200 receives the search query 212 from of the user 10 .
- the method includes generating and transmitting query wrapper 210 to the search system 300 .
- the user device 200 generates and transmits the query wrapper 210 to the search system 300 .
- the method 700 includes waiting for receipt of the search results 220 .
- the user device 200 waits for receipt of the search results 220 from the search system 300 .
- the search results 220 may include a list of access mechanisms 202 and optionally result scores 226 associated with the access mechanisms 202 .
- search results 220 may optionally include link data 232 (e.g., text and/or images) for the access mechanisms 202 .
- the search application 216 may generate user selectable links 230 in the GUI 240 based on the received link data 232 .
- the method 700 includes generating user selectable links 230 and a header 242 (e.g., for a group of links 230 ) based on the search results 220 .
- the search application 216 may generate the user selectable links 230 and the header 242 or receive them from the search module 310 .
- the method 700 includes, at block 708 b , generating one or more header links 244 associated with the header 242 .
- the header links 244 may be indicators or icons that indicate an installation state of a corresponding native application 204 a ( FIG. 8D ). For example, a first indicator 244 a may indicate that the native application is installed and selecting the first indicator 244 a may open the native application 204 a .
- a second indicator 244 b may indicate that the native application 204 a is not currently installed.
- selecting the second indicator 244 b causes installation of the native application 204 a (e.g., via an application download mechanism 202 c ).
- selecting the second indicator 244 b causes the user device 200 to be directed to the digital distribution platform 130 b , where the user 10 may choose to install the application 204 on the user device 200 .
- the method 700 includes generating expansion element 250 in addition to user selectable links 230 and a header 242 , based on the search results 220 .
- the method 700 includes waiting for a user selection of a link 230 , 244 .
- the search application 216 may wait for the user 10 to select one of the user selectable links 230 or the header links 244 before operation proceeds to a subsequent block 712 , 714 .
- the method 700 includes launching an application 204 associated with the link 230 .
- the user device 200 launches the application 204 referenced in the access mechanism 202 and performs one or more operations indicated in the access mechanism 202 in block 712 .
- the method 700 includes, at block 712 , determining if the selected link is a header link 244 , and if so, at block 716 , performing operations according the selected header link 244 (e.g., opening an application to a default or particular state, being directed to a digital distribution platform 130 b , and/or installing a corresponding native application 204 a ). Otherwise, the method 700 includes, at block 718 , performing operations according the selected link 230 , which may include launching an application 204 associated with the link 230 using an access mechanism 202 of that link 230 .
- the method 700 includes receiving a user selection of the expansion element 250 by way of a user 10 selecting the expansion element 250 on the user display 201 .
- the method 700 includes increasing the number of user selectable links 230 displayed on the display 201 of the user device 200 .
- the method 700 includes increasing the number of user selectable links 230 and the number of displayed advertisement(s) 271 associated with each header 242 .
- the method 700 includes waiting for a user selection of the expanded state 250 b of the expansion element 250 .
- the search application 216 may wait for the user 10 to select the expanded state 250 b of the expansion element 250 , since the user 10 has previously selected the collapsed state 250 a of the expansion element 250 .
- the method 700 includes reducing the number of user selectable links 230 .
- the search application 216 receives a user selection of the expanded state 250 b and reduces the number of user selectable links 230 displayed in the search results 220 .
- the method 700 may reduce the number of advertisements 271 when reducing the number of user selectable links 220 .
- the method 700 may only display the advertisements 271 when the expansion element 250 is in an expanded state 250 a.
- FIGS. 8A-8L illustrate various examples of executing a search on a user device 200 using the search application 216 and displaying search results 220 .
- the search application 216 when the user 10 enters a search query 212 into the search field 214 (e.g., a search text box) of the GUI 240 of the search application 216 running on the user device 200 and executes the search, the search application 216 generates a query wrapper 210 that contains the search query 212 and any other relevant information (e.g., query parameters).
- the search application 216 transmits the query wrapper 210 to the search system 300 (e.g., to the search module 310 ), which responds with the search results 220 .
- the search application 216 displays the search results 220 in the GUI 240 .
- the search results 220 can indicate one or more links 230 to access resources that are relevant to the search.
- the links 230 can include application resource identifiers that can be used to launch a third party application 204 and access a specific state within the third party application 204 .
- FIGS. 2, 8A and 8B illustrate an example of executing a search on a user device 200 using the search application 216 executing on the user device 200 .
- the user 10 entered a search query 212 of “Toy Story” into the search field 214 (e.g., a search box) of the GUI 240 of the search application 216 .
- the search application 216 generates a query wrapper 210 including the search query 212 and transmits the query wrapper 210 to the search system 300 , which returns search results 220 based on the search query 212 .
- the search module 310 transmits the search results 220 including a list of applications 204 and/or access mechanisms 202 to the user device 200 .
- the list of applications 204 e.g., native or web applications 204 a , 204 b ) illustrated in FIG. 8A includes IMDb® (a trademark of IMDb.com, Inc.), FANDANGO® (a trademark of Fandango), CRACKLE®, (a trademark of Crackle, Inc.), FLIXSTER® (a trademark of Warner Bros. Entertainment Group), and ROTTEN TOMATOES® (a trademark of Warner Bros. Entertainment Group).
- the search application 216 displays links 230 to relevant states of the applications 204 indicated in the search results 220 .
- the user 10 may select (e.g., touch or click) one of the links 230 to access the resource indicated in the link 230 .
- the user 10 may select the area of the GUI 240 including the “IMDb” icon to select a first link 230 - 1 to the “IMDb” application.
- the user device 200 e.g., search application 216 , operating system 224 , and/or the IMDb native application 204
- each link 230 - 1 , 230 - 2 , 230 - 3 , 230 - 4 , 230 - 5 may provide access to a “Toy Story” entry in the respective application 204 .
- the user selects the first link 230 - 1 for “IMDb.”
- the various states of the native application may correspond to different entries in the IMDb databases.
- the illustrated first link 230 - 1 may indicate a state corresponding to an entry “Toy Story.” Accordingly, selection of the first link 230 - 1 may cause the search application 216 to instruct the operating system 216 of the user device 200 to launch the IMDb native application and to access the “Toy Story” entry referenced in the first link 230 - 1 .
- FIG. 8B illustrates a GUI 240 of the selected native application 204 a that was launched in response to the selection of the first link 230 - 1 , where the selected native application 204 a displays an example entry for “Toy Story.”
- the user device 200 has one or more native applications 204 a installed on the user device 200 .
- the search application 216 indicates on the GUI 240 that the YELP® native application developed by Yelp, Inc. and the TRIPADVISOR® native application developed by TripAdvisor, Inc. are installed on the user device 200 .
- the search application 216 may display a header 242 and one or more links 230 associated with the header 242 .
- the search application 216 displays one or more headers 242 and one or more links 230 below each header 242 in a hierarchical fashion (e.g., a tree structure).
- Each header 242 may be a parent node for one or more links 230 as children nodes of the parent node.
- the links 230 may be selected and grouped in a particular order or in random order. If the links 230 are displayed in an order, the order may be based on some metric associated with the access mechanism 202 or the native application 204 a associated with the link 230 . Moreover, the order may be an alphabetical sorting of names associated with the links 230 , based on the results scores 226 (e.g., based on relevancy to the search query 212 ), a combination thereof, and/or other sorting techniques.
- the header 242 may or may not include a link 230 itself.
- the GUI 240 includes a header 242 having the name “Yelp,” under which first, second, and third links 230 - 1 , 230 - 2 , 230 - 3 are arranged.
- the header 242 may indicate that the links 230 - 1 , 230 - 2 , 230 - 3 arranged below the header 242 are associated with the YELP® native application 204 a .
- the header 242 does not include any links 230 in the header 242 itself. Instead, the links 230 are grouped below the header 242 . In other examples, however, the header 242 may include one or more links 230 .
- selection of the first link 230 - 1 may cause the user device 200 to launch the YELP® native application 204 a and retrieve an IHOP® restaurant entry of the YELP® native application 204 a .
- Selection of the second link 230 - 2 may cause the user device 200 to launch the YELP® native application 204 a and retrieve a DENNY'S® restaurant entry of the YELP® native application 204 a .
- Selection of the third link 230 - 3 may cause the user device 200 to launch the TACO BELL® native application 204 a and retrieve a TACO BELL® restaurant entry of the YELP® native application 204 a.
- the search application 216 displays one or more links 230 to native applications 204 a without a header 242 , such as the example shown in FIG. 8A .
- a fourth link 230 - 4 references the TRIPADVISOR® native application without a header 242 . Selection of the fourth link 230 - 4 may cause the user device 200 to launch the TRIPADVISOR® native application 204 a and retrieve an entry for “Late night diners” in the TRIPADVISOR® native application 204 a (e.g., a search for “Late night diners”).
- a fifth link 230 - 5 includes a web access mechanism 202 b (e.g., a URL). Selection of the fifth link 230 - 5 may cause the user device 200 to launch the web-browser application 204 b and retrieve an entry for “Late night diners” in the OPENTABLE® web application 204 b developed by OpenTable, Inc.
- a web access mechanism 202 b e.g., a URL.
- the user entered a search query 212 of “thai” into the search field 214 of the GUI 240 and executed the search by, for example, selecting a search button 215 of the GUI 240 .
- the search application 216 In response to the search query 212 , the search application 216 generates a query wrapper 210 including the search query 212 and transmits the query wrapper 210 to the search module 310 .
- the search module 310 generates search results 220 .
- the search module 310 generated requests for information (e.g., web requests) from data sources 130 based on the search query 212 .
- the search module 310 may have included one or more of the query terms and/or the query parameters contained in the query wrapper 210 in the requests for information.
- the search module 310 generated links 230 based on the information received from the data sources 130 .
- the search module 310 received information (e.g., available reservation times) relating to the entities “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” that are associated with the OPENTABLE® application.
- the search module 310 in response the received query wrapper 210 , the search module 310 generates search results 220 (e.g., based on the information received from the data sources 130 ) and transmits search results 220 including a list of applications 204 to the user device 200 .
- the search module 310 may also transmit the information regarding the entities associated with the YELP® application 204 a and the OPENTABLE® application 204 a (e.g., reservation times).
- the list of applications 204 illustrated in FIG. 8D includes YELP® and OPENTABLE®.
- the GUI 240 may include links 230 to the applications 204 in the search results 220 .
- the user 10 may select the links 230 to access the resource indicated in the link 230 . For example, the user may select “Bangkok Bistro” to select a link 230 to the “Bangkok Bistro” entry in the YELP® application 204 a.
- the GUI 240 in FIG. 8D includes first, second, and third links 230 - 1 , 230 - 2 , 230 - 3 that provide access to entries in the YELP® application 204 a having a YELP® header 242 a . Therefore, the YELP® header 242 a indicates that the first, second, and third links 230 - 1 , 230 - 2 , 230 - 3 arranged below the header 242 a are associated with the YELP® native application 204 a .
- the OPENTABLE® header 242 b indicates that fourth, fifth, and sixth links 230 - 4 , 230 - 5 , 230 - 6 arranged below the header 242 b are associated with the OPEN TABLE® native application 204 a .
- the links 230 - 1 , 230 - 2 , 230 - 3 may provide access to entries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” in the YELP® application.
- the search module 310 may have identified the entries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” in response to receiving the search query 212 of “thai.”
- the entities “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” may be associated with the YELP® application 204 a . Accordingly, the search application 216 may group those entities together under the YELP® application search result 220 .
- the GUI 240 in FIG. 8D includes fourth, fifth, and sixth links 230 - 4 , 230 - 5 , 230 - 6 that provide access to entries in the OPENTABLE® application 204 a .
- the links 230 - 4 , 230 - 5 , 230 - 6 may provide access to entries for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” in the OPENTABLE® application 204 a .
- the search module 310 may have identified the entries for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” in response to receiving the search query “thai.”
- the entities “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” may be associated with the OPENTABLE® application 204 a . Accordingly, the search application 216 may group those entities together under the OPENTABLE® application search result 220 .
- the links for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” also include information relating to available reservation times.
- the information relating to available reservation times may have been received by the search module 310 in response to a request for information by the search module 310 to a data source 130 for the OPENTABLE® application 204 a .
- the search module 310 may have transmitted the received information to the user device 200 so that the information could be displayed by the search application 216 via the GUI 240 .
- the GUI 240 of FIG. 8D also includes indicators or icons 244 that indicate whether the native applications 204 a for YELP® and OPENTABLE® are currently installed on the user device 200 .
- the indicators or icons 244 may indicate that whether the native application 204 a is installed and ready for access by the user 10 , or whether the native application 204 a is not yet installed, thus inaccessible by the user 10 , but can be downloaded to the user device 200 .
- an “Open” icon 244 a may indicate that a native application 204 a is installed on the user device 200 , and the user may select (e.g., touch) an “Open” icon 244 a to open the installed native application 204 a .
- Displaying the icon 244 a indicating the installation status of the native application 204 a in the header 242 is not required for the header 242 to act as a link.
- the header 242 may act as a link that opens the native application 204 a even though the header 242 does not include any indicator 244 .
- selecting the header 242 can cause more than just opening an application 204 .
- the header 242 may be a link to a different state of the corresponding application 204 (e.g., different from the default state).
- selecting the header 242 may cause the native application 204 a (i.e., the one identified in the header 242 ) to perform a search using one or more terms of the original search query 212 .
- a “Free” icon 244 b may indicate that the native application 204 a is not currently installed on the user device 200 ; however, the user may select the “Free” icon 244 b to launch a digital distribution platform 130 b , such as an application marketplace, that provides the native application 204 a for download or to automatically start downloading the native application 204 a to the user device 200 .
- a digital distribution platform 130 b such as an application marketplace
- Other indicators or icons 244 are possible as well that show various states of installation and/or accessibility of native applications 204 a.
- the search application 216 may display links 230 having different types of access mechanisms 202 . For example, selecting the first link 230 - 1 may access an entry of the native application 204 a for YELP® for “Bangkok Bistro” using an application access mechanism 202 a . Selecting the fourth link 230 - 4 may access an entry of the web application 204 b for OPENTABLE® for “Baan Thai House & Wine Bar” using a web access mechanism 202 b . In this example, the native application 204 a for OPENTABLE® is not installed on the user device 200 . Thus, the search application 216 can instruct a web browser of the user device 200 to access the web application 204 b for OPENTABLE® at the state indicate by the fourth link 230 - 4 .
- FIG. 8E illustrates an example GUI 240 of a search application 216 running on a user device 200 .
- the user 10 has entered a search query 212 (“Late night diners”) into the GUI 240 of the search application 216 .
- the user 10 interacted with the GUI 240 , causing the search application 216 to generate and transmit a query wrapper 210 including the search query 212 to the search system 300 .
- the search system 300 identified function records 330 and selected application access mechanisms 202 a , web access mechanisms 202 b , and application download mechanism 202 c from the identified function records 330 , as described above.
- the search system 300 identified function records 330 including references to native applications 204 a for YELP®, TRIPADVISOR®, OPENTABLE®, and URBANSPOON®.
- the user device 200 has the native applications 204 a for YELP® and TRIPADVISOR® installed, but the native applications 204 a for OPENTABLE® and URBANSPOON® are not installed on the user device 200 .
- Links 230 such as the first, second, third, and fourth links 230 - 1 , 230 - 2 , 230 - 3 , 230 - 4 shown, for accessing the applications 204 (e.g., via access mechanisms 202 ) may have different functionality and/or purpose.
- the first and second links 230 - 1 , 230 - 2 for entries in the native application 204 a for YELP® for “IHOP” and “Denny's” include application access mechanisms 202 a that open the YELP® native application 204 a and retrieve the corresponding entries for “IHOP” and “Denny's.”
- the third link 230 - 3 may be associated with an application access mechanism 202 a for the TRIPADVISOR® native application 204 a .
- the application access mechanism 202 a included in the third link 230 - 3 may cause the user device 200 to launch the TRIPADVISOR® native application 204 a to a default state.
- the fourth link 230 - 4 may include a web access mechanism 202 b for the OPENTABLE® web application 204 b .
- the web access mechanism 202 b may direct a web browser of the user device 200 to one or more late night diners on a website of OPENTABLE®.
- the user device 200 may launch a web browser and retrieve information at a web address included in the web access mechanism 202 b . Since the OPENTABLE® native application 204 a is not installed on the user device 200 , the search application 216 may present the fourth link 230 - 4 to allow the user 10 to access the desired functionality via the web access mechanism 202 b.
- a fifth link 230 - 5 may include an application download mechanism 202 c for the URBANSPOON® native application 204 a . Since the user device 200 does not have the URBANSPOON® native application 204 a installed, the user device 200 displays the fifth link 230 - 5 that includes the application download mechanism 202 c for the URBANSPOON® native application 204 a . In response to selection of the fifth link 230 - 5 , the user device 200 may access a data source 130 (e.g., a digital distribution platform 130 b ) for downloading the URBANSPOON® native application 204 a .
- a data source 130 e.g., a digital distribution platform 130 b
- the search application 216 optionally displays an icon 244 (or other identifier, such as text and/or an image) that indicates that the application 204 is not currently installed on the user device 200 , but can be downloaded.
- the search application displays a “Download” icon 244 c on the GUI 240 adjacent the fifth link 230 - 5 for the URBANSPOON® native application 204 a .
- the search application 216 uses the application download mechanism 202 c of the corresponding link 230 to download the native application 204 a to the user device 200 .
- the search application 216 may still display the entries for “IHOP” and “Denny's” on the GUI 240 , but the user device 200 may include application download mechanisms 202 c in the links 230 - 1 , 230 - 2 , so that the user device 200 would be directed to downloading the YELP® native application 204 a .
- the links 230 - 1 , 230 - 2 may also include data (e.g., text and/or images) that indicate to the user 10 that selection of the links 230 - 1 , 230 - 2 will direct the user 10 to a site for downloading the YELP® native application 204 a .
- the links 230 - 1 , 230 - 2 may include a download icon 244 c , and when the user 10 selects the download icon 244 c , the search application 216 uses the application download mechanism 202 c of the corresponding link 230 to download the native application 204 a to the user device 200 .
- the header 242 includes an expansion element 250 that allows the search application 216 to display all or some of the links 230 associates with the header 242 .
- the expansion element 250 includes a collapsed state 250 a ( FIGS. 8F and 8H ) and an expanded state 250 b ( FIGS. 8G and 8I ) that are mutually exclusive.
- the search application 216 indicates on the GUI 240 that the YELP® native application developed by Yelp, Inc. and the TRIPADVISOR® native application developed by TripAdvisor, Inc. are installed on the user device 200 .
- the search application 216 may display a header 242 and one or more links 230 associated with the header 242 .
- the search application 216 only displays one or more headers 242 and the expansion element 250 associated with each header without displaying any links 230 associated with the header 242 .
- the search application 216 displays one or more headers 242 and one or more links 230 below each header 242 in a hierarchical fashion (e.g., a tree structure).
- Each header 242 may be a parent node for one or more links 230 as children nodes of the parent node.
- the links 230 may be selected and grouped in a particular order or in random order. If the links 230 are displayed in an order, the order may be based on some metric associated with the access mechanism 202 or the native application 204 a associated with the link 230 .
- the order may be an alphabetical sorting of names associated with the links 230 , based on the results scores 226 (e.g., based on relevancy to the search query 212 ), a combination thereof, and/or other sorting techniques.
- the header 242 may or may not include a link 230 itself.
- a device independent pixel also known as, density-independent pixel (dp or dip) is a physical unit of measurement based on a co-ordinate system held by a computer and represents an abstraction of a pixel for use by an application that an underling system then converts to physical pixel.
- Device independent pixel allows mobile device software, such as native applications 204 a , to scale the display of information and user interaction to different screen sizes. Therefore, the abstraction allows the native application 204 a to work in pixels as measurement, while the underlying graphics system converts the abstract pixel measurements of the application into real pixel measurements appropriate for the particular user device 200 . Therefore, the GUI 240 can adjusts how the information is being displayed on a user device 200 based on the size of the display.
- the search application 216 restricts the displayed search results 220 based on a number of device independent pixels.
- the GUI 240 may set a maximum search result height H C that includes the search results 220 associated with a header 242 , where each search result or link 230 has a collapsed search result height H CR .
- the collapsed search result height H CR may be equal for each displayed access link 230 , which displays limited information.
- the maximum search result height H C equals 344 dp and each link 230 has a collapsed search result height H CR of 75 dp.
- the expanded state 250 b may have an expanded search result height H E that includes the search results 220 associated with a header 252 . If only two search results 220 are available, then the GUI 240 displays only two access links 230 associated with the header 242 .
- the expanded search result height H E includes all of the search results 220 (i.e., access links 230 ); therefore, the expanded search result height H E may be as long as the number of access links 230 associated with the header 242 (the user 10 may scroll through the access links 230 to see the ones that are not displayed on a first page).
- Each access link 230 within the expanded state 240 b may have an expanded search result height H ER that is equal to or greater than the collapsed search result height H CR .
- the GUI 240 may display more content and information associated with each link 230 .
- the GUI 240 may display a restaurant title, picture, and ratings, while in the expanded state 250 b the GUI 240 may additionally display a phone number and an address or any relevant information.
- the number of access links 230 displayed in either the collapsed state 250 a or the expanded state 250 b depends on an allocated amount of device independent pixels that the GUI 240 allocates to the access link 230 .
- the GUI 240 includes the expansion element 250 located within the header 242 .
- the GUI 240 includes the expansion element 250 displayed among the user selectable access links 230 grouped with the header 242 .
- the user 10 taps the expansion element 250 on the display 201 when the expansion element 250 is in the collapsed state 250 a and the GUI 240 is displaying three links 230 - 1 , 230 - 2 , 230 - 3 .
- the GUI 240 displays an expanded state 250 b of the expansion element 250 as shown in FIGS. 8G and 8I .
- the expanded state 250 b includes a number of links 230 greater than the number of links 230 displayed in the collapsed state 250 a . For example, when in the collapsed state 250 a zero links 230 are displayed, then in the expanded state 250 b , one or more links 230 are displayed. As shown in FIGS.
- the search application 216 groups the links 230 together if the links 230 are related to the same application 204 , the search application 216 only displays the header 242 associated with the application 204 and a user 10 may select the expansion element 250 to view the links 230 .
- the search application 216 displays a predetermined number of links 230 (e.g., three links 230 ) and when the user 10 selects the expansion link 250 the remainder of the search results 220 associated with the application 204 are displayed.
- FIGS. 2, 8J, and 8K illustrate an example, of executing a search on a user device 200 using the search application 216 executing on the user device 200 .
- the user 10 entered a search query 212 of “Late night diner” into the search field 214 (e.g., a search box) of the GUI 240 of the search application 216 .
- the search application 216 generates a query wrapper 210 including the search query 212 and transmits the query wrapper 210 to the search system 300 , which returns search results 220 based on the search query 212 .
- the search module 310 transmits the search results 330 including a list of applications 204 and/or access mechanisms 202 to the user device 200 .
- the list of applications, 204 (native or web applications 204 a , 204 ) illustrated in FIG. 8J is similar to the list of applications 204 illustrated and discussed in FIG. 8C .
- the user 10 may select (e.g., touch or click) one of the links 230 to access resources indicated in the link. For example, the user 10 may select the area of the GUI 240 including the “Denny's” icon to select the second link 230 - 2 of the YELP® native application 204 a .
- the user device 200 e.g., search application 216 , operating system 224 , and/or the YELP® native application 204 a
- the selected link 230 - 2 may provide access to information relating to a “Denny's” restaurant.
- FIG. 8 k illustrates a GUI 240 of the selected native application 204 a that was launched in response to the selection of the second link 230 - 2 , where the selected native application 204 a displays information relating to a restaurant.
- Modules and data stores included in the search system 300 represent features that may be included in the search system 300 of the present disclosure.
- the modules and data stores described herein may be embodied by electronic hardware, software, firmware, or any combination thereof. Depiction of different features as separate modules and data stores does not necessarily imply whether the modules and data stores are embodied by common or separate electronic hardware or software components.
- the features associated with the one or more modules and data stores depicted herein may be realized by common electronic hardware and software components.
- the features associated with the one or more modules and data stores depicted herein may be realized by separate electronic hardware and software components.
- the modules and data stores may be embodied by electronic hardware and software components including, but not limited to, one or more processing units, one or more memory components, one or more input/output (I/O) components, and interconnect components.
- Interconnect components may be configured to provide communication between the one or more processing units, the one or more memory components, and the one or more I/O components.
- the interconnect components may include one or more buses that are configured to transfer data between electronic components.
- the interconnect components may also include control circuits (e.g., a memory controller and/or an I/O controller) that are configured to control communication between electronic components.
- the search system 300 may be a system of one or more computing devices (e.g., a computer search system) that are configured to implement the techniques described herein.
- the features attributed to the modules and data stores described herein may be implemented by one or more computing devices.
- Each of the one or more computing devices may include any combination of electronic hardware, software, and/or firmware described above.
- each of the one or more computing devices may include any combination of processing units, memory components, I/O components, and interconnect components described above.
- the one or more computing devices of the search system 300 may also include various human interface devices, including, but not limited to, display screens, keyboards, pointing devices (e.g., a mouse), touchscreens, speakers, and microphones.
- the computing devices may also be configured to communicate with additional devices, such as external memory (e.g., external HDDs).
- the one or more computing devices of the search system 300 may be configured to communicate with the network 120 .
- the one or more computing devices of the search system 300 may also be configured to communicate with one another (e.g., via a computer network).
- the one or more computing devices of the search system 300 may include one or more server computing devices configured to communicate with user devices (e.g., receive query wrappers and transmit search results), gather data from data sources 130 , index data, store the data, and store other documents.
- the one or more computing devices may reside within a single machine at a single geographic location in some examples. In other examples, the one or more computing devices may reside within multiple machines at a single geographic location. In still other examples, the one or more computing devices of the search system 300 may be distributed across a number of geographic locations.
- FIG. 9 is schematic view of an example computing device 900 that may be used to implement the systems and methods described in this document.
- the computing device 900 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
- the components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document.
- the computing device 900 includes a processor 910 , memory 920 , a storage device 930 , a high-speed interface/controller 940 connecting to the memory 920 and high-speed expansion ports 950 , and a low speed interface/controller 960 connecting to low speed bus 970 and storage device 930 .
- Each of the components 910 , 920 , 930 , 940 , 950 , and 960 are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate.
- the processor 910 can process instructions for execution within the computing device 900 , including instructions stored in the memory 920 or on the storage device 930 to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display 980 coupled to high speed interface 940 .
- GUI graphical user interface
- multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory.
- multiple computing devices 900 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
- the memory 920 stores information non-transitorily within the computing device 900 .
- the memory 920 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s).
- the non-transitory memory 920 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device 900 .
- non-volatile memory examples include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs).
- volatile memory examples include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes.
- the storage device 930 is capable of providing mass storage for the computing device 900 .
- the storage device 930 is a computer-readable medium.
- the storage device 930 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations.
- a computer program product is tangibly embodied in an information carrier.
- the computer program product contains instructions that, when executed, perform one or more methods, such as those described above.
- the information carrier is a computer- or machine-readable medium, such as the memory 920 , the storage device 930 , or memory on processor 910 .
- the high speed controller 940 manages bandwidth-intensive operations for the computing device 900 , while the low speed controller 960 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only.
- the high-speed controller 940 is coupled to the memory 920 , the display 980 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 950 , which may accept various expansion cards (not shown).
- the low-speed controller 960 is coupled to the storage device 930 and low-speed expansion port 970 .
- the low-speed expansion port 970 which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
- input/output devices such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
- the computing device 900 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 900 a or multiple times in a group of such servers 900 a , as a laptop computer 900 b , or as part of a rack server system 900 c.
- implementations of the systems and techniques described here can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof.
- ASICs application specific integrated circuits
- These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
- subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus.
- the computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them.
- data processing apparatus encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers.
- the apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
- a propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
- a computer program (also known as an application, program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- a computer program does not necessarily correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output.
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
- a processor will receive instructions and data from a read only memory or a random access memory or both.
- the essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data.
- a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks.
- a computer need not have such devices.
- a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few.
- Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks.
- the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
- Other kinds of devices can be used to provide interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input
- One or more aspects of the disclosure can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components.
- the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network.
- Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- LAN local area network
- WAN wide area network
- inter-network e.g., the Internet
- peer-to-peer networks e.g., ad hoc peer-to-peer networks.
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device).
- client device e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device.
- Data generated at the client device e.g., a result of the user interaction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Game Theory and Decision Science (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Computer Security & Cryptography (AREA)
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A user device includes a computing device. The computing device transmits a search query from the user device and receives a first grouped set of search results based on the search query. The first grouped set corresponds to a first application. The first grouped set includes a header and at least two search results. The header includes a first access mechanism corresponding to a first state of the first application. Each of the search results (i) corresponds to a respective second state of the first application responsive to the search query and (ii) includes a respective second access mechanism corresponding to the respective second state. A display displays (i) the first grouped set of search results and (ii) a header link corresponding to the header. In response to the header link being selected, the computing device accesses the first state of the application using the first access mechanism.
Description
- The present application is a continuation of U.S. patent application Ser. No. 14/521,526 filed Oct. 23, 2014. The entire disclosure of the application referenced above is incorporated by reference.
- This disclosure relates to searching, accessing, and displaying functionality of applications.
- In recent years, use of computers, smartphones, and other Internet-connected devices has grown exponentially. Correspondingly, the number of available software applications for such devices has also grown. Today, many diverse native and web software applications can be accessed on any number of different devices, including, but not limited to, smartphones, personal computers, automobiles, and televisions. These diverse applications can range from business driven applications, games, educational applications, news applications, shopping applications, messaging applications, media streaming applications, social networking applications, and so much more. Furthermore, application developers develop vast amounts of applications within each genre and each application may have numerous editions.
- One aspect of the disclosure provides a method of performing a search. The method includes receiving, at a computing device (e.g., of a user device), search results transmitted from a search system in communication with the computing device. The search results include a header for an application executable on the computing device and application access mechanisms associated with the header. Each application access mechanism has a reference to the application and indicates one or more performable operations for the application. The method further includes displaying, on a display in communication with the computing device, a graphical user interface including the header, an expansion element associated with the header, and user selectable access links grouped with the header. Each access link is associated with an application access mechanism for the application. The expansion element has a collapsed state and an expanded state. When the expansion element is in the expanded state, the method includes displaying on the display all of the user selectable access links grouped with the header. However, when the expansion element is in the expanded state, the method includes displaying on the display a threshold number of the user selectable access links grouped with the header, the threshold number being less than a total number of the user selectable access links grouped with the header. The threshold number may be greater than zero. In some examples, a user device includes a display, a computing device in communication with the display, and non-transitory memory in communication with the computing device. The non-transitory memory stores instructions that when executed on the computing device cause the computing device to perform operations that include the method describe above.
- Implementations of the disclosure may include one or more of the following optional features. In some implementations, the search results include an advertisement associated with a header. The GUI displays the advertisement in the header or associated with a user selectable access link grouped with the header. In other implementations, the search results include an advertisement record including one or more of an advertisement name, an advertisement identification, a sponsored link name, a sponsored link identification, advertising content, or advertisement parameters. In some examples, the method includes displaying in the GUI the expansion element in the header.
- In some examples, the method includes displaying in the GUI the expansion element among the user selectable access links grouped with the header. In response to receiving a user selection of the expansion element indicating the expanded state, the method may include displaying on the display a list of all of the user selectable access links grouped with the header and displaying on the display the expansion element as a last element in the list. Additionally or alternatively, in response to receiving a user selection of the expansion element indicating the collapsed state, the method may include displaying on the display a list of all of the threshold number of the user selectable access links grouped with the header; and displaying on the display the expansion element as a last element in the list.
- In some implementations, the header includes a name of the associated application. The method may include displaying in the graphical user interface a header link in the header indicating an installation state of the associated application as being installed or uninstalled. Moreover, in response to receiving a user selection of the header link, when the installation state of the associated application is installed, the method may include executing the application on the computing device; and when the installation state of the associated application is uninstalled, the method may include downloading the application to non-transitory memory in communication with the computing device and executing the application on the computing device. In some examples, the method includes directing the user device to a digital distribution platform to download the application. Once in communication with the digital distribution platform, the user may choose to install the application on the user device.
- In some implementations, the method includes displaying in the graphical user interface an ungrouped access link having an associated application access mechanism for an application different from the application associated with the header. The method may include displaying in the graphical user interface an indicator in the ungrouped access link indicating an installation state of the associated application as being installed or uninstalled. Moreover, in response to receiving a user selection of an ungrouped access link, when the installation state of the associated application is installed, the method may include executing the application on the computing device; and when the installation state of the associated application is uninstalled, the method may include downloading the application to non-transitory memory in communication with the computing device and executing the application on the computing device. In some implementations, when the installation state of the associated application is uninstalled, the method includes directing the user device to a digital distribution platform, where the user may choose to install the application on the user device. In some examples, in response to receiving a user selection of an ungrouped access link, when the installation state of the associated application is uninstalled, the method includes executing a web browser on the computing device and accessing functionality of the associated application through the web browser.
- The method may include displaying the access links in an order under the header based on a score associated with the application access mechanism of each access link. In some examples, the method includes receiving, at the computing device, search criteria (i.e., search query) through the graphical user interface, generating, at the computing device, a query wrapper including the search criteria, and transmitting the query wrapper from the computing device to the search system.
- Another aspect of the disclosure provides a method of performing a search. The method includes receiving at a computing device, a search criteria from a user device in communication with the computing device and executing, using the computing device, a search of a data store in communication with the computing device using the search criteria. The method includes receiving, at the computing device, function records from the data store in response to the executed search. Each of the function records includes an application identifier, an application access mechanism, and application state information. The application access mechanism has a reference to a native application and indicates one or more performable operations for the native application. The application state information describes a state of the native application when the native application performs the one or more operations indicated in the application access mechanism. The method includes grouping the function records, at the computing device, based on the application identifiers, and transmitting header search results from the computing device to the user device for display on the user device. The header search results include a header for each group of function records and an expansion element associated with each header.
- In some implementations, the method also includes receiving, at the computing device, an expansion command from the user device. The expansion command indicative of a user selection of an expansion element. The method also includes transmitting access mechanism search results from the computing device to the user device. The access mechanism search results include the application access mechanisms of the group of function records is associated with the header of the selected expansion element. The access mechanism search results include link data for each application access mechanism. The link data includes at least one of text or an image associated with the state of the application referenced by the corresponding application access mechanism.
- In some examples, the method further includes filtering the function records, at the computing device, based on their application identifiers by limiting a number of function records per application identifier. Additionally, the method includes scoring the function records based on a relevancy of the function record to the search criteria, and ordering the function records based on their scores. The scoring is based on the application state information of the function record. In some examples, executing the search includes identifying function records of the data store based on matches between terms of the search criteria and terms of the application state information of the function records.
- In some example, at least one of the application access mechanisms includes an application resource identifier referencing a native application, wherein the application resource identifier is in an application-specific format specific for the referenced native application and indicates one or more performable operations for the user device. The application resource identifier includes a domain name and a path to be used by the referenced native application to retrieve and display information. The application access mechanism includes instructions for at least one of a search application, an operating system, or the referenced native application when executed on user device. In some implementations, at least one of the application access mechanisms includes a web address that when executed by the user device causes the user device to execute a web browser and access a web version of the native application referenced in the application access mechanism.
- The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims.
-
FIG. 1A is a schematic view of an example environment including a user device in communication with a search system. -
FIG. 1B is a functional block diagram of a search system interacting with user devices and data sources. -
FIG. 2 is a schematic view of an example user device in communication with a search system. -
FIGS. 3A and 3B are schematic views of example function records. -
FIG. 4A is a schematic view of an example search module receiving and processing a query wrapper and outputting search results. -
FIG. 4B is a schematic view of an example set generation module generating a consideration set and a set processing module scoring, filtering, and grouping function records of the consideration set. -
FIG. 4C is a schematic view of an example set generation module generating a consideration set and a set processing module scoring, filtering, and grouping function records of the consideration set. -
FIG. 4D is a schematic view of an example advertisement module. -
FIGS. 5A-5C is a schematic view of an example arrangement of operations for a method of performing a search on a user device. -
FIG. 6A is a schematic view of an example arrangement of operations for a method of performing a search on a search system. -
FIGS. 6B and 6C are schematic view of an example arrangement of operations for a method of generating search results. -
FIGS. 7A-7D are flow diagrams illustrating example methods of operating a user device. -
FIGS. 8A and 8B are schematic views of an example user device displaying a graphical user interface that receives a search query and displays search results. -
FIG. 8C is a schematic view of an example user device displaying a graphical user interface displaying search results grouped under a bare header (i.e., a header without links). -
FIG. 8D is a schematic view of an example user device displaying a graphical user interface displaying search results grouped under a header having a header link. -
FIG. 8E is a schematic view of an example user device displaying a graphical user interface displaying search results with indicators indicating an installation state of a corresponding application. -
FIGS. 8F-8I are schematic views of example user device displaying a graphical user interface displaying an expanded state and a collapsed state of search results. -
FIGS. 8J and 8K are schematic views of example user device showing information relating to a link of the search results. -
FIG. 9 is a schematic view of an example computing device executing any systems or methods described herein. - Like reference symbols in the various drawings indicate like elements.
- A search system of the present disclosure implements a search based on a query received from a user device. The search system receives a query from a user device that includes search criteria, generates search results in response to the received query, and transmits the search results to the user device. The search results may include various mechanisms for accessing applications or functionality of applications relevant to the search query of the user. In response to selection of an access mechanism, the user device may launch an application referenced in the application access mechanism and perform the one or more operations indicated in the application access mechanism.
-
FIG. 1A illustrates anexample system 100 that includes auser device 200 associated with auser 10 in communication with aremote system 110 via anetwork 120.FIG. 1B provides a functional block diagram of thesystem 100. Theremote system 110 may be a distributed system (e.g., cloud environment) having scalable/elastic computing resources 112 and/orstorage resources 114. Theuser device 200 and/or theremote system 110 may execute asearch system 300 and optionally receive data from one ormore data sources 130. In some implementations, thesearch system 300 communicates with one ormore user devices 200 and the data source(s) 130 via thenetwork 120. Thenetwork 120 may include various types of networks, such as a local area network (LAN), wide area network (WAN), and/or the Internet. -
FIG. 2 shows anexample user device 200 in communication with thesearch system 300.User devices 200 can be any computing devices that are capable of providingqueries search system 300.User devices 200 include, but are not limited to, mobile computing devices, such aslaptops 200 a,tablets 200 b,smart phones 200 c, andwearable computing devices 200 d (e.g., headsets and/or watches).User devices 200 may also include other computing devices having other form factors, such as computing devices included indesktop computers 200 e, vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances). - The
user devices 200 may use a variety ofdifferent operating systems 224. In examples where auser device 200 is a mobile device, theuser device 200 may run an operating system including, but not limited to, ANDROID® developed by Google Inc., IOS® developed by Apple Inc., or WINDOWS PHONE® developed by Microsoft Corporation. Accordingly, theoperating system 224 running on theuser device 200 may include, but is not limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®. In an example where a user device is a laptop or desktop computing device, the user device may run an operating system including, but not limited to, MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., or Linux.User devices 200 may also access thesearch system 300 while runningoperating systems 224 other than those operatingsystems 224 described above, whether presently available or developed in the future. - A software application 204 may refer to computer software that, when executed by a computing device, causes the computing device to perform a task. In some examples, a software application 204 may be referred to as an “application”, an “app”, or a “program”. Example software applications 204 include, but are not limited to, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and games.
- Applications 204 can be executed on a variety of
different user devices 200. In some examples, anative application 204 a may be installed on auser device 200 prior to auser 10 purchasing theuser device 200. In other examples, the user may 10 download and installnative applications 204 a on theuser device 200. - The functionality of an application 204 may be accessed on the
computing device 200 on which the application 204 is installed. Additionally or alternatively, the functionality of an application 204 may be accessed via aremote computing device 112. In some examples, all of an application's functionality is included on thecomputing device other computing devices 112, 200 (e.g., via the Internet). In other examples, an application 204 installed on acomputing device 200 may access information from otherremote computing devices 112 during operation. For example, a weather application installed on acomputing device 200 may access the latest weather information via the Internet and display the accessed weather information to theuser 10 through the installed weather application. In still other examples, a web-based application 204 b (also referred to herein as a web application) may be partially executed by the user'scomputing device 200 and partially executed by aremote computing device 112. For example, a web application 204 b may be an application 204 that is executed, at least in part, by a web server and accessed by a web browser (e.g., anative application 204 a) of the user'scomputing device 200. Example web applications 204 b may include, but are not limited to, web-based email, online auctions, and online retail sites. - In general, the
user device 200 may communicate with thesearch system 300 using any software application 204 that can transmitsearch queries 212 to thesearch system 300. In some examples, theuser device 200 runs anative application 204 a that is dedicated to interfacing with thesearch system 300, such as anative application 204 a dedicated to searches (e.g., a search application 216). In some examples, theuser device 200 communicates with thesearch system 300 using a more general application 204, such as a web-browser application 204 b accessed using a web browsernative application 204 a. Although theuser device 200 may communicate with thesearch system 300 using thenative search application 216 and/or a web-browser application 204 b, theuser device 200 may be described hereinafter as using thenative search application 216 to communicate with thesearch system 300. In some implementations, the functionality attributed to thesearch application 216 may be included as a searching component of a larger application 204 that has additional functionality. For example, the functionality attributed to thesearch application 216 may be included as part of anative application 204 a or a web application 204 b as a feature that provides search capabilities. -
Native applications 204 a can perform a variety of different functions for auser 10. For example, a restaurant reservation application can make reservations for restaurants. As another example, an internet media player application can stream media (e.g., a song or movie) from the Internet. In some examples, a singlenative application 204 a can perform more than one function. For example, a restaurant reservation application may also allow a user to retrieve information about a restaurant and read user reviews for the restaurant in addition to making reservations. As another example, an internet media player application may also allow a user to perform searches for digital media, purchase digital media, and generate media playlists. - Referring to
FIGS. 1A-2 , thesearch system 300 includes asearch module 310 in communication with asearch data store 320. Thesearch data store 320 may include one or more databases, indices (e.g., inverted indices), tables, files, or other data structures which may be used to implement the techniques of the present disclosure. Thesearch module 310 receives aquery wrapper 210 and generatessearch results 220 based on the data included in thedata store 320. In some implementations, thesearch module 310 receives aquery wrapper 210 from theuser device 200 and performs a search forfunction records 330 included in thesearch data store 320 based on data included in thequery wrapper 210, such as asearch query 212. The function records 330 include one or more access mechanisms 202 that theuser device 200 can use to access different functions for a variety of different applications, such asnative applications 204 a installed on theuser device 200. Thesearch module 310 transmitssearch results 220 including a list of access mechanisms 202 to theuser device 200 that generated thequery wrapper 210. - The
user device 200 generates user selectablelinks 230 based on the received search results 220 (e.g., links 230-1, 230-2, . . . , 230-5 ofFIG. 2 ). Each user selectable link 230 displayed to theuser 10 may include an access mechanism 202. Theuser 10 may select a user selectable link 230 on theuser device 200 by interacting with the link 230 (e.g., touching or clicking the link). In response to selection of alink 230, theuser device 200 may launch a corresponding software application 204 (e.g., anative application 204 a or a web-browser application 204 b) referenced by the access mechanism 202 and perform one or more operations indicated in the access mechanism 202. - Access mechanisms 202 may include at least one of a native application access mechanism 202 a (hereinafter “application access mechanism”), a web access mechanism 202 b, and an application download mechanism 202 c. The
user device 200 may use the access mechanisms 202 to access functionality of applications 204. For example, theuser 10 may select a user selectable link 230 including an access mechanism 202 in order to access functionality of an application 204 indicated in the user selectable link 230. Thesearch module 310 may transmit one or more application access mechanisms 202 a, one or more web access mechanisms 202 b, and one or more application download mechanisms 202 c to theuser device 200 in the search results 220. - An application access mechanism 202 a may be a string that includes a reference to a
native application 204 a and indicates one or more operations for theuser device 200 to perform. If auser 10 selects a user selectable link 230 including an application access mechanism 202 a, theuser device 200 may launch thenative application 204 a referenced in the application access mechanism 202 a and perform the one or more operations indicated in the application access mechanism 202 a. - An application access mechanism 202 a includes data that the
user device 200 can use to access functionality provided by anative application 204 a. For example, an application access mechanism 202 a can include data that causes theuser device 200 to launch anative application 204 a and perform a function associated with thenative application 204 a. Performance of a function according to the access mechanism 202 may set thenative application 204 a into a specified state. Accordingly, the process of launching anative application 204 a and performing a function according to an application access mechanism 202 a may be referred to herein as launching thenative application 204 a and setting thenative application 204 a into a state that is specified by the application access mechanism 202 a. In some examples, an application access mechanism 202 a for a restaurant reservation application can include data that causes theuser device 200 to launch the restaurant reservation application and assist in making a reservation at a restaurant. In such examples, the restaurant reservation application may be set in a state that displays reservation information to theuser 10, such as a reservation time, a description of the restaurant, and user reviews. In additional examples, an application access mechanism 202 a for an internet media player application can include data that causes theuser device 200 to launch the internet media player application and stream media from the Internet. In such examples, the internet media player application may be set in a state that displays information regarding the media (e.g., music) being streamed, such as a song name, an artist, or an album name. - Application access mechanisms 202 a may have various different formats and content. The format and content of an application access mechanism 202 a may depend on the
native application 204 a with which the application access mechanism 202 is associated and the operations that are to be performed by thenative application 204 a in response to selection of the application access mechanism 202 a. For example, an application access mechanism 202 a for an internet music player application may differ from an application access mechanism 202 a for a shopping application. An application access mechanism 202 a for an internet music player application may include references to musical artists, songs, and albums, for example. The application access mechanism 202 a for an internet music player application may also reference operations, such as randomizing a list of songs and playing a song or album. An application access mechanism 202 a for a shopping application may include references to different products that are for sale. The application access mechanism 202 a for the shopping application may also include references to one or more operations, such as adding products to a shopping cart and proceeding to a checkout. - The
search system 300 transmits additional data in the search results 220 along with the application access mechanisms 202 a. For example, thesearch system 300 may transmit data (e.g., linkdata 232, such as text and/or images) which may be used by theuser device 200 to generate user selectablelinks 230 in the search results 220. Alink 230 may include text and/or images that theuser 10 may select (e.g., touch) via auser interface 240 displayed on a screen 201 (e.g., a display or touch screen) of theuser device 200. Each user selectable link 230 may be associated with an application access mechanism 202 a such that when theuser 10 selects alink 230, theuser device 200 launches thenative application 204 a referenced in the application access mechanism 202 a and performs the one or more operations indicated in the application access mechanism 202 a. The text and/or images of alink 230 displayed to theuser 10 may indicate the operations that will be performed in response to selection of thelink 230. For example, if thelink 230 is to a song in a music playing application, the text and/or images may identify the music application that will be launched by theuser device 200 and the song that will be played by the music playing application when theuser 10 selects thelink 230. - The
user 10 may select alink 230 to cause theuser device 200 to launch thenative application 204 a identified in thelink 230 and perform one or more operations according to the application access mechanism 202 a associated with thelink 230. Put another way, when theuser 10 selects alink 230, theuser device 200 launches anative application 204 a and sets thenative application 204 a into a state defined by the application access mechanism 202 a associated with the link. In general, a state of anative application 204 a may refer to the operations and/or the resulting outcome of thenative application 204 a in response to selection of alink 230. A state of anative application 204 a may also be referred to herein as an “application state.” - An application state specified by an application access mechanism 202 a may depend on the functionality provided by the
native application 204 a. For example, if anative application 204 a is configured to retrieve and display information from the Internet, thenative application 204 a can be set into a state in which thenative application 204 a retrieves information from the Internet and displays information to theuser 10. In another example, if anative application 204 a is configured to play media (e.g., music and/or video) from the Internet, thenative application 204 a can be set into a state in which thenative application 204 a is playing a song or a movie from the Internet. In another example, if anative application 204 a is configured to make restaurant reservations, thenative application 204 a can be set into a state in which thenative application 204 a displays available restaurant reservations to theuser 10. - A web access mechanism 202 b may include a resource identifier that includes a reference to a web resource (e.g., a page of a web application/website). For example, a web access mechanism 202 b may include a uniform resource locator (URL) (i.e., a web address) used with hypertext transfer protocol (HTTP). If a
user 10 selects a user selectable link 230 including a web access mechanism 202 b, theuser device 200 may launch the web browser application 204 b and retrieve the web resource indicated in the resource identifier. Put another way, if auser 10 selects a user selectable link 230 including a web access mechanism 202 b, theuser device 200 may launch a corresponding web-browser application 204 b and access a state (e.g., a page) of a web application/website. In some examples, web access mechanisms 202 b include URLs for mobile-optimized sites and/or full sites. - The web access mechanism 202 b included in a
function record 330 may be used by a web browser to access a web resource that includes similar information and/or performs similar functions as would be performed by anative application 204 a that receives an application access mechanism 202 a of thefunction record 330. For example, the web access mechanism 202 b of afunction record 330 may direct the web-browser application 204 b of theuser device 200 to a web version of thenative application 204 a referenced in the application access mechanisms 202 a of thefunction record 330. Moreover, if the application access mechanisms 202 included in afunction record 330 for a specific Mexican restaurant cause each application edition to retrieve information for the specific Mexican restaurant, the web access mechanism 202 b may direct the web-browser application 204 b of theuser device 200 to a web page entry for the specific Mexican restaurant. - An application download mechanism 202 c may indicate a location (e.g., a
digital distribution platform 130 b) where anative application 204 a can be downloaded in the scenario where thenative application 204 a is not installed on theuser device 200. If auser 10 selects a user selectable link 230 including an application download mechanism 202 a, theuser device 200 may access a digital distribution platform from which the referencednative application 204 a may be downloaded. Theuser device 200 may access adigital distribution platform 130 b using at least one of the web-browser application 204 b and one of thenative applications 204 a. - The
search module 310 is configured to receive aquery wrapper 210 from theuser device 200 via thenetwork 120. Aquery wrapper 210 may include asearch query 212, which may include text, numbers, and/or symbols (e.g., punctuation) entered into theuser device 200 by the user. For example, theuser 10 may enter thesearch query 212 into a search field 214 (e.g., a search box) of a graphical user interface (GUI) 240 of asearch application 216 running on theuser device 200. Auser 10 may enter asearch query 212 using a touchscreen keypad, a mechanical keypad, a speech-to-text program, or other form of user input. In general, asearch query 212 may be a request for information retrieval (e.g., search results) from thesearch system 300. For example, asearch query 212 may be directed to retrieving a list oflinks 230 to application functionality or application states in examples where thesearch system 300 is configured to generate a list of access mechanisms 202 as search results 220. Asearch query 212 directed to retrieving a list oflinks 230 to application functionality may indicate a user's desire to access functionality of one or more applications described by the search query. - The
query wrapper 210 may include additional data along with thesearch query 212. For example, thequery wrapper 210 may include geo-location data 218 that indicates the location of theuser device 200, such as latitude and longitude coordinates. Theuser device 200 may include a global positioning system (GPS) receiver that generates the geo-location data 218 transmitted in thequery wrapper 210. Thequery wrapper 210 may also include anIP address 228, which thesearch module 310 may use to determine the location of theuser device 200. In some examples, thequery wrapper 210 may also include additional data, including, but not limited to, platform data 222 (e.g., version of theoperating system 224, device type, and web-browser version), an identity of a user of the user device 200 (e.g., a username), partner specific data, and other data. - The
search module 310 can use thesearch query 212 and the additional data included in thequery wrapper 210 to generate the search results 220. For example, thesearch module 310 can determine a geo-location of theuser device 200, which thesearch module 310 can use along with thesearch query 212 to generate the search results 220. Thesearch module 310 can determine the geo-location of theuser device 200 based on the geo-location data 218 or other data (e.g., IP address 228) included in thequery wrapper 210. In some implementations, thesearch module 310 detects a location (e.g., a postal address, street name, city name, etc.) specified in the search query 212 (i.e., a query-specified location). In these implementations, thesearch module 310 can use the query-specified location along with thesearch query 212 to generate the search results 220. - The
search module 310 performs a search forfunction records 330 included in thesearch data store 320 in response to the received query wrapper 210 (e.g., in response to thesearch query 212 and the geo-location data 218). In some implementations, thesearch module 310 generates result scores 226 forfunction records 330 identified during the search. The result score 226 associated with afunction record 330 may indicate the relevance of thefunction record 330 to thesearch query 212. Ahigher result score 226 may indicate that thefunction record 330 is more relevant to thesearch query 212. Thesearch module 310 may retrieve access mechanisms 202 from the scored function records 330. Thesearch module 310 can transmit aresult score 226 along with an access mechanism 202 retrieved from a scoredfunction record 330 in order to indicate the rank of the access mechanism 202 among other transmitted access mechanisms 202. - An application access mechanism 202 a included in a
function record 330 may be an application resource identifier or a string that includes a reference to anative application 204 a and/or indicates one or more operations for execution by thenative application 204 a on theuser device 200. An application resource identifier may be a string having an application specific scheme in some examples. For example, the application resource identifier may include a reference to anative application 204 a, a domain name, and a path to be used by thenative application 204 a to retrieve and display information to theuser 10. In some examples, an application resource identifier is an application specific resource identifier that is defined by the developer of the application 204. In this example, thesearch application 216 receives the application resource identifier and theoperating system 224 may send the application resource identifier to thenative application 204 a referenced in the application resource identifier. Thenative application 204 a referenced in the application resource identifier launches and is set into the state specified by the application resource identifier. - In some examples, the application access mechanism 202 a includes operations for the
user device 200 to perform in addition to the operation(s) indicated in the application resource identifier. For example, thesearch application 216, theoperating system 224, and/or anative application 204 a on theuser device 200 may perform the operations included in the application access mechanism 202 a. In some examples, a script includes the operations. Examples of operations may include, but are not limited to, launching anative application 204 a, creating and sending a search request 212 (via a search wrapper 210) to anapplication server 112, setting a current geographic location in anative application 204 a, making a restaurant reservation, sending a text message, and adding an appointment to a calendar. - In some examples, an application access mechanism 202 a may not include an application resource identifier. Instead, the application access mechanism 202 a includes one or more operations that reference a
native application 204 a and indicate one or more operations for execution by theuser device 200. The one or more operations may include instructions for at least one of thesearch application 216, theoperating system 224, and/or anative application 204 a on theuser device 200. In response to selection of the application access mechanism 202 a, theuser device 200 may perform the operations included in the application access mechanism 202 a. In some examples, the operations may be included in a script. - In some examples, an application function may not be accessible using an application resource identifier. For example, a function of the application may not include a corresponding application resource identifier that the application 204 may use to perform the function. As another example, some applications 204 may not be configured to receive application resource identifiers. In these examples, an application access mechanism 202 for the
native application 204 a can include one or more operations that cause the native application to perform the function that may not otherwise be accessible using an application resource identifier. For example, thesearch application 216 may receive the one or more operations and execute the one or more operations to set thenative application 204 a into the desired application state. In some examples, the one or more operations may include launching thenative application 204 a along with additional operations for thenative application 204 a to perform. For example, thesearch application 216 may initially trigger thenative application 204 a to start and then wait for a period of time for thenative application 204 a to start. Then thesearch application 216 may perform additional operations included in the received application access mechanism 202, such as issuing a search instruction to thenative application 204 a. - In still other examples, a
native application 204 a may be configured to directly receive the operations transmitted by thesearch system 100. In these examples, thenative application 204 a may be launched according to the application access mechanism 202 and then the launchednative application 204 a may directly perform the operations received from thesearch system 100. - A single
native application 204 a can provide a variety of different functionalities. For example, a restaurant reservation application can access reviews for a variety of different restaurants and set up reservations at a variety of different restaurants. Similarly, a travel application can book hotels, book flights, and provide reviews for different travel destinations. The different functionalities associated with a single native application may be accessed using a plurality of different application access mechanisms. For example, with respect to the restaurant reservation application, thesearch data store 320 may includefunction records 330 having different application access mechanisms 202 for accessing different restaurant reviews and setting up reservations. Similarly, thesearch data store 320 may includefunction records 330 having different application access mechanisms 202 for booking hotels, booking flights, and accessing reviews for different travel destinations. - The application access mechanisms 202 for a single
native application 204 a may vary in complexity. In some examples, the application access mechanisms 202 may cause anative application 204 a to launch (e.g., theoperating system 224 may be instructed to launch the application 204) and then perform additional operations after launching, as described above. In other examples, application access mechanisms 202 may cause an application 204 to launch into a default state (e.g., a default homepage) without performing any additional operations. Afunction record 330 including an application access mechanism 202 that causes an application 204 to launch into a default state may be thought of as an access mechanism 202 that is related to thenative application 204 a, but not any particular state which may be accessed by the application 204. - The
search module 310 may transmit additional data to theuser device 200 along with the access mechanisms 202 and the result score(s) 226. For example, thesearch module 310 may transmit data (e.g., linkdata 232, such as text and/or images) to be included in the user selectable links 230. Data for the user selectable links 230 (e.g., text and/or images) may be referred to herein as “link data” (e.g., link data 232). Theuser device 200 displays the user selectablelinks 230 to theuser 10 based on receivedlink data 232. Each user selectable link 230 may be associated with an access mechanism 202 included in the search results 220, such that when auser 10 selects alink 230, theuser device 200 launches the application 204 referenced in the access mechanism 202 and sets the application 204 into the state specified by the access mechanism 202. - With reference to
FIG. 2 , theuser device 200 may receive a set ofsearch results 220 from thesearch module 310 in response to transmission of thequery wrapper 210 to thesearch system 300. TheGUI 240 of thesearch application 216 displays (e.g., renders) the search results 220 received from thesearch module 310. Thesearch application 216 may display the search results 220 to the user in a variety of different ways, depending on what information is transmitted to theuser device 200. In examples where the search results 220 include a list of access mechanisms 202 and linkdata 232 associated with the access mechanisms 202, thesearch application 216 may display the search results 220 to theuser 10 as a list of user selectablelinks 230 including text and images. The text and images in thelinks 230 may include application names associated with the access mechanisms 202, text describing the access mechanisms 202, images associated with the application 204 referenced by the access mechanisms 202 (e.g., application icons), and images associated with the application state (e.g., application screen images) defined by the access mechanisms 202. - In some implementations, the
search application 216 displays the search results 220 as a list oflinks 230 arranged under thesearch field 214 in which theuser 10 entered thesearch query 212. Moreover, thesearch application 216 may arrange thelinks 230 in order based onresult scores 226 associated with the access mechanisms 202 included in thelinks 230. In some examples, thesearch application 216 groups thelinks 230 together if thelinks 230 are related to the same application 204 (e.g., anative application 204 a). - Each of the
links 230 includeslink data 232. For example, each of thelinks 230 includes an image (e.g., an icon) and text (e.g., an application or business name) that may describe an application and a state of an application. Each of thelinks 230 may include an access mechanism so that if a user selects one oflinks 230, theuser device 200 launches the application and sets the application into a state that is specified by the access mechanism associated with the selected link. In some implementations, theuser device 200 may arrange thelinks 230 based on result scores associated with the access mechanisms included in thelinks 230. In some implementations, as illustrated inFIG. 2 ,links 230 for the same application 204 may be combined together in the search results 220 displayed to theuser 10. - With respect to
FIG. 2 , it may be assumed that thenative application 204 a for YELP® developed by Yelp, Inc., and thenative application 204 a for TRIPADVISOR® developed by TripAdvisor, Inc., are installed on theuser device 200. Links 230-1, 230-2 and link 230-3 reference the YELP® native application and the TRIPADVISOR® native application, respectively. TheGUI 240 includes aheader 242, including the name “Yelp,” under which the links 230-1, 230-2 are arranged. Theheader 242 may indicate that the links 230-1, 230-2 arranged below theheader 242 are associated with the YELP®native application 204 a. Selection of link 230-1 may cause theuser device 200 to launch the YELP®native application 204 a and retrieve an IHOP® restaurant entry of the YELP®native application 204 a. Selection of link 230-2 may cause theuser device 200 to launch the YELP®native application 204 a and retrieve a DENNY'S® restaurant entry of the YELP®native application 204 a. Selection of link 230-3 may cause theuser device 200 to launch the TRIPADVISOR®native application 204 a and retrieve an entry for “Late night diners” in the TRIPADVISOR®native application 204 a (e.g., a search for “Late night diners”). Theheader 242 may include anexpansion element 250 for displaying all or some of thelinks 230 associated with theheader 242. Theexpansion element 250 includes acollapsed state 250 a (FIGS. 8F and 8H ) and an expanded state 250 b (FIGS. 8G and 8I ) that are mutually exclusive. As described, theexpansion element 250 toggles between thecollapsed state 250 a and the expanded state 250 b. Theexpansion element 250 may include an expansion button separate from a collapse button. In some examples, thesearch application 216groups links 230 together when thelinks 230 are related to the same application 204. In such a case, thesearch application 216 only displays theheader 242 associated with the application 204 and auser 10 may select theexpansion element 250 to view thelinks 230. In other examples, thesearch application 216 displays a threshold number of links 230 (e.g., three links 230) and when theuser 10 selects theexpansion link 250 the remainder of the search results 220, i.e.,links 230 associated with the application 204 are displayed. - Link 230-4 includes a web access mechanism 202 b (e.g., a URL). Selection of link 230-4 may cause the
user device 200 to launch the web-browser application 204 b and retrieve an entry for “Late night diners” in the OPENTABLE® web-browser application 204 b developed by OpenTable, Inc. Link 230-5 includes an application download mechanism 202 c for the URBANSPOON®native application 204 a by InterActiveCorp. Selection of link 230-5 may cause theuser device 200 to access adigital distribution platform 130 b (FIG. 1B ) from which the URBANSPOON®native application 204 a can be downloaded and/or previewed. Thesearch module 310 can be configured to transmit any combination of application access mechanisms 202 a, web access mechanisms 202 b, and application download mechanisms 202 c in the search results 220. - In some examples,
user devices 200 communicate with thesearch system 300 via a partner computing system (not illustrated). The partner computing system may be a computing system of a third party that may leverage the search functionality of thesearch system 300. The partner computing system may belong to a company or organization other than that which operates thesearch system 300. Example third parties which may leverage the functionality of thesearch system 300 may include, but are not limited to, internet search providers and wireless communications service providers. Theuser devices 200 may send search queries to thesearch system 300 and receive search results via the partner computing system. The partner computing system may provide a user interface to theuser devices 200 in some examples and/or modify the search experience provided on theuser devices 200. -
FIG. 1B shows a plurality ofdata sources 130. Thedata sources 130 may be sources of data which the search system 300 (e.g., the search module 310) may use to generate and update thedata store 320. The data retrieved from thedata sources 130 can include any type of data related to application functionality and/or application states. Data retrieved from thedata sources 130 may be used to create and/or update one or more databases, indices, tables (e.g., an access table), files, or other data structures included in thedata store 320. For example,function records 330 may be created and updated based on data retrieved from the data sources 130. In some examples, some data included in adata source 130 may be manually generated by a human operator. Data included in the function records 330 may be updated over time so that thesearch system 300 provides up-to-date results. - The
data sources 130 may include a variety of different data providers. Thedata sources 130 may include data fromapplication developers 130 a, such as application developers' websites and data feeds provided by developers. Thedata sources 130 may include operators ofdigital distribution platforms 130 b configured to distributenative applications 204 a touser devices 200. Exampledigital distribution platforms 130 b include, but are not limited to, the GOOGLE PLAY® digital distribution platform by Google, Inc., the APP STORE® digital distribution platform by Apple, Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation. - The
data sources 130 may also include other websites, such as websites that includeweb logs 130 c (i.e., blogs),application review websites 130 d, or other websites including data related to applications. Additionally, thedata sources 130 may includesocial networking sites 130 e, such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets).Data sources 130 may also includeonline databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants.Data sources 130 may also include additional types of data sources in addition to the data sources described above.Different data sources 130 may have their own content and update rate. - The
search system 300 retrieves data from one or more of the data sources 130. The data retrieved from thedata sources 130 can include any type of data related to application functionality and/or application states. Thesearch system 300 generatesfunction records 330 based on the data retrieved from the data sources 130. In some examples, a human operator manually generates some data included in the function records 330. Thesearch system 300 may update data included in thefunction records 330 over time so that thesearch system 300 provides up-to-date results 220. - Referring to
FIGS. 3A and 3B , thesearch data store 320 includes a plurality of different function records 330. Eachfunction record 330 may include data related to a function of an application 204 and/or the state of the application 204 resulting from performance of the function. Afunction record 330 may include a function identifier (ID) 332,application state information 334, an application identifier (ID) 336, and one or more access mechanisms 202, 202 a, 202 b, 202 c used to access functionality provided by an application 204. - The
function ID 332 may be used to identify thefunction record 330 among theother function records 330 included in thesearch data store 320. Thefunction ID 332 may be a string of alphabetic, numeric, and/or symbolic characters (e.g., punctuation marks) that uniquely identifies the associatedfunction record 330. In some examples, thefunction ID 332 describes a function and/or an application state in human readable form. For example, thefunction ID 332 may include the name of the application 204 referenced in the access mechanism(s) 202. In a specific example, afunction ID 332 for an internet music player application may include the name of the internet music player application along with the song name that will be played when the internet music player application is set into the state defined by the application access mechanism included in the function record. Additionally or alternatively, thefunction ID 332 may be a human readable string that describes a function performed according to the access mechanism(s) 202 and/or an application state resulting from performance of the function according to the access mechanism(s) 202. In some examples, thefunction ID 332 includes a string in the format of a uniform resource locator (URL) of a web access mechanism 202 b for thefunction record 330, which may uniquely identify thefunction record 330. - In a more specific example, if the
function record 330 describes a function of the YELP® native application, thefunction ID 332 may include the name “Yelp” along with a description of the application state described in theapplication state information 334. For example, thefunction ID 332 for afunction record 330 that describes the restaurant named “The French Laundry” may be “Yelp—The French Laundry.” In an example where thefunction ID 332 includes a string in the format of a URL, thefunction ID 332 may include the following string “http://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1” to uniquely identify thefunction record 330. In additional examples, thefunction ID 332 may include a URL using a namespace other than “http://,” such as “func://,” which may indicate that the URL is being used as a function ID in a function record. For example, thefunction ID 332 may include the following string “func://www.yelp.com/biz/the-french-laundry-yountville-2?ob=1.” - The
application state information 334 may include data that describes an application state into which an application 204 is set according to the access mechanism(s) 202 in thefunction record 330. Additionally or alternatively, theapplication state information 334 may include data that describes the function performed according to the access mechanism(s) 202 included in thefunction record 330. Theapplication state information 334 can include text, numbers, and symbols that describe the application state. The types of data included in theapplication state information 334 may depend on the type of information associated with the application state and the functionality specified by the application access mechanism 202 a. Theapplication state information 334 may include a variety of different types of data, such as structured, semi-structured, and/or unstructured data. Theapplication state information 334 may be automatically and/or manually generated based on documents retrieved from the data sources 130. Moreover, theapplication state information 334 may be updated so that up-to-date search results 220 can be provided in response to asearch query 212. - In some examples, the
application state information 334 includes data that may be presented to theuser 10 by an application 204 when the application 204 is set in the application state defined by the access mechanism(s) 202. For example, if one of the access mechanism(s) 202 is an application access mechanism 202 a, theapplication state information 334 may include data that describes a state of thenative application 204 a after theuser device 200 has performed the one or more operations indicated in the application access mechanism 202 a. For example, if thefunction record 330 is associated with a shopping application, theapplication state information 334 may include data that describes products (e.g., names and prices) that are shown when the shopping application is set to the application state defined by the access mechanism(s) 202. As another example, if thefunction record 330 is associated with a music player application, theapplication state information 334 may include data that describes a song (e.g., name and artist) that is played when the music player application is set to the application state defined by the access mechanism(s) 202. - The types of data included in the
application state information 334 may depend on the type of information associated with the application state and the functionality defined by the access mechanism(s) 202. For example, if thefunction record 330 is for an application 204 that provides reviews of restaurants, theapplication state information 334 may include information (e.g., text and numbers) related to a restaurant, such as a category of the restaurant, reviews of the restaurant, and a menu for the restaurant. In this example, the access mechanism(s) 202 may cause the application 204 (e.g., anative application 204 a or a web-browser application 204 b) to launch and retrieve information for the restaurant. As another example, if thefunction record 330 is for an application 204 that plays music, theapplication state information 334 may include information related to a song, such as the name of the song, the artist, lyrics, and listener reviews. In this example, the access mechanism(s) 202 may cause the application 204 to launch and play the song described in theapplication state information 334. - The
search system 300 may generateapplication state information 334 included in afunction record 330 in a variety of different ways. In some examples, thesearch system 300 retrieves data to be included in theapplication state information 334 via partnerships with database owners and developers ofnative applications 204 a. For example, thesearch system 300 may automatically retrieve the data fromonline databases 130 f that include, but are not limited to, data related to movies, television programs, music, and restaurants. In some examples, a human operator manually generates some data included in theapplication state information 334. Thesearch system 300 may update data included in theapplication state information 334 over time so that thesearch system 300 provides up-to-date results 220. - The
application ID 336 may be used to identify anative application 204 a associated with thefunction record 330. Theapplication ID 336 may be a string of alphabetic, numeric, and/or symbolic characters (e.g., punctuation marks) that uniquely identifies the associatednative application 204 a. In some examples, theapplication ID 336 thenative application 204 a in human readable form. For example, theapplication ID 336 may include the name of the application 204 referenced in the access mechanism(s) 202. In a specific example, theapplication ID 336 for a restaurant finder application 204 may include the name of the restaurant finder application. - A
function record 330 including an application access mechanism 202 that causes an application 204 to launch into a default state may includeapplication state information 334 describing thenative application 204 a, instead of any particular application state. For example, theapplication state information 334 may include the name of the developer of the application 204, the publisher of the application 204, a category 335 a (e.g., genre) of the application 204, a description 335 b of the application 204 (e.g., a developer's description), and the price of the application 204. Theapplication state information 334 may also include security or privacy data about the application 204, battery usage of the application 204, and bandwidth usage of the application 204. Theapplication state information 334 may also include application statistics. Application statistics may refer to numerical data related to anative application 204 a. For example, application statistics may include, but are not limited to, a number of downloads, a download rate (e.g., downloads per month), a number of ratings, and a number of reviews. -
FIG. 3B shows anexample function record 330 associated with the OPENTABLE® application, developed by OpenTable, Inc. The OPENTABLE® application is a restaurant-reservation application that allows users to search for restaurants and make restaurant reservations. The OPENTABLE® application provides information about restaurants including descriptions of restaurants and user reviews of the restaurants. Theexample function record 330 ofFIG. 3B describes an application state of the OPENTABLE® application in which the OPENTABLE® application accesses information for THE FRENCH LAUNDRY® restaurant. - The
example function record 330 includes afunction ID 332 of “OPENTABLE—THE FRENCH LAUNDRY,” which may be used as a unique identifier to identify thefunction record 330. In other examples, thefunction ID 332 could include a URL as a unique identifier for thefunction record 330. For example, thefunction ID 332 may include the string “http://www.opentable.com/the-french-laundry” as a unique identifier for thefunction record 330. As described herein, such a function ID may be included in a web access mechanism 202 b of afunction record 330. As another example, thefunction ID 332 may have a different namespace than “http://,” such as “func://.” In yet another example, thefunction ID 332 could be a string of characters, numbers, and/or symbols that are not in human readable form. Each example is optional and may be combined with other examples. - The example
application state information 334 includesdata fields 335, such as a category 335 a of THE FRENCH LAUNDRY® restaurant, a description 335 b of THE FRENCH LAUNDRY® restaurant, user reviews 335 c of THE FRENCH LAUNDRY® restaurant, and additional data fields 335. The restaurant category 335 a field may include the text “French cuisine” and “contemporary,” for example. The description field 335 b may include text that describes THE FRENCH LAUNDRY® restaurant. The user reviews field 335 c may include text of user reviews for THE FRENCH LAUNDRY® restaurant. Theadditional data fields 335 may include additional data for THE FRENCH LAUNDRY® restaurant that may not specifically fit within the other defined fields, such as a menu for the restaurant, prices, and operating hours for the restaurant. - The
function record 330 includes one or more access mechanism(s) 202. The access mechanism(s) 202 may include a reference to the OPENTABLE® application 204. An example application access mechanism 202 a for thefunction record 330 may include a reference to the OPENTABLE®native application 204 a along with one or more operations to be performed by theuser device 200. For example, the application access mechanism 202 a may include an application resource identifier and/or one or more operations that cause theuser device 200 to access the entry for THE FRENCH LAUNDRY® restaurant in the OPENTABLE® native application. An example application resource identifier may be “vnd.opentable.deeplink://opentable.com/restaurant/profile?rid=1180&refid=1.” - In some implementations, a
function record 330 includes multiple different application access mechanisms 202, 202 a, 202 b, 202 c that may include a variety of information. The application access mechanism 202 may include edition information that indicates the application edition with which the application access mechanism 202 is compatible. For example, the edition information may indicate theoperating system 224 with which the application access mechanism 202 is compatible. Moreover, different application access mechanisms 202 may be associated with different editions of anative application 204 a. A native application edition (hereinafter “application edition”) refers to a particular implementation or variation of anative application 204 a. For example, an application edition may refer to a version of anative application 204 a, such as a version 1.0 of anative application 204 a or a version 2.0 of anative application 204 a. In another example, an application edition may refer to an implementation of anative application 204 a for a specific platform, such as aspecific operating system 224. - The different application access mechanisms 202 included in a
function record 330 may cause the corresponding application editions to launch and perform similar functions. Accordingly, the different application access mechanisms 202 included in afunction record 330 may cause the corresponding application editions to be set into similar application states. For example, if the different application access mechanisms 202 reference different editions of an information retrieval application, the different application access mechanisms 202 may cause the corresponding application editions to retrieve similar information. In another example, if the different application access mechanisms 202 reference different editions of an internet music player application, the different application access mechanisms 202 may cause the corresponding application editions to play the same song. - In some examples, a
function record 330 for a native application that retrieves restaurant information may include multiple different application access mechanisms 202 for multiple different application editions. Assuming thefunction record 330 is associated with a specific Mexican restaurant, the application access mechanisms 202 for the different application editions may cause each application edition to retrieve information for the same specific Mexican restaurant. For example, a first application access mechanism 202 may cause a first application edition (e.g., on a first OS) to retrieve information for the specific Mexican restaurant. A second application access mechanism 202 may cause a second application edition (e.g., on a second OS) to retrieve information for the specific Mexican restaurant. In some examples, thesearch system 300 can determine whether to transmit the application access mechanism 202 in the search results 220 based on whether theuser device 200 can handle the application access mechanism 202. - Referring also to
FIG. 2 , thesearch system 300 generatessearch results 220 including a list of application access mechanisms 202 that are included in selected function records 330. Initially, thesearch system 300 analyzes thesearch query 212 received from theuser device 200. Thesearch system 300 then identifies a set offunction records 330 based on the receivedsearch query 212. For example, thesearch system 300 may identify the set offunction records 330 based on matches (e.g., text matches) between terms of thesearch query 212 and terms of theapplication state information 334 included in the identified function records 330. - The
search system 300 processes (e.g., scores) the identified set of function records 330. For example, thesearch system 300 may determine how well thefunction records 330 match the receivedsearch query 212. Thesearch system 300 may then select the application access mechanisms 202 from the function records 330 that best match the receivedsearch query 212. Thesearch system 300 transmitssearch results 220 including the selected application access mechanisms 202 to theuser device 200 that generated thesearch query 212. Thesearch system 300 may also transmit additional data along with the application access mechanisms 202. For example, thesearch system 300 may transmit data (e.g., linkdata 232, such as text and/or images) to be included in user selectablelinks 230. - During some searches, the
search system 300 may identify one ormore function records 330 that include multiple application access mechanisms 202. In these scenarios, thesearch system 300 may process (e.g., score) the identified set offunction records 330 in the manner described above. For each identifiedfunction record 330 including multiple application access mechanisms 202, thesearch system 300 may select which application access mechanisms 202 to transmit to theuser device 200. In some examples, thesearch system 300 transmits each of the application access mechanisms 202 of the identifiedfunction record 330 to theuser device 200 so that theuser device 200 may determine which application access mechanism 202 to use. In other examples, thesearch system 300 determines which of the multiple application access mechanisms 202 to transmit to theuser device 200 based on information included in thequery wrapper 210 received from theuser device 200. For example, thesearch system 300 may select and transmit one or more of the application access mechanisms 202 that are likely to be compatible with theuser device 200, e.g., based on a version of theoperating system 224 of theuser device 200. - During some searches, the
search system 300 may identify one ormore function records 330 that include application access mechanisms 202 a and one or more web access mechanisms 202 b. In these scenarios, thesearch system 300 may process (e.g., score) the identified set offunction records 330 in the manner described above. For each identifiedfunction record 330 including application access mechanisms 202 a and a web access mechanism 202 b, thesearch system 300 may determine whether to transmit the web access mechanism 202 b and the application access mechanisms 202 a. In some examples, the search system may transmit the web access mechanism and each of the multiple application access mechanisms to the user device so that the user device can determine which of the access mechanisms to use. In other examples, the search system may determine whether any of the application access mechanisms should be transmitted to the user device. If the search system determines that none of the application access mechanisms are likely to be compatible with the user device, the search system can refrain from sending the application access mechanisms to the user device. Instead, the search system may transmit the web access mechanism to the user device. As described above, the user device may use a web browser to access the web resource identified in the web access mechanism. - Referring to
FIGS. 1B, 2, 3C and 3D , in some implementations, the search results 220 include anadvertisement 371. Theadvertisement icon 371 is indicative of an advertisement from an advertiser. An advertiser may generally refer to any party that advertises onsearch results 220 displayed on a user screen 201 (e.g., a display or touchscreen) generated by asearch system 300, either to advertise its own goods and services or the goods and services of a related party. An advertiser can advertise, for example, a business, products, services, media content, or any other suitable item of commerce referenced in an application 204. The search results 220 displayed on auser screen 201 provide advertisers with a medium to advertise websites or other services. Typically, an advertiser can register one or more keywords and an advertisement with a company that provides the service of the search and/or provides the search result page, such that when asearch system 300user 10 includes the one or more keywords in asearch query 212, thesearch system 300 may also include theadvertisements 371 corresponding to the one or more keywords in the search results 220. Thesearch system 300 can sell the keywords according to different advertising schemes, including cost per number of impressions (e.g., number of views), cost per click-through, and cost per action. According to the cost per number of views model, the advertiser agrees to pay a specified amount each time the advertisement is displayed a specified number of times on a result page in response to arelevant search query 212. According to the cost per click-through model, the advertiser agrees to a pay a specified amount each time auser 10 clicks on the advertisement 271 displayed in response to arelevant search query 212. According to the cost per action model, the advertiser agrees to pay a specified amount each time auser 10 performs a specific action in response to the advertisement 271 being displayed. For example, the advertiser can agree to pay the specified amount when auser 10 clicks on a hyperlink in the advertisement 271 and makes a purchase from the website associated with the advertisement 271. - In some implementations, an
advertisement system 360 generates one ormore advertisements 371 for theuser 10. Theadvertisement system 360 transmits (e.g., serves) the generatedadvertisement 371 to thecomputing device 200 of theuser 10. Thecomputing device 200 of theuser 10 may display on thedisplay 201 of theuser computing device 200 theadvertisement 371 along with the search results 220. Theadvertisement 371 may include information indicating that theadvertisement 371 is a sponsored result. For example, theadvertisement 371 may include text indicating that the sponsored application is a “Sponsored Result” an “Advertisement” or an “AD.” - The
advertisement system 360 includes anadvertisement data store 362 that theadvertisement system 360 may use to generateadvertisements 371. Theadvertisement data store 362 includes data associated with a plurality ofdifferent advertisements 371. The data associated with anadvertisement 371 may be referred to as an “an advertisement record” (e.g.,advertisement record 370 ofFIG. 3C ). Theadvertisement data store 362 may include a plurality ofadvertisement records 370 that each include data for adifferent advertisement 371. The advertisement records 370 may be generated by advertisers (using advertiser devices 368), by advertisement agencies, or by providers of any of the search and advertisement generation functionalities described above (i.e., by providers of one or more of thesearch system 300 and the advertisement system 360). Anadvertisement 371 may include an application advertisement or an entity (e.g., business) advertisement. - An
advertisement record 370 may include a variety of different types of data related to anadvertisement 371. Anadvertisement record 370 may include data that identifies theadvertisement record 370. For example, theadvertisement record 370 may include an advertisement name and/or advertisement identifier (i.e., an “advertisement ID”) 372 that identifies theadvertisement record 370 among thedifferent advertisement records 370 in theadvertisement data store 362. - An
advertisement record 370 may also include a sponsored application name and/or sponsored application ID that identifies a sponsored application and/or a business associated with theadvertisement record 370. A sponsored application 204 may be an application 204 for which an advertiser has paid to have the application 204 displayed to auser 10. For example, an advertiser may pay for a sponsored application 204 to be advertised along with search results generated by thesearch system 300. Theadvertisement record 370 includesadvertisement content 376 used to generate anadvertisement 371 for the sponsored application 204 of theadvertisement record 372. For example, advertisement content may include text, images (e.g., icons), animations, and videos associated with the sponsored application 204. The advertisement 371 (e.g., text and images) for a sponsored application 204 may be displayed along with the list of applications 204 included in the search results 220 on a user'scomputing device 200. - The
advertisement record 370 may also includeadvertisement parameters 378.Advertisement parameters 378 may definebudget parameters 392 associated with advertising the sponsored application 204.Advertisement parameters 378 may also define timingparameters 394 associated with advertising the sponsored application 204, such as start and stop dates for advertising the sponsored application 204 and/or time(s) of day during which the sponsored application 204 is to be advertised. Additionally,advertisement parameters 378 may specify user parameters associated with advertising the sponsored application 204, such as, e.g., one or more search query languages for which the sponsored application 204 is to be advertised and/or the number of times a particular advertisement is to be displayed to eachuser 10. Other parameters are possible as well. -
Advertisement parameters 378 may also include a variety of different types of targetingparameters 380. A targetingparameter 380 may refer to a condition that should be satisfied before theadvertisement system 360 generates anadvertisement 371. Theadvertisement system 360 may use targetingparameters 380 in anadvertisement record 370 to determine whether to generate anadvertisement 371 for the sponsored application 204 of theadvertisement record 370. For example, theadvertisement system 360 may generate anadvertisement 371 for the sponsored application 204 listed in anadvertisement record 370 when one ormore targeting parameters 380 of theadvertisement record 370 are satisfied. Example types of targetingparameters 380 may include, but are not limited to,keyword targeting parameters 382 andplatform targeting parameters 384. - Additional advertisement (e.g., target)
parameters 378 may include, e.g., time-slotting, day-parting, category, geographical, contextual, demographic, behavioral, platform, device, and partner parameters. In other words, in some examples, theadvertisement system 360 may generate anadvertisement 371 for a sponsored application 204 in one or more of the following instances: 1) during one or more designated time slots; 2) on one or more given days or during one or more specified portions thereof; 3) for one or more particular categories of applications 204 included in the search results 220; 4) forusers 10 located in one or more geographic locations or regions; 5) based on context (e.g., for one or more states of the user'scomputing device 200, thesearch system 300, and/or the advertisement system 360); 6) for one or more specified user types or groups; 7) when one or more user behaviors are detected (e.g., when theuser 10 interacts with the user'scomputing device 200 in a particular manner); 8) for one or more platform (e.g., operating system) and device types associated with the user'scomputing device 200 or the applications 204 included in the search results 220; or 9) when one or more specified partner computing systems are used (e.g., when the user'scomputing device 200 communicates with thesearch system 300 and/or theadvertisement system 360 via a designated partner computing system). - An
advertisement record 370 may include a targetingparameter function 381. A targetingparameter function 381 may define which of the targetingparameters 380 of theadvertisement record 370 should be satisfied in order to generate anadvertisement 371. In some examples, the targetingparameter function 381 includes asingle targeting parameter 380. In these examples, theadvertisement system 360 may generate anadvertisement 371 for a sponsored application 204 based on satisfaction of asingle targeting parameter 380, such as asimilarity targeting parameter 381 or akeyword targeting parameter 384. In other examples, the targetingparameter function 381 includes multiple different targetingparameters 380. In these examples, theadvertisement system 360 may generate anadvertisement 371 for a sponsored application 204 based on satisfaction of multiple targetingparameters 380, such as one or moresimilarity targeting parameters 381, one or morekeyword targeting parameters 382, and aplatform targeting parameter 384. In scenarios where a targetingparameter function 381 includes multiple targetingparameters 380, the targetingparameter function 381 may include a Boolean function that includes the multiple targetingparameters 380. -
FIG. 4A shows anexample search module 310 that includes aquery analysis module 400, a consideration set generation module 402 (hereinafter “setgeneration module 402”), and a consideration set processing module 404 (hereinafter “setprocessing module 404”). Thequery analysis module 400 receives thequery wrapper 210 and analyzes the receivedsearch query 212. Thequery analysis module 400 may perform various analysis operations on the receivedsearch query 212, which may include, but are not limited to, tokenization of thesearch query 212, filtering of thesearch query 212, stemming, synonymization, and stop word removal. In some implementations, thequery analysis module 400 detects a query-specified location included in thesearch query 212. - The
set generation module 402 identifies a plurality offunction records 330 based on the receivedsearch query 212. In some examples, theset generation module 402 identifies thefunction records 330 based on matches between terms of thesearch query 212 and terms in the function records 330. For example, theset generation module 402 may identify thefunction records 330 based on matches between tokens generated by thequery analysis module 400 and words included in the function records 330, such as words included in thefunction IDs 332 and/or theapplication state information 334. - The consideration set 350 of
function records 330 may refer to the function records 330 that are to be scored by theset processing module 404. Theset generation module 402 may determine the geo-location of theuser device 200 based on data included in thequery wrapper 210. In additional examples, if thequery analysis module 400 detects a query-specified location, theset generation module 402 uses the query-specified location as the search location. In some examples, theset generation module 402 uses the geo-location of theuser device 200 as the search location (e.g., to filterfunction records 330 based on location). - The
set processing module 404 may score thefunction records 330 in the consideration set 350 in order to generate a set of search results 220. Thescores 226 associated with the function records 330 may be referred to as “result scores.” Theset processing module 404 may determine aresult score 226 for each of thefunction records 330 in the consideration set 350. The result scores 226 associated with afunction record 330 may indicate the relative rank of the function record 330 (e.g., by the access mechanisms 202) among other function records 330. For example, alarger result score 226 may indicate that afunction record 330 is more relevant to the receivedsearch query 212. - The
set processing module 404 selects application access mechanisms 202 from the selected function records 330 (e.g., the highest scoring function records). Theset processing module 404 transmits the selected application access mechanisms 202 to theuser device 200 that generated thesearch query 212. Theset processing module 404 may also transmit the result scores 226 associated with the selected application access mechanisms 202. For example, an application access mechanism 202 may be associated with theresult score 226 of thefunction record 330 from which the application access mechanism 202 was selected. - The information conveyed by the search results 220 may depend on how the result scores 226 are calculated by the
set processing module 404. For example, the result scores 226 may indicate the relevance of an application function or application state to thesearch query 212, the popularity of an application function or state, or other properties of the application function or state, depending on what parameters theset processing module 404 uses to score the function records 330. - The
set processing module 404 may generate resultscores 226 forfunction records 330 in a variety of different ways. In some implementations, theset processing module 404 generates aresult score 226 for afunction record 330 based on one or more scoring features. The scoring features may be associated with thefunction record 330 and/or thesearch query 212. A function record scoring feature (hereinafter “record scoring feature”) may be based on any data associated with afunction record 330. For example, record scoring features may be based on any data included in theapplication state information 334 of thefunction record 330. Example record scoring features may be based on metrics associated with a person, place, or thing described in thefunction record 330. Example metrics may include the popularity of a place described in thefunction record 330 and/or ratings (e.g., user ratings) of the place described in thefunction record 330. For example, if thefunction record 330 describes a song, a metric may be based on the popularity of the song described in thefunction record 330 and/or ratings (e.g., user ratings) of the song described in thefunction record 330. The record scoring features may also be based on measurements associated with thefunction record 330, such as how often thefunction record 330 is retrieved during a search and how often access mechanisms 202 of thefunction record 330 are selected by auser 10. Record scoring features may also be based on whether thefunction record 330 includes an application access mechanism 202 that leads to a default state or a deeper native application state. - A query scoring feature may include any data associated with the
search query 212. For example, query scoring features may include, but are not limited to, a number of words in thesearch query 212, the popularity of thesearch query 212, and the expected frequency of the words in thesearch query 212. A record-query scoring feature may include any data generated based on data associated with both thefunction record 330 and thesearch query 212 that resulted in identification of thefunction record 330 by theset generation module 402. For example, record-query scoring features may include, but are not limited to, parameters that indicate how well the terms of thesearch query 212 match the terms of theapplication state information 334 of the identifiedfunction record 330. Theset processing module 404 may generate aresult score 226 for afunction record 330 based on at least one of the record scoring features, the query scoring features, and the record-query scoring features. - The
set processing module 404 may determine aresult score 226 for afunction record 330 based on one or more of the scoring features listed herein and/or additional scoring features not explicitly listed. In some examples, theset processing module 404 may include one or more machine learned models (e.g., a supervised learning model) configured to receive one or more scoring features. The one or more machine learned models may generate resultscores 226 based on at least one of the record scoring features, the query scoring features, and the record-query scoring features. For example, theset processing module 404 may pair thesearch query 212 with eachfunction record 330 and calculate a vector of features for each (query, record) pair. The vector of features may include one or more record scoring features, one or more query scoring features, and one or more record-query scoring features. Theset processing module 404 may then input the vector of features into a machine-learned regression model to calculate a result score for thefunction record 330. In some examples, the machine-learned regression model may include a set of decision trees (e.g., gradient boosted decision trees). In another example, the machine-learned regression model may include a logistic probability formula. In some examples, the machine learned task can be framed as a semi-supervised learning task, where a minority of the training data is labeled with human curated scores and the rest are used without human labels. - The result scores 226 associated with the function records 330 (e.g., access mechanisms 202) may be used in a variety of different ways. The
set processing module 404 and/or theuser device 200 may rank the access mechanisms 202 based on the result scores 226 associated with the access mechanisms 202. In these examples, a larger result score may indicate that the access mechanism 202 (e.g., the function or application state) is more relevant to a user than an access mechanism 202 having a smaller result score. In examples where theuser device 200 displays the search results 220 as a list, theuser device 200 may display thelinks 230 for access mechanisms 202 havinglarger result scores 226 nearer to the top of the results list (e.g., near to the top of the screen). In these examples, theuser device 200 may display thelinks 230 for access mechanisms 202 havinglower result scores 226 farther down the list (e.g., off screen). In some examples, as illustrated inFIG. 2 , theuser device 200 groups together thelinks 230 associated with the samenative application 204 a. - Referring to
FIG. 4B , in some implementations, theset processing module 404 filters thefunction records 330 based on one or more criteria. The criteria may be based on characteristics of the function records 330 and/or characteristics associated with theuser 10. In the example shown, theset processing module 404 filters thefunction records 330 based onapplication ID 336. If theset generation module 402 generates a consideration set 350 of function records 330 (orfunction IDs 332 corresponding to functionrecords 330, as shown) and the consideration set 350 includes a number offunction records 330 associated with the same application 204, theset processing module 404 may filter the function records 330 (e.g., based on application ID 336) to reduce the consideration set 350. Theset processing module 404 may restrict the number offunction records 330 associated with any one application 204 to a maximum number offunction records 330 for that application 204. For example, if the consideration set 350 includes fivefunction records 330 for the YELP®native application 204 a, but theset processing module 404 has a policy that limits the number offunction records 330 for any given application 204 to threefunction records 330, theset processing module 404 can eliminate two of the fivefunction records 330 from the consideration set 350 (or results 220). Theset processing module 404 may eliminatefunction records 330 based on theirresult score 226 and/or some other metric, such as location, user preference, etc. Theset processing module 404 may implement a policy of limitingfunction records 330 associated with one or more applications 204 to limit the result set 220 to a manageable number or a number practical for displaying on theuser device 200. - In some implementations, the
set processing module 404 groups the function records 330. Theset processing module 404 may group byapplication ID 336, access mechanism 202,application state information 334, aresult score 226, or some other attribute associated with thefunction record 330. By grouping thefunction records 330 byapplication ID 336, thesearch application 216 can display the search results 220 in an organized or ordered fashion. By grouping thefunction records 330 byresult score 226, thesearch application 216 can display the search results 220 in an order based on relevancy to thesearch query 212. Moreover, theset processing module 404 may group function records 330 by multiple grouping attributes, for example, byresult score 226 andapplication ID 336. Grouping by multiple attributes can result in groups and sub-groups. In the example shown, the consideration set 350 includes threefunction records 330 for the YELP®native application 204 a (i.e.,function records 330 haveexample function IDs 332 of Yelp A, Yelp B, and Yelp C). After scoring the consideration set 350, theset processing module 404 groups thefunction records 330 byresult score 226 andapplication ID 336. The resulting consideration set 350 (or result set 220) includes a list of function records 330 (orfunction IDs 332 referencing the function records 330, as shown) with the threefunction records 330 for the YELP®native application 204 a in consecutive order based on theircorresponding result score 226. Other methods of grouping are possible as well. - Referring to
FIG. 4C , in some implementations, theprocessing module 404 filters thefunction records 330 based on one or more criteria. The criteria may be based on characteristics of the function records 330 and/or characteristics associated with theuser 10. In the example shown, theset processing module 404 filters thefunction records 330 based on theapplication ID 336. If theset generation module 402 generates a consideration set of function records 330 (orfunction IDs 332 corresponding to functionrecords 330, as shown) and the consideration set 350 includes a number offunction records 330 associated with the same application 204, theset processing module 404 may filter the function records 330 (e.g., based on the application ID 336) to reduce the consideration set 350. In some examples, theset processing module 404 restricts the number offunction records 330 associated with any one application 204 to a maximum number offunction records 330 for that application 204; however, in other examples, theset processing module 404 does not restrict the number of function records 330. For example, if the consideration set 350 includes tenfunction records 330 for YELP®native application 204 a shown asAPP 1 inFIG. 4C , theset processing module 404 may provide all the function records 330 of the consideration set 330 (or result set 220). - In some implementations, the
set processing module 404 groups thefunction records 330 by theapplication ID 336, access mechanism 202,application state information 334,result score 226, or some other attribute associated with the function records 330, allowing thesearch application 216 to display the search results 220 in an organized and orderly fashion. Also, by grouping thefunction records 330 by theresult score 226, thesearch application 216 can display the search results 220 in an order based on the relevancy of thesearch query 212. Moreover, theset processing module 404 may group function records 330 by multiple grouping attributes resulting in groups and sub-groups, for example, byresult score 226 andapplication ID 336. In the example shown inFIG. 4C , the consideration set 350 includes tenfunction records 350 forAPP 1 e.g., YELP®native application 204 a (i.e.,function records 330 haveexample function IDs 332 of APP 1A, APP 1B, APP 1C, APP 1D, APP 1E, APP 1F, APP 1G, APP 1H, APP 1I, and APP 1J). The consideration set 330 also includes threefunction records 350 for APP 2 (i.e.,function records 330 haveexample function IDs 332 of APP 2A, APP 2B, and APP 2C). After theset processing module 404 scores the consideration set 350, theset processing module 404 groups thefunction records 330 byresult score 226 andapplication ID 226. The resulting consideration set 350 (or result set 220) includes a list of function records 330 (orfunction IDs 332 referencing the function records 330, as shown) with all tenfunction records 330 forAPP 1 e.g., YELP®native application 204 a in consecutive order based on theircorresponding result score 226. In some examples, afunction record 330 is not available for an application 204, therefore, the consideration set 330 includes the application 204 without anyfunction records 330 associated with the application 204, as shown in the ungrouped set. Other methods of grouping are possible as well. - Referring to
FIG. 4D , in some implementations, anexample advertisement system 360 includes anadvertisement data store 362, arecord generation module 364, andadvertisement generation module 366. Theadvertisement system 360 generates one ormore advertisements 371 for auser 10. Theadvertisement system 360 receives advertisement data from an advertiser device(s) 368 and therecord generation module 364. Therecord generation module 364 generates anadvertisement record 370 and stores theadvertisement record 370 in theadvertisement data store 362. Theadvertisement data store 362 includes data associated with the plurality ofdifferent advertisements 371, i.e., advertisement records 370. Theadvertisement record 370 may include a variety of different types of data related to anadvertisement 371. Anadvertisement record 370 may include data that identifies the advertisement record 370 (seeFIGS. 3C and 3D ). - The
advertisement system 360 includes anadvertisement generation module 366 in communication with theuser device 200 and thesearch system 300. Theadvertisement generation module 366 receives search results from the search system 300 (e.g., search module 310), thequery wrapper 210 from theuser device 200, and based on the receivedsearch results 220 and thequery wrapper 210, theadvertisement generation module 366 determines theadvertisements 371 to send to theuser device 200. Theadvertisement generation module 366 identifies one ormore advertisement records 370 based on the receivedsearch results 220 and the receivedquery wrapper 210. In some examples, theadvertisement generation module 366 identifiesadvertisement records 370 based on matches between terms of thesearch query 212 and terms in the advertisement records 370. For example, theadvertisement generation module 366 may identify the advertisement records 370 based on matches between tokens generated by thequery analysis module 400 and words included in the advertisement records 370, such as words included in theadvertisement ID 372 and/or any other parameter associated with theadvertisement record 370. - In some implementations, the
advertisement generation module 366 may determine the geo-location of theuser device 200 based on data included in thequery wrapper 210. Theadvertisement generation module 366 may filteradvertisements 371 associated with the geo-location of theuser device 200, and send the selectedadvertisements 371 based on the geo-location of theuser device 200. - The
advertisement generation module 366 is in communication with thesearch data store 320. In some examples, theadvertisement generation module 366 associates adifferent advertisement 371 with one or more search results 220 (e.g., access mechanism 202) displayed on theuser display 201. -
FIG. 5A provides an example arrangement of operations for amethod 500 a of performing a search. Atblock 502, themethod 500 a includes receiving, at a computing device 910 (FIG. 9 ) of theuser device 200, search results 220 transmitted from asearch system 300 in communication with thecomputing device 200. The search results 220 include aheader 242 for an application 204 executable on thecomputing device 910 and application access mechanisms 202 associated with theheader 242. Each application access mechanism 202 has a reference to the application 204 and indicates one or more performable operations for the application 204. Atblock 504, themethod 500 further includes displaying, on adisplay 201, 980 (FIG. 9 ) in communication with thecomputing device 910, agraphical user interface 240 including theheader 242 and userselectable access links 230 grouped with theheader 242. Each access link 230 is associated with an application access mechanism 202 for the application 204. -
FIG. 5B provides an example arrangement of operations for a method 500 b of performing a search. Atblock 512, themethod 500 includes receiving, at a computing device 910 (FIG. 9 ) of theuser device 200, search results 220 transmitted from asearch system 300 in communication with thecomputing device 200. The search results 220 include aheader 242 for an application 204 executable on thecomputing device 910 and application access mechanisms 202 associated with theheader 242. Each application access mechanism 202 has a reference to the application 204 and indicates one or more performable operations for the application 204. Atblock 514, themethod 500 further includes displaying, on adisplay 201, 980 (FIG. 9 ) in communication with thecomputing device 910, agraphical user interface 240 including theheader 242, anexpansion element 370 associated with theheader 242, and userselectable access links 230 grouped with theheader 242. Each access link 230 is associated with an application access mechanism 202 for the application 204. Theexpansion element 250 has a collapsedstate 250 a and an expanded state 250 b (seeFIG. 8F ). Atblock 516, when theexpansion element 250 is in the expanded state, the method 500 b includes displaying on thedisplay 201 all of the userselectable access links 230 grouped with theheader 242. However, atblock 518, when theexpansion element 250 is in the expanded state 250 b, the method 500 b includes displaying on the display 201 a threshold number of the userselectable access links 230 grouped with theheader 242, the threshold number being less than a total number of the userselectable access links 230 grouped with theheader 242. The threshold number may be greater than zero. - In some implementations, the search results 220 include an advertisement 271 associated with a
header 242. TheGUI 240 displays the advertisement 271 in theheader 242 or associated with a userselectable access link 230 grouped with theheader 242. In other examples, the search results 230 include anadvertisement record 370 including one or more of anadvertisement name 372, anadvertisement identification 372, a sponsoredlink name 374, a sponsoredlink identification 374,advertising content 376, oradvertisement parameters 378. In some examples, the method 700B includes displaying in theGUI 240 theexpansion element 250 in theheader 242. - In other examples, the method 500 b includes displaying in the
GUI 240 theexpansion element 250 among the userselectable access links 230 grouped with theheader 242. In response to receiving a user selection of the expansion element indicating the expanded state, the method 500 b may include displaying on the display 201 a list of all of the userselectable access links 230 grouped with theheader 242 and displaying on thedisplay 201 theexpansion element 250 as a last element in thelist 230. Additionally or alternatively, in response to receiving a user selection of theexpansion element 250 indicating thecollapsed state 250 a, the method 500 b may include displaying on the display 201 a list of all of the threshold number of the userselectable access links 230 grouped with theheader 242 and displaying on thedisplay 201 the expansion element as a last element in thelist 230. - Referring to
FIGS. 5A and 5B , in some implementations, theheader 242 includes a name of the associated application 204. Themethod 500 may include displaying in the graphical user interface 240 aheader link 244 in theheader 242 indicating an installation state of the associated application 204 as being installed or uninstalled. Moreover, in response to receiving a user selection of theheader link 244, when the installation state of the associated application 204 is installed, themethod 500 may include executing the application 204 on thecomputing device 910; and when the installation state of the associated application 204 is uninstalled, themethod 500 may include downloading the application 204 to non-transitory memory 920 (FIG. 9 ) in communication with thecomputing device 910 and executing the application 204 on thecomputing device 910. In some examples, themethod 500 includes directing theuser device 200 to adigital distribution platform 130 b to download the application 204. Once in communication with thedigital distribution platform 130 b, theuser 10 may choose to install the application 204 on theuser device 200. - In some implementations, the
method 500 includes displaying in the graphical user interface 240 (seeFIG. 2 ) an ungrouped access link 230 having an associated application access mechanism 202 for an application 204 different from the application 204 associated with theheader 242. Themethod 500 may include displaying in thegraphical user interface 240 anindicator 244, 244 a, 244 b in theungrouped access link 230 indicating an installation state of the associated application 204 as being installed or uninstalled. Moreover, in response to receiving a user selection of anungrouped access link 230, when the installation state of the associated application 204 is installed, themethod 500 may include executing the application 204 on thecomputing device 910; and when the installation state of the associated application 204 is uninstalled, themethod 500 may include downloading the application 204 tonon-transitory memory 920 in communication with thecomputing device 910 and executing the application 204 on thecomputing device 910. In some implementations, when the installation state of the associated application 204 is uninstalled, themethod 500 includes directing theuser device 200 to adigital distribution platform 130 b, where theuser 10 may choose to install the application 204 on theuser device 200. In some examples, in response to receiving a user selection of anungrouped access link 230, when the installation state of the associated application 204 is uninstalled, themethod 500 includes executing a web browser on thecomputing device 910 and accessing functionality of the associated application 204 through the web browser. - The
method 500 may include displaying theaccess links 230 in an order under theheader 242 based on ascore 226 associated with the application access mechanism 202 of eachaccess link 230. In some examples, themethod 500 includes receiving, at thecomputing device 910, search criteria (i.e., search query 212) through thegraphical user interface 240, generating, at thecomputing device 910, aquery wrapper 210 including thesearch criteria 212, and transmitting thequery wrapper 210 from thecomputing device 910 to thesearch system 300. - Referring to
FIG. 5C provides an arrangement of operations for amethod 500 c of performing a search. Ablock 520, themethod 500 c includes receiving at acomputing device 910, search criteria (i.e., search query 212) from auser device 200 in communication with thecomputing device 910. Atblock 522 the method includes executing, using thecomputing device 910, a search of adata store 320 in communication with thecomputing device 910 using the search criteria (i.e., search query 212). Atblock 524, themethod 500 c includes receiving, at thecomputing device 910,function records 330 from thedata store 320 in response to the executed search. Each of the function records 330 includes anapplication identifier 336, an application access mechanism 202, 202 a, 202 b, 202, andapplication state information 334. The application access mechanism 202, 202 a, 202 b, 202 has a reference to anative application 204 a and indicates one or more performable operations for thenative application 204 a. Theapplication state information 334 describes a state of thenative application 204 a when thenative application 204 a performs the one or more operations indicated in the application access mechanism 202, 202 a, 202 b, 202. Atblock 526, themethod 500 c includes grouping the function records 330, at thecomputing device 910, based on theapplication identifiers 336. In addition, atblock 528, the method includes transmittingheader search results 244 from thecomputing device 910 to theuser device 200 for display on the user device 200 (e.g., a display 201). Theheader search results 244 include aheader 242 for each group offunction records 330 and anexpansion element 250 associated with eachheader 242. - In some implementations, the
method 500 c also includes receiving, at the computing device, an expansion command from theuser device 200. The expansion command indicative of a user selection of anexpansion element 250. Themethod 500 c also includes transmitting access mechanism search results 202, 202 a, 202 b, 202 from the computing device to theuser device 200. The access mechanism search results include the application access mechanisms 202, 202 a, 202 b, 202 of the group offunction records 330 is associated with theheader 242 of the selectedexpansion element 250. The access mechanism search results includelink data 232 for each application access mechanism 202, 202 a, 202 b, 202. Thelink data 232 includes at least one of text or an image associated with the state of the application referenced by the corresponding application access mechanism 202, 202 a, 202 b, 202. - In some examples, the
method 500 c further includes filtering the function records 330, at the computing device, based on theirapplication identifiers 336 by limiting a number offunction records 330 perapplication identifier 336. Additionally, themethod 500 c includes scoring thefunction records 330 based on a relevancy of thefunction record 330 to the search criteria, and ordering thefunction records 330 based on theirscores 226. The scoring is based on theapplication state information 334 of thefunction record 330. In some examples, executing the search includes identifyingfunction records 330 of thedata store 320 based on matches between terms of the search criteria and terms of theapplication state information 334 of the function records 330. - In some example, at least one of the application access mechanisms 202, 202 a, 202 b, 202 includes an application resource identifier referencing a
native application 204 a, wherein the application resource identifier is in an application-specific format specific for the referencednative application 204 a and indicates one or more performable operations for theuser device 200. The application resource identifier includes a domain name and a path to be used by the referencednative application 204 a to retrieve and display information. The application access mechanism 202, 202 a, 202 b, 202 includes instructions for at least one of a search application, an operating system, or the referencednative application 204 a when executed onuser device 200. In some implementations, at least one of the application access mechanisms 202, 202 a, 202 b, 202 includes a web address that when executed by theuser device 200 causes theuser device 200 to execute a web browser and access a web version of thenative application 204 a referenced in the application access mechanism 202, 202 a, 202 b, 202. -
FIG. 6A provides an example arrangement of operations for amethod 600 a of performing a search. Themethod 600 a is described with respect to theuser device 200, thesearch system 300, and thesearch module 310 as illustrated inFIG. 2 . Inblock 602, thesearch module 310 receives thequery wrapper 210. Inblock 604, thesearch module 310 analyzes data (e.g., the search query 212) included in thequery wrapper 210. For example, thequery analysis module 400 analyzes the search query 212 (and/or other data) of thequery wrapper 210. - In some examples, the
search module 310 may determine the geo-location of theuser device 200 in terms of latitude and longitude values that indicate the latitude and longitude of theuser device 200. Additionally, or alternatively, thesearch module 310 may determine the geo-location of theuser device 200 in terms of an address, such as a postal address (e.g., a street address, zip code, and/or city name). The geo-location of theuser device 200 determined by thesearch module 310 may be a point location (e.g., a latitude/longitude or a postal address). Theuser device 200 may generate geo-location data 218 (e.g., latitude and longitude) and thequery wrapper 210 including the geo-location data 218. In some examples, thesearch module 310 determines the geo-location of theuser device 200 based on data (e.g., an IP address 228) included in thequery wrapper 210. For example, thesearch module 310 may look up the location of theuser device 200 using theIP address 228. Thesearch module 310 may communicate with aremote server 110 that can provide geo-location data for theuser device 200 based on theIP address 228. - At
block 606, themethod 600 a includes executing a search, for example, by identifying and selectingfunction records 330 based on the data of the query wrapper 210 (e.g., the search query 212). Atblock 608, themethod 600 a includes generating the search results 220. The search system 300 (e.g., in particular, the search module 310) may generate the search results 220 based on a scoring of considered function records 330. Theset processing module 404 generatessearch results 226 including a list of the selected or all application access mechanisms 202 from selectedfunction records 330 or all the function records 330. - Finally, at
block 610, themethod 600 a includes transmitting the search results 220 to theuser device 200. Thesearch module 310 may deliver the search results 220, which can include access mechanisms 202, results scores 226, and/orlink data 232. For example, theset processing module 404 transmits the search results 226 to theuser device 200 that generated thesearch query 212. -
FIG. 6B provides an example arrangement of operations for amethod 600 b of executing the search (e.g., at block 606). Themethod 600 b is described with respect to theuser device 200, thesearch module 310, and thedata store 320 as illustrated inFIG. 2 . - At
block 612, themethod 600 b includes identifyingfunction records 330 based on asearch query 212. Thesearch module 310 identifiesfunction records 330 in thesearch data store 320 based on thesearch query 212 received in thequery wrapper 210. For example, thesearch module 310 may identifyfunction records 330 in thedata store 320 by detecting search term matches between terms (e.g., words) of thesearch query 212 and terms included in theapplication state information 334 of the function records 330. In some examples, theset generation module 402 identifies a consideration set 350 offunction records 330 based on the search query 212 (e.g., based on output from the query analysis module 400). - At
block 614, themethod 600 b includes selecting a consideration set 350 of function records 330. Thesearch module 310 selects aset 350 offunction records 330 from thosefunction records 330 identified atblock 612. The selected set 350 offunction records 330 may be referred to as a “consideration set” offunction records 330 and/orfunction identifiers 332 of those function records 330. Thesearch module 310 may score the consideration set 350 offunction records 330 and include information from the consideration set 350 offunction records 330 in the search results 220. Thesearch module 310 may filter the consideration set 350 offunction records 330 based on one or more criteria. - At
block 616, themethod 600 b includes scoring the consideration set 350 of function records 330. For example, the search module 310 (e.g., the set processing module 404) may generate a score (e.g., a result score 226) for each of the function records 330 that indicates the relevance of thefunction record 330 to thesearch query 212. Atblock 618, themethod 600 b includes groupingfunction records 330 of the consideration set 350. For example, theset processing module 404 may group thefunction records 330 byapplication ID 336, access mechanism 202,application state information 334,result score 226, or some other attribute associated with thefunction record 330. By grouping thefunction records 330 byapplication ID 336, thesearch application 216 can display the search results 220 in an organized or ordered fashion. - At
block 619, themethod 600 b determines if a function records filter is set, and if so, atblock 620, themethod 600 b includesfiltering function records 330 of the consideration set 350. In some implementations, theset processing module 404 filters thefunction records 330 based on one or more criteria. The criteria may be based on characteristics of the function records 330 and/or characteristics associated with theuser 10. Moreover, theset processing module 404 may impose a policy that limits or reduces the number offunction records 330 in the consideration set 350 and/or the result set 220. For example, theset processing module 404 may filter thefunction records 330 based onapplication ID 336 and impose a policy that limits or reduces the number offunction records 330 to a maximum number offunction records 330 per eachapplication ID 332. - Referring back to block 619 if a function records filter is not set, or after filtering out function records at block 20, then at block 622 a, the
method 600 b includes selecting one or more access mechanisms 202,link data 232,header data 242, and optionally anexpansion element 250 associated withfunction records 330 in the consideration set 350 for transmission in the search results 220. In some examples, theheader 242 is a name or nickname of an application 204 having a grouping offunction records 330 in the search results 220. Thesearch module 310 may select access mechanisms 202 from thefunction records 330 associated with the largest result scores 226 determined atblock 616. In some implementations, thesearch module 310 determines which access mechanisms 202 are compatible with theuser device 200 based on theplatform data 222. In these implementations, thesearch module 310 may transmit a subset of the access mechanisms 202 from the selectedfunction records 330 which are compatible with the user device 200 (e.g., based on OS version, web browser version, and/or device type). Theset processing module 404 may selectfunction records 330 from the consideration set 350 based on the result scores 226 associated with the function records 330 and select access mechanisms 202 from the selected function records 330. For example, theset processing module 404 may selectfunction records 330 having the highest result scores 226 and then select access mechanisms 202 from those function records 330. - Finally, at block 624, the
method 600 b includes transmitting the search results 220 to theuser device 200. Thesearch module 310 may deliver the search results 220, which can include access mechanisms 202, results scores 226, and/orlink data 232. For example, theset processing module 404 transmits the search results 226 to theuser device 200 that generated thesearch query 212. -
FIG. 6C provides an example arrangement of operations for amethod 600 c of executing the search (e.g., at block 606). Themethod 600 c is described with respect to theuser device 200, thesearch module 310, and thedata store 320 as illustrated inFIG. 2 . Themethod 600 c includes the same elements 612-618 of themethod 600 b inFIG. 6B . However, in this example, atblock 620, themethod 600 c includesfiltering function records 330 of the consideration set 350, similar to block 620 inFIG. 6B . Atblock 622 b, themethod 600 c includes selecting one or more access mechanisms 202,link data 232,header data 242, and anexpansion element 250 associated withfunction records 330 in the consideration set 350 for transmission in the search results 220. - At
block 624 b, themethod 600 c includes transmitting to theuser device 200, a predetermined number of search results 220. For example, the threshold number of search results may be any number greater or equal to zero. Theuser 10 may requestadditional search results 220 by selecting theexpansion element 350 on thedisplay 201 of theuser device 200. - At
bock 626, themethod 600 c includes waiting for receipt of anadditional search result 220 request from theuser device 200 by way of theuser 10 selecting theexpansion element 370 displayed on thedisplay 201 in association with aheader 242. For example, thesearch module 310 ways for receipt of the user additional requests from theuser device 200. - At
block 628, themethod 600 c includes selecting one or more access mechanisms 202 and linkdata 232, associated withfunction records 330 in the consideration set 350 for transmission in the search results 220 that were not previously transmitted at block 624. Thesearch module 310 may select access mechanisms 202 from thefunction records 330 associated with the largest result scores 226 determined atblock 616. In some implementations, thesearch module 310 determines which access mechanisms 202 are compatible with theuser device 200 based on theplatform data 222. In these implementations, thesearch module 310 may transmit a subset of the access mechanisms 202 from the selectedfunction records 330 that are compatible with the user device 200 (e.g., based on OS version, web browser version, and/or device type). Theset processing module 404 may selectfunction records 330 from the consideration set 350 based on the result scores 226 associated with the function records 330 and select access mechanisms 202 from the selected function records 330. For example, theset processing module 404 may selectfunction records 330 having the highest result scores 226 and then select access mechanisms 202 from those function records 330. - Finally, at
block 630, themethod 600 c includes transmitting the search results 220 not previously transmitted at block 624 to theuser device 200. Thesearch module 310 may deliver the search results 220, which can include access mechanisms 202, results scores 226, and/orlink data 232. For example, theset processing module 404 transmits the search results 226 to theuser device 200 that generated thesearch query 212. -
FIGS. 7A-7D provide example arrangements of operations for amethod 700 of operating auser device 200. It may be assumed that theuser device 200 described according to themethod 700 includes a search application 216 (e.g., anative application 204 a or web-browser application 204 b) configured to communicate with thesearch system 300. - At
block 702, themethod 700 includes receiving asearch query 212 from auser 10. In some implementations, thesearch application 216 executing on theuser device 200 receives thesearch query 212 from of theuser 10. Atblock 704, the method includes generating and transmittingquery wrapper 210 to thesearch system 300. In some implementations, theuser device 200 generates and transmits thequery wrapper 210 to thesearch system 300. Atblock 706, themethod 700 includes waiting for receipt of the search results 220. For example, theuser device 200 waits for receipt of the search results 220 from thesearch system 300. The search results 220 may include a list of access mechanisms 202 and optionally resultscores 226 associated with the access mechanisms 202. Additionally, the search results 220 may optionally include link data 232 (e.g., text and/or images) for the access mechanisms 202. Thesearch application 216 may generate user selectablelinks 230 in theGUI 240 based on the receivedlink data 232. - At
block 708 a, themethod 700 includes generating user selectablelinks 230 and a header 242 (e.g., for a group of links 230) based on the search results 220. Thesearch application 216 may generate the user selectablelinks 230 and theheader 242 or receive them from thesearch module 310. In some implementations, themethod 700 includes, atblock 708 b, generating one ormore header links 244 associated with theheader 242. The header links 244 may be indicators or icons that indicate an installation state of a correspondingnative application 204 a (FIG. 8D ). For example, a first indicator 244 a may indicate that the native application is installed and selecting the first indicator 244 a may open thenative application 204 a. A second indicator 244 b may indicate that thenative application 204 a is not currently installed. In some implementations, selecting the second indicator 244 b causes installation of thenative application 204 a (e.g., via an application download mechanism 202 c). In other implementations, selecting the second indicator 244 b causes theuser device 200 to be directed to thedigital distribution platform 130 b, where theuser 10 may choose to install the application 204 on theuser device 200. In yet another example, at block 708 c, themethod 700 includes generatingexpansion element 250 in addition to user selectablelinks 230 and aheader 242, based on the search results 220. - At
block 710, themethod 700 includes waiting for a user selection of alink search application 216 may wait for theuser 10 to select one of the user selectablelinks 230 or the header links 244 before operation proceeds to asubsequent block FIG. 7A , when theuser 10 selects (e.g., touches) one of the user selectablelinks 230, themethod 700 includes launching an application 204 associated with thelink 230. For example, in response to selection of alink 230 including an access mechanism 202, theuser device 200 launches the application 204 referenced in the access mechanism 202 and performs one or more operations indicated in the access mechanism 202 inblock 712. InFIG. 7B , if theuser 10 selects alink method 700 includes, atblock 712, determining if the selected link is aheader link 244, and if so, atblock 716, performing operations according the selected header link 244 (e.g., opening an application to a default or particular state, being directed to adigital distribution platform 130 b, and/or installing a correspondingnative application 204 a). Otherwise, themethod 700 includes, atblock 718, performing operations according the selectedlink 230, which may include launching an application 204 associated with thelink 230 using an access mechanism 202 of thatlink 230. - Referring to
FIGS. 7C and 7D , atblock 720, themethod 700 includes receiving a user selection of theexpansion element 250 by way of auser 10 selecting theexpansion element 250 on theuser display 201. In some examples, at block 722 a, themethod 700 includes increasing the number of user selectablelinks 230 displayed on thedisplay 201 of theuser device 200. In other examples, atblock 722 b, themethod 700 includes increasing the number of user selectablelinks 230 and the number of displayed advertisement(s) 271 associated with eachheader 242. - At
block 724, themethod 700 includes waiting for a user selection of the expanded state 250 b of theexpansion element 250. For example, thesearch application 216 may wait for theuser 10 to select the expanded state 250 b of theexpansion element 250, since theuser 10 has previously selected thecollapsed state 250 a of theexpansion element 250. Atblock 726, themethod 700 includes reducing the number of user selectable links 230. For example, thesearch application 216 receives a user selection of the expanded state 250 b and reduces the number of user selectablelinks 230 displayed in the search results 220. In some examples, when the search results 220 include advertisements 271, themethod 700 may reduce the number of advertisements 271 when reducing the number of user selectable links 220. Themethod 700 may only display the advertisements 271 when theexpansion element 250 is in an expandedstate 250 a. -
FIGS. 8A-8L illustrate various examples of executing a search on auser device 200 using thesearch application 216 and displaying search results 220. Referring toFIGS. 2 and 8A , when theuser 10 enters asearch query 212 into the search field 214 (e.g., a search text box) of theGUI 240 of thesearch application 216 running on theuser device 200 and executes the search, thesearch application 216 generates aquery wrapper 210 that contains thesearch query 212 and any other relevant information (e.g., query parameters). Thesearch application 216 transmits thequery wrapper 210 to the search system 300 (e.g., to the search module 310), which responds with the search results 220. Thesearch application 216 displays the search results 220 in theGUI 240. The search results 220 can indicate one ormore links 230 to access resources that are relevant to the search. Thelinks 230 can include application resource identifiers that can be used to launch a third party application 204 and access a specific state within the third party application 204. -
FIGS. 2, 8A and 8B illustrate an example of executing a search on auser device 200 using thesearch application 216 executing on theuser device 200. InFIG. 8A , theuser 10 entered asearch query 212 of “Toy Story” into the search field 214 (e.g., a search box) of theGUI 240 of thesearch application 216. In response to thesearch query 212, thesearch application 216 generates aquery wrapper 210 including thesearch query 212 and transmits thequery wrapper 210 to thesearch system 300, which returnssearch results 220 based on thesearch query 212. - The
search module 310 transmits the search results 220 including a list of applications 204 and/or access mechanisms 202 to theuser device 200. The list of applications 204 (e.g., native orweb applications 204 a, 204 b) illustrated inFIG. 8A includes IMDb® (a trademark of IMDb.com, Inc.), FANDANGO® (a trademark of Fandango), CRACKLE®, (a trademark of Crackle, Inc.), FLIXSTER® (a trademark of Warner Bros. Entertainment Group), and ROTTEN TOMATOES® (a trademark of Warner Bros. Entertainment Group). Thesearch application 216displays links 230 to relevant states of the applications 204 indicated in the search results 220. Theuser 10 may select (e.g., touch or click) one of thelinks 230 to access the resource indicated in thelink 230. For example, theuser 10 may select the area of theGUI 240 including the “IMDb” icon to select a first link 230-1 to the “IMDb” application. In response to such a user selection, the user device 200 (e.g.,search application 216,operating system 224, and/or the IMDb native application 204) can launch the selected application 204 and access the state of the application 204 indicated in thelink 230. In the example ofFIG. 7A , each link 230-1, 230-2, 230-3, 230-4, 230-5 may provide access to a “Toy Story” entry in the respective application 204. - In the example of
FIG. 8A , the user selects the first link 230-1 for “IMDb.” In the case of the IMDb native application, the various states of the native application may correspond to different entries in the IMDb databases. The illustrated first link 230-1 may indicate a state corresponding to an entry “Toy Story.” Accordingly, selection of the first link 230-1 may cause thesearch application 216 to instruct theoperating system 216 of theuser device 200 to launch the IMDb native application and to access the “Toy Story” entry referenced in the first link 230-1.FIG. 8B illustrates aGUI 240 of the selectednative application 204 a that was launched in response to the selection of the first link 230-1, where the selectednative application 204 a displays an example entry for “Toy Story.” - Referring to
FIG. 8C , in some implementations, theuser device 200 has one or morenative applications 204 a installed on theuser device 200. In the example shown, thesearch application 216 indicates on theGUI 240 that the YELP® native application developed by Yelp, Inc. and the TRIPADVISOR® native application developed by TripAdvisor, Inc. are installed on theuser device 200. Thesearch application 216 may display aheader 242 and one ormore links 230 associated with theheader 242. In some examples, thesearch application 216 displays one ormore headers 242 and one ormore links 230 below eachheader 242 in a hierarchical fashion (e.g., a tree structure). Eachheader 242 may be a parent node for one ormore links 230 as children nodes of the parent node. Thelinks 230 may be selected and grouped in a particular order or in random order. If thelinks 230 are displayed in an order, the order may be based on some metric associated with the access mechanism 202 or thenative application 204 a associated with thelink 230. Moreover, the order may be an alphabetical sorting of names associated with thelinks 230, based on the results scores 226 (e.g., based on relevancy to the search query 212), a combination thereof, and/or other sorting techniques. Theheader 242 may or may not include alink 230 itself. - In the example shown, the
GUI 240 includes aheader 242 having the name “Yelp,” under which first, second, and third links 230-1, 230-2, 230-3 are arranged. Theheader 242 may indicate that the links 230-1, 230-2, 230-3 arranged below theheader 242 are associated with the YELP®native application 204 a. In this example, theheader 242 does not include anylinks 230 in theheader 242 itself. Instead, thelinks 230 are grouped below theheader 242. In other examples, however, theheader 242 may include one ormore links 230. In the example shown, selection of the first link 230-1 may cause theuser device 200 to launch the YELP®native application 204 a and retrieve an IHOP® restaurant entry of the YELP®native application 204 a. Selection of the second link 230-2 may cause theuser device 200 to launch the YELP®native application 204 a and retrieve a DENNY'S® restaurant entry of the YELP®native application 204 a. Selection of the third link 230-3 may cause theuser device 200 to launch the TACO BELL®native application 204 a and retrieve a TACO BELL® restaurant entry of the YELP®native application 204 a. - In some examples, the
search application 216 displays one ormore links 230 tonative applications 204 a without aheader 242, such as the example shown inFIG. 8A . In the example shown inFIG. 8C , a fourth link 230-4 references the TRIPADVISOR® native application without aheader 242. Selection of the fourth link 230-4 may cause theuser device 200 to launch the TRIPADVISOR®native application 204 a and retrieve an entry for “Late night diners” in the TRIPADVISOR®native application 204 a (e.g., a search for “Late night diners”). - Additionally, in the example shown, a fifth link 230-5 includes a web access mechanism 202 b (e.g., a URL). Selection of the fifth link 230-5 may cause the
user device 200 to launch the web-browser application 204 b and retrieve an entry for “Late night diners” in the OPENTABLE® web application 204 b developed by OpenTable, Inc. - In
FIG. 8D , the user entered asearch query 212 of “thai” into thesearch field 214 of theGUI 240 and executed the search by, for example, selecting asearch button 215 of theGUI 240. In response to thesearch query 212, thesearch application 216 generates aquery wrapper 210 including thesearch query 212 and transmits thequery wrapper 210 to thesearch module 310. Thesearch module 310 generates search results 220. In the example ofFIG. 8D , thesearch module 310 generated requests for information (e.g., web requests) fromdata sources 130 based on thesearch query 212. Thesearch module 310 may have included one or more of the query terms and/or the query parameters contained in thequery wrapper 210 in the requests for information. Thesearch module 310 generatedlinks 230 based on the information received from the data sources 130. In the example ofFIG. 8D , thesearch module 310 received information (e.g., available reservation times) relating to the entities “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” that are associated with the OPENTABLE® application. - As described above, in response the received
query wrapper 210, thesearch module 310 generates search results 220 (e.g., based on the information received from the data sources 130) and transmitssearch results 220 including a list of applications 204 to theuser device 200. Thesearch module 310 may also transmit the information regarding the entities associated with theYELP® application 204 a and theOPENTABLE® application 204 a (e.g., reservation times). The list of applications 204 illustrated inFIG. 8D includes YELP® and OPENTABLE®. TheGUI 240 may includelinks 230 to the applications 204 in the search results 220. Theuser 10 may select thelinks 230 to access the resource indicated in thelink 230. For example, the user may select “Bangkok Bistro” to select alink 230 to the “Bangkok Bistro” entry in theYELP® application 204 a. - The
GUI 240 inFIG. 8D includes first, second, and third links 230-1, 230-2, 230-3 that provide access to entries in theYELP® application 204 a having aYELP® header 242 a. Therefore, theYELP® header 242 a indicates that the first, second, and third links 230-1,230-2, 230-3 arranged below theheader 242 a are associated with the YELP®native application 204 a. Similarly theOPENTABLE® header 242 b indicates that fourth, fifth, and sixth links 230-4, 230-5, 230-6 arranged below theheader 242 b are associated with the OPEN TABLE®native application 204 a. For example, the links 230-1, 230-2, 230-3 may provide access to entries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” in the YELP® application. Thesearch module 310 may have identified the entries for “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” in response to receiving thesearch query 212 of “thai.” The entities “Bangkok Bistro,” “Buda Thai,” and “Shang Thai Restaurant” may be associated with theYELP® application 204 a. Accordingly, thesearch application 216 may group those entities together under the YELP®application search result 220. - The
GUI 240 inFIG. 8D includes fourth, fifth, and sixth links 230-4, 230-5, 230-6 that provide access to entries in theOPENTABLE® application 204 a. For example, the links 230-4, 230-5, 230-6 may provide access to entries for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” in theOPENTABLE® application 204 a. Thesearch module 310 may have identified the entries for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” in response to receiving the search query “thai.” The entities “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” may be associated with theOPENTABLE® application 204 a. Accordingly, thesearch application 216 may group those entities together under the OPENTABLE®application search result 220. - The links for “Baan Thai House & Wine Bar,” “Basil Canteen @ 11th Street,” and “Blackwood” also include information relating to available reservation times. The information relating to available reservation times may have been received by the
search module 310 in response to a request for information by thesearch module 310 to adata source 130 for theOPENTABLE® application 204 a. Thesearch module 310 may have transmitted the received information to theuser device 200 so that the information could be displayed by thesearch application 216 via theGUI 240. - The
GUI 240 ofFIG. 8D also includes indicators oricons 244 that indicate whether thenative applications 204 a for YELP® and OPENTABLE® are currently installed on theuser device 200. The indicators oricons 244 may indicate that whether thenative application 204 a is installed and ready for access by theuser 10, or whether thenative application 204 a is not yet installed, thus inaccessible by theuser 10, but can be downloaded to theuser device 200. For example, an “Open” icon 244 a may indicate that anative application 204 a is installed on theuser device 200, and the user may select (e.g., touch) an “Open” icon 244 a to open the installednative application 204 a. Displaying the icon 244 a indicating the installation status of thenative application 204 a in theheader 242 is not required for theheader 242 to act as a link. In some examples, theheader 242 may act as a link that opens thenative application 204 a even though theheader 242 does not include anyindicator 244. Moreover, selecting theheader 242 can cause more than just opening an application 204. In some examples, theheader 242 may be a link to a different state of the corresponding application 204 (e.g., different from the default state). Also, selecting theheader 242 may cause thenative application 204 a (i.e., the one identified in the header 242) to perform a search using one or more terms of theoriginal search query 212. - A “Free” icon 244 b may indicate that the
native application 204 a is not currently installed on theuser device 200; however, the user may select the “Free” icon 244 b to launch adigital distribution platform 130 b, such as an application marketplace, that provides thenative application 204 a for download or to automatically start downloading thenative application 204 a to theuser device 200. Other indicators oricons 244 are possible as well that show various states of installation and/or accessibility ofnative applications 204 a. - The
search application 216 may displaylinks 230 having different types of access mechanisms 202. For example, selecting the first link 230-1 may access an entry of thenative application 204 a for YELP® for “Bangkok Bistro” using an application access mechanism 202 a. Selecting the fourth link 230-4 may access an entry of the web application 204 b for OPENTABLE® for “Baan Thai House & Wine Bar” using a web access mechanism 202 b. In this example, thenative application 204 a for OPENTABLE® is not installed on theuser device 200. Thus, thesearch application 216 can instruct a web browser of theuser device 200 to access the web application 204 b for OPENTABLE® at the state indicate by the fourth link 230-4. -
FIG. 8E illustrates anexample GUI 240 of asearch application 216 running on auser device 200. In the example shown, theuser 10 has entered a search query 212 (“Late night diners”) into theGUI 240 of thesearch application 216. Theuser 10 interacted with theGUI 240, causing thesearch application 216 to generate and transmit aquery wrapper 210 including thesearch query 212 to thesearch system 300. Thesearch system 300 identifiedfunction records 330 and selected application access mechanisms 202 a, web access mechanisms 202 b, and application download mechanism 202 c from the identifiedfunction records 330, as described above. In the example shown, thesearch system 300 identifiedfunction records 330 including references tonative applications 204 a for YELP®, TRIPADVISOR®, OPENTABLE®, and URBANSPOON®. Theuser device 200 has thenative applications 204 a for YELP® and TRIPADVISOR® installed, but thenative applications 204 a for OPENTABLE® and URBANSPOON® are not installed on theuser device 200.Links 230, such as the first, second, third, and fourth links 230-1, 230-2, 230-3, 230-4 shown, for accessing the applications 204 (e.g., via access mechanisms 202) may have different functionality and/or purpose. For example, the first and second links 230-1, 230-2 for entries in thenative application 204 a for YELP® for “IHOP” and “Denny's” include application access mechanisms 202 a that open the YELP®native application 204 a and retrieve the corresponding entries for “IHOP” and “Denny's.” - The third link 230-3 may be associated with an application access mechanism 202 a for the TRIPADVISOR®
native application 204 a. For example, the application access mechanism 202 a included in the third link 230-3 may cause theuser device 200 to launch the TRIPADVISOR®native application 204 a to a default state. - The fourth link 230-4 may include a web access mechanism 202 b for the OPENTABLE® web application 204 b. For example, the web access mechanism 202 b may direct a web browser of the
user device 200 to one or more late night diners on a website of OPENTABLE®. Accordingly, in response to selection of the fourth link 230-4, theuser device 200 may launch a web browser and retrieve information at a web address included in the web access mechanism 202 b. Since the OPENTABLE®native application 204 a is not installed on theuser device 200, thesearch application 216 may present the fourth link 230-4 to allow theuser 10 to access the desired functionality via the web access mechanism 202 b. - A fifth link 230-5 may include an application download mechanism 202 c for the URBANSPOON®
native application 204 a. Since theuser device 200 does not have the URBANSPOON®native application 204 a installed, theuser device 200 displays the fifth link 230-5 that includes the application download mechanism 202 c for the URBANSPOON®native application 204 a. In response to selection of the fifth link 230-5, theuser device 200 may access a data source 130 (e.g., adigital distribution platform 130 b) for downloading the URBANSPOON®native application 204 a. In some implementations, thesearch application 216 optionally displays an icon 244 (or other identifier, such as text and/or an image) that indicates that the application 204 is not currently installed on theuser device 200, but can be downloaded. In the example shown, the search application displays a “Download”icon 244 c on theGUI 240 adjacent the fifth link 230-5 for the URBANSPOON®native application 204 a. When theuser 10 selects thedownload icon 244 c, thesearch application 216 uses the application download mechanism 202 c of thecorresponding link 230 to download thenative application 204 a to theuser device 200. - In some implementations, if the YELP®
native application 204 a was not installed on theuser device 200, thesearch application 216 may still display the entries for “IHOP” and “Denny's” on theGUI 240, but theuser device 200 may include application download mechanisms 202 c in the links 230-1, 230-2, so that theuser device 200 would be directed to downloading the YELP®native application 204 a. In such an example, the links 230-1, 230-2 may also include data (e.g., text and/or images) that indicate to theuser 10 that selection of the links 230-1, 230-2 will direct theuser 10 to a site for downloading the YELP®native application 204 a. For example, the links 230-1, 230-2 may include adownload icon 244 c, and when theuser 10 selects thedownload icon 244 c, thesearch application 216 uses the application download mechanism 202 c of thecorresponding link 230 to download thenative application 204 a to theuser device 200. - Referring to
FIGS. 8F-8K , in some implementations, theheader 242 includes anexpansion element 250 that allows thesearch application 216 to display all or some of thelinks 230 associates with theheader 242. Theexpansion element 250 includes acollapsed state 250 a (FIGS. 8F and 8H ) and an expanded state 250 b (FIGS. 8G and 8I ) that are mutually exclusive. In the example shown, thesearch application 216 indicates on theGUI 240 that the YELP® native application developed by Yelp, Inc. and the TRIPADVISOR® native application developed by TripAdvisor, Inc. are installed on theuser device 200. Thesearch application 216 may display aheader 242 and one ormore links 230 associated with theheader 242. In some implementations, thesearch application 216 only displays one ormore headers 242 and theexpansion element 250 associated with each header without displaying anylinks 230 associated with theheader 242. In some examples, thesearch application 216 displays one ormore headers 242 and one ormore links 230 below eachheader 242 in a hierarchical fashion (e.g., a tree structure). Eachheader 242 may be a parent node for one ormore links 230 as children nodes of the parent node. Thelinks 230 may be selected and grouped in a particular order or in random order. If thelinks 230 are displayed in an order, the order may be based on some metric associated with the access mechanism 202 or thenative application 204 a associated with thelink 230. Moreover, the order may be an alphabetical sorting of names associated with thelinks 230, based on the results scores 226 (e.g., based on relevancy to the search query 212), a combination thereof, and/or other sorting techniques. Theheader 242 may or may not include alink 230 itself. - A device independent pixel, also known as, density-independent pixel (dp or dip) is a physical unit of measurement based on a co-ordinate system held by a computer and represents an abstraction of a pixel for use by an application that an underling system then converts to physical pixel. Device independent pixel allows mobile device software, such as
native applications 204 a, to scale the display of information and user interaction to different screen sizes. Therefore, the abstraction allows thenative application 204 a to work in pixels as measurement, while the underlying graphics system converts the abstract pixel measurements of the application into real pixel measurements appropriate for theparticular user device 200. Therefore, theGUI 240 can adjusts how the information is being displayed on auser device 200 based on the size of the display. - In some implementations, the
search application 216 restricts the displayedsearch results 220 based on a number of device independent pixels. For thecollapsed state 250 a, theGUI 240 may set a maximum search result height HC that includes the search results 220 associated with aheader 242, where each search result or link 230 has a collapsed search result height HCR. The collapsed search result height HCR may be equal for each displayedaccess link 230, which displays limited information. For example, the maximum search result height HC equals 344 dp and each link 230 has a collapsed search result height HCR of 75 dp. TheGUI 240 may display four access links 230 (4×75 dp=300 dp) that can fit within the maximum search result height HC. The expanded state 250 b may have an expanded search result height HE that includes the search results 220 associated with a header 252. If only twosearch results 220 are available, then theGUI 240 displays only twoaccess links 230 associated with theheader 242. The expanded search result height HE includes all of the search results 220 (i.e., access links 230); therefore, the expanded search result height HE may be as long as the number ofaccess links 230 associated with the header 242 (theuser 10 may scroll through theaccess links 230 to see the ones that are not displayed on a first page). Each access link 230 within the expanded state 240 b may have an expanded search result height HER that is equal to or greater than the collapsed search result height HCR. TheGUI 240 may display more content and information associated with eachlink 230. For example, in thecollapsed state 250 a theGUI 240 may display a restaurant title, picture, and ratings, while in the expanded state 250 b theGUI 240 may additionally display a phone number and an address or any relevant information. Thus, the number ofaccess links 230 displayed in either thecollapsed state 250 a or the expanded state 250 b depends on an allocated amount of device independent pixels that theGUI 240 allocates to theaccess link 230. - Referring to
FIGS. 8F and 8H , in some examples, theGUI 240 includes theexpansion element 250 located within theheader 242. Referring toFIGS. 8I and 8J , theGUI 240 includes theexpansion element 250 displayed among the userselectable access links 230 grouped with theheader 242. - Referring to
FIGS. 8H and 8J , in some examples, theuser 10 taps theexpansion element 250 on thedisplay 201 when theexpansion element 250 is in thecollapsed state 250 a and theGUI 240 is displaying three links 230-1, 230-2, 230-3. TheGUI 240 displays an expanded state 250 b of theexpansion element 250 as shown inFIGS. 8G and 8I . The expanded state 250 b includes a number oflinks 230 greater than the number oflinks 230 displayed in thecollapsed state 250 a. For example, when in thecollapsed state 250 a zerolinks 230 are displayed, then in the expanded state 250 b, one ormore links 230 are displayed. As shown inFIGS. 8G and 8I , sixlinks 230 are displayed when in the expanded state 250 b. Theuser 10 may tap theexpansion element 250 on the display when the expansion element is in the expanded state 250 b, and theGUI 240 displays less user selectablelinks 230. As shown, theexpansion element 250 toggles between thecollapsed state 250 a and the expanded state 250 b, however, theexpansion element 250 may include an expansion button separate from a reduction button. In some examples, where thesearch application 216 groups thelinks 230 together if thelinks 230 are related to the same application 204, thesearch application 216 only displays theheader 242 associated with the application 204 and auser 10 may select theexpansion element 250 to view thelinks 230. In other examples, thesearch application 216 displays a predetermined number of links 230 (e.g., three links 230) and when theuser 10 selects theexpansion link 250 the remainder of the search results 220 associated with the application 204 are displayed. -
FIGS. 2, 8J, and 8K , illustrate an example, of executing a search on auser device 200 using thesearch application 216 executing on theuser device 200. InFIG. 8J theuser 10 entered asearch query 212 of “Late night diner” into the search field 214 (e.g., a search box) of theGUI 240 of thesearch application 216. In response to thesearch query 212, thesearch application 216 generates aquery wrapper 210 including thesearch query 212 and transmits thequery wrapper 210 to thesearch system 300, which returnssearch results 220 based on thesearch query 212. - The
search module 310 transmits the search results 330 including a list of applications 204 and/or access mechanisms 202 to theuser device 200. The list of applications, 204 (native orweb applications 204 a, 204) illustrated inFIG. 8J is similar to the list of applications 204 illustrated and discussed inFIG. 8C . Theuser 10 may select (e.g., touch or click) one of thelinks 230 to access resources indicated in the link. For example, theuser 10 may select the area of theGUI 240 including the “Denny's” icon to select the second link 230-2 of the YELP®native application 204 a. In response to the user selection, the user device 200 (e.g.,search application 216,operating system 224, and/or the YELP®native application 204 a) can launch the selectedapplication 204 a associated with thelink 230 and access the state of the application 204 indicated in thelink 230. In the example, ofFIG. 8I , the selected link 230-2 may provide access to information relating to a “Denny's” restaurant.FIG. 8k illustrates aGUI 240 of the selectednative application 204 a that was launched in response to the selection of the second link 230-2, where the selectednative application 204 a displays information relating to a restaurant. - Modules and data stores included in the
search system 300 represent features that may be included in thesearch system 300 of the present disclosure. The modules and data stores described herein may be embodied by electronic hardware, software, firmware, or any combination thereof. Depiction of different features as separate modules and data stores does not necessarily imply whether the modules and data stores are embodied by common or separate electronic hardware or software components. In some implementations, the features associated with the one or more modules and data stores depicted herein may be realized by common electronic hardware and software components. In some implementations, the features associated with the one or more modules and data stores depicted herein may be realized by separate electronic hardware and software components. - The modules and data stores may be embodied by electronic hardware and software components including, but not limited to, one or more processing units, one or more memory components, one or more input/output (I/O) components, and interconnect components. Interconnect components may be configured to provide communication between the one or more processing units, the one or more memory components, and the one or more I/O components. For example, the interconnect components may include one or more buses that are configured to transfer data between electronic components. The interconnect components may also include control circuits (e.g., a memory controller and/or an I/O controller) that are configured to control communication between electronic components.
- In some implementations, the
search system 300 may be a system of one or more computing devices (e.g., a computer search system) that are configured to implement the techniques described herein. Put another way, the features attributed to the modules and data stores described herein may be implemented by one or more computing devices. Each of the one or more computing devices may include any combination of electronic hardware, software, and/or firmware described above. For example, each of the one or more computing devices may include any combination of processing units, memory components, I/O components, and interconnect components described above. The one or more computing devices of thesearch system 300 may also include various human interface devices, including, but not limited to, display screens, keyboards, pointing devices (e.g., a mouse), touchscreens, speakers, and microphones. The computing devices may also be configured to communicate with additional devices, such as external memory (e.g., external HDDs). - The one or more computing devices of the
search system 300 may be configured to communicate with thenetwork 120. The one or more computing devices of thesearch system 300 may also be configured to communicate with one another (e.g., via a computer network). In some examples, the one or more computing devices of thesearch system 300 may include one or more server computing devices configured to communicate with user devices (e.g., receive query wrappers and transmit search results), gather data fromdata sources 130, index data, store the data, and store other documents. The one or more computing devices may reside within a single machine at a single geographic location in some examples. In other examples, the one or more computing devices may reside within multiple machines at a single geographic location. In still other examples, the one or more computing devices of thesearch system 300 may be distributed across a number of geographic locations. -
FIG. 9 is schematic view of anexample computing device 900 that may be used to implement the systems and methods described in this document. Thecomputing device 900 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document. - The
computing device 900 includes aprocessor 910,memory 920, astorage device 930, a high-speed interface/controller 940 connecting to thememory 920 and high-speed expansion ports 950, and a low speed interface/controller 960 connecting tolow speed bus 970 andstorage device 930. Each of thecomponents processor 910 can process instructions for execution within thecomputing device 900, including instructions stored in thememory 920 or on thestorage device 930 to display graphical information for a graphical user interface (GUI) on an external input/output device, such asdisplay 980 coupled tohigh speed interface 940. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also,multiple computing devices 900 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system). - The
memory 920 stores information non-transitorily within thecomputing device 900. Thememory 920 may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s). Thenon-transitory memory 920 may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by thecomputing device 900. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes. - The
storage device 930 is capable of providing mass storage for thecomputing device 900. In some implementations, thestorage device 930 is a computer-readable medium. In various different implementations, thestorage device 930 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as thememory 920, thestorage device 930, or memory onprocessor 910. - The
high speed controller 940 manages bandwidth-intensive operations for thecomputing device 900, while thelow speed controller 960 manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller 940 is coupled to thememory 920, the display 980 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 950, which may accept various expansion cards (not shown). In some implementations, the low-speed controller 960 is coupled to thestorage device 930 and low-speed expansion port 970. The low-speed expansion port 970, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter. - The
computing device 900 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as astandard server 900 a or multiple times in a group ofsuch servers 900 a, as alaptop computer 900 b, or as part of arack server system 900 c. - Various implementations of the systems and techniques described here can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
- These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non-transitory computer readable medium, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
- Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Moreover, subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The terms “data processing apparatus”, “computing device” and “computing processor” encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
- A computer program (also known as an application, program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
- Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- To provide for interaction with a user, one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
- One or more aspects of the disclosure can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
- While this specification contains many specifics, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features specific to particular implementations of the disclosure. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
- Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multi-tasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
- A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results.
Claims (20)
1. A user device comprising:
a computing device that:
transmits a search query from the user device;
receives a first grouped set of search results based on the search query, wherein the first grouped set corresponds to a first application, and wherein the first grouped set includes:
a header, wherein the header includes a first access mechanism corresponding to a first state of the first application; and
at least two search results, wherein each of the search results (i) corresponds to a respective second state of the first application responsive to the search query and (ii) includes a respective second access mechanism corresponding to the respective second state; and
a display that displays (i) the first grouped set of search results and (ii) a header link corresponding to the header,
wherein, in response to the header link being selected, the computing device accesses the first state of the application using the first access mechanism.
2. The user device of claim 1 wherein the first access mechanism corresponds to a default access mechanism of the first application, and wherein the first state corresponds to a default state of the first application.
3. The user device of claim 1 wherein the at least two search results include a first search result and a second search result, and wherein the respective second states corresponding to the first search result and the second search result are different.
4. The user device of claim 1 wherein the display displays an installation state of the first application, the installation state indicating whether a native application edition of the first application is installed on the user device.
5. The user device of claim 1 wherein the display displays respective selectable links corresponding to each of the at least two search results, and wherein, in response to one of the respective selectable links being selected, the computing device accesses a corresponding one of the respective second states.
6. The user device of claim 5 wherein:
the display displays an expansion element associated with the header, wherein the expansion element has an expanded state and a collapsed state;
when the expansion element is in the expanded state, a first amount of the respective selectable links is displayed; and
when the expansion element is in the collapsed state, a second amount of the respective selectable links is displayed, wherein the second amount is less than the first amount.
7. The user device of claim 6 wherein, in response to a request by a user to transition the expansion element to the expanded state:
the computing device (i) generates a request for additional individual search results corresponding to the first application and (ii) receives the additional individual search results; and
the display displays additional respective selectable links corresponding to the additional individual search results.
8. The user device of claim 1 wherein (i) the first grouped set of search results includes an advertisement associated with the first application and (ii) the display displays the advertisement with the first grouped set of search results.
9. The user device of claim 1 wherein the header link includes a name of the first application.
10. The user device of claim 1 wherein the search results indicate a plurality of native applications installable and executable on the user device, and wherein the first access mechanism is configured to, in response to selection of the header link, perform at least one of the following: (i) open the corresponding native application on the user device to a default state and (ii) download and install the corresponding native application onto the user device and subsequently open the corresponding native application on the user device to the default state.
11. A method comprising:
transmitting a search query from a user device;
receiving, at the user device, a first grouped set of search results based on the search query, wherein the first grouped set corresponds to a first application, and wherein the first grouped set includes:
a header, wherein the header includes a first access mechanism corresponding to a first state of the first application; and
at least two search results, wherein each of the search results (i) corresponds to a respective second state of the first application responsive to the search query and (ii) includes a respective second access mechanism corresponding to the respective second state;
displaying, on a display, (i) the first grouped set of search results and (ii) a header link corresponding to the header; and
in response to the header link being selected, accessing the first state of the application using the first access mechanism.
12. The method of claim 11 wherein the first access mechanism corresponds to a default access mechanism of the first application, and wherein the first state corresponds to a default state of the first application.
13. The method of claim 11 wherein the at least two search results include a first search result and a second search result, and wherein the respective second states corresponding to the first search result and the second search result are different.
14. The method of claim 11 further comprising displaying an installation state of the first application, wherein the installation state indicates whether a native application edition of the first application is installed on the user device.
15. The method of claim 11 further comprising:
displaying respective selectable links corresponding to each of the at least two search results; and
in response to one of the respective selectable links being selected, accessing a corresponding one of the respective second states.
16. The method of claim 15 further comprising:
displaying an expansion element associated with the header, wherein the expansion element has an expanded state and a collapsed state;
in response to the expansion element being in the expanded state, displaying a first amount of the respective selectable links is displayed; and
in response to the expansion element being in the collapsed state, displaying a second amount of the respective selectable links, wherein the second amount is less than the first amount.
17. The method of claim 16 further comprising, in response to a request by a user to transition the expansion element to the expanded state:
generating a request for additional individual search results corresponding to the first application;
receiving the additional individual search results; and
displaying additional respective selectable links corresponding to the additional individual search results.
18. The method of claim 11 further comprising:
including an advertisement associated with the first application in the first grouped set of search results; and
displaying the advertisement with the first grouped set of search results.
19. The method of claim 11 further comprising including a name of the first application in the header link.
20. A non-transitory computer-readable medium comprising stored computer program instructions that, when executed on a user device, cause one or more processors to:
transmit a search query from the user device;
receive, at the user device, a first grouped set of search results based on the search query, wherein the first grouped set corresponds to a first application, and wherein the first grouped set includes:
a header, wherein the header includes a first access mechanism corresponding to a first state of the first application; and
at least two search results, wherein each of the search results (i) corresponds to a respective second state of the first application responsive to the search query and (ii) includes a respective second access mechanism corresponding to the respective second state;
display, on a screen, (i) the first grouped set of search results and (ii) a header link corresponding to the header; and
in response to the header link being selected, access the first state of the application using the first access mechanism.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/396,723 US20170147659A1 (en) | 2014-10-23 | 2017-01-02 | Systems and Methods for Accessing Applications in Grouped Search Results |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/521,526 US9626443B2 (en) | 2014-10-23 | 2014-10-23 | Searching and accessing application functionality |
US15/396,723 US20170147659A1 (en) | 2014-10-23 | 2017-01-02 | Systems and Methods for Accessing Applications in Grouped Search Results |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/521,526 Continuation US9626443B2 (en) | 2014-10-23 | 2014-10-23 | Searching and accessing application functionality |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170147659A1 true US20170147659A1 (en) | 2017-05-25 |
Family
ID=55792170
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/521,526 Expired - Fee Related US9626443B2 (en) | 2014-10-23 | 2014-10-23 | Searching and accessing application functionality |
US15/396,723 Abandoned US20170147659A1 (en) | 2014-10-23 | 2017-01-02 | Systems and Methods for Accessing Applications in Grouped Search Results |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/521,526 Expired - Fee Related US9626443B2 (en) | 2014-10-23 | 2014-10-23 | Searching and accessing application functionality |
Country Status (1)
Country | Link |
---|---|
US (2) | US9626443B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180239827A1 (en) * | 2013-06-19 | 2018-08-23 | Microsoft Technology Licensing, Llc | Identifying relevant apps in response to queries |
US10387379B2 (en) * | 2015-05-13 | 2019-08-20 | Samsung Electronics Co., Ltd. | State extrapolation for automated and semi-automated crawling architecture |
US11256525B2 (en) | 2016-12-09 | 2022-02-22 | Beijing Xiaomi Mobile Software Co., Ltd. | Object starting method and device |
WO2022174749A1 (en) * | 2021-02-20 | 2022-08-25 | 花瓣云科技有限公司 | Associative word displaying method, terminal device, and computer storage medium |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6105094B2 (en) | 2013-03-01 | 2017-03-29 | クイクシー インコーポレイテッド | Generate search results with status links to applications |
US9720672B2 (en) | 2014-01-06 | 2017-08-01 | Quixey, Inc. | Searching and accessing application functionality |
US20150242421A1 (en) | 2014-02-21 | 2015-08-27 | Quixey, Inc. | Location-Based Searching |
US10210263B1 (en) * | 2014-06-24 | 2019-02-19 | Google Llc | Native application search results |
US10324985B2 (en) | 2014-12-19 | 2019-06-18 | Samsung Electronics Co., Ltd. | Device-specific search results |
US11132711B2 (en) * | 2014-12-23 | 2021-09-28 | Facebook, Inc. | Inline expansion of maps in content items |
US10366127B2 (en) * | 2014-12-29 | 2019-07-30 | Samsung Electronics Co., Ltd. | Device-specific search results |
US10503764B2 (en) * | 2015-06-01 | 2019-12-10 | Oath Inc. | Location-awareness search assistance system and method |
US9910685B2 (en) | 2015-08-13 | 2018-03-06 | Samsung Electronics Co., Ltd. | System and method for identifying, indexing, and navigating to deep states of mobile applications |
US10739960B2 (en) * | 2015-09-22 | 2020-08-11 | Samsung Electronics Co., Ltd. | Performing application-specific searches using touchscreen-enabled computing devices |
US10586169B2 (en) * | 2015-10-16 | 2020-03-10 | Microsoft Technology Licensing, Llc | Common feature protocol for collaborative machine learning |
US9894475B2 (en) * | 2015-10-20 | 2018-02-13 | Perfect Sense, Inc. | Micro-location monitoring techniques |
US9983892B2 (en) | 2015-11-06 | 2018-05-29 | Samsung Electronics Co., Ltd. | Deep linking to mobile application states through programmatic replay of user interface events |
US9858094B2 (en) | 2015-11-10 | 2018-01-02 | Samsung Electronics Co., Ltd. | Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention |
US10324990B2 (en) * | 2016-03-23 | 2019-06-18 | International Business Machines Corporation | Providing continued searching and associated indicators |
US11256606B2 (en) | 2016-11-04 | 2022-02-22 | Salesforce.Com, Inc. | Declarative signup for ephemeral organization structures in a multitenant environment |
CN108319489B (en) | 2018-02-13 | 2020-07-03 | Oppo广东移动通信有限公司 | Application page startup method, device, storage medium and electronic device |
US11704370B2 (en) | 2018-04-20 | 2023-07-18 | Microsoft Technology Licensing, Llc | Framework for managing features across environments |
US11010272B2 (en) * | 2018-07-31 | 2021-05-18 | Salesforce.Com, Inc. | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment |
US11010481B2 (en) * | 2018-07-31 | 2021-05-18 | Salesforce.Com, Inc. | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment |
US11243822B2 (en) * | 2018-10-01 | 2022-02-08 | Google Llc | Automatic link based message verification |
US11144720B2 (en) * | 2019-08-26 | 2021-10-12 | Roblox Corporation | Determining canonical content for a game |
US11461419B2 (en) * | 2020-07-09 | 2022-10-04 | Google Llc | Discovering alternate online service providers |
USD1021942S1 (en) * | 2021-12-01 | 2024-04-09 | Coinbase, Inc. | Display screen with graphical user interface |
USD1021941S1 (en) * | 2021-12-01 | 2024-04-09 | Coinbase, Inc. | Display screen with graphical user interface |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070220317A1 (en) * | 2005-11-30 | 2007-09-20 | Honeywell International Inc. | System and method for providing a software installation or removal status display |
US20090138445A1 (en) * | 2007-11-26 | 2009-05-28 | Urban Mapping, Inc. | Generating geographical keywords for geotargeting search engine-offered advertisements |
US7730012B2 (en) * | 2004-06-25 | 2010-06-01 | Apple Inc. | Methods and systems for managing data |
US20120284247A1 (en) * | 2011-05-06 | 2012-11-08 | Microsoft Corporation | Integrating applications within search results |
US20130238609A1 (en) * | 2012-03-07 | 2013-09-12 | Microsoft Corporation | Query result rendering |
US20140067846A1 (en) * | 2012-08-30 | 2014-03-06 | Apple Inc. | Application query conversion |
US20140358910A1 (en) * | 2013-05-29 | 2014-12-04 | Microsoft Corporation | Integrated search results |
US20140359598A1 (en) * | 2013-05-29 | 2014-12-04 | Microsoft Corporation | Application installation from search results |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996391B2 (en) | 2005-06-20 | 2011-08-09 | Google Inc. | Systems and methods for providing search results |
US7720834B2 (en) | 2005-06-23 | 2010-05-18 | Microsoft Corporation | Application launching via indexed data |
US20080009268A1 (en) | 2005-09-14 | 2008-01-10 | Jorey Ramer | Authorized mobile content search results |
US8099332B2 (en) | 2008-06-06 | 2012-01-17 | Apple Inc. | User interface for application management for a mobile device |
US8661033B2 (en) | 2009-03-31 | 2014-02-25 | Innography, Inc. | System to provide search results via a user-configurable table |
KR20120040160A (en) | 2009-05-27 | 2012-04-26 | 구글 인코포레이티드 | Computer application data in search results |
US8386455B2 (en) | 2009-09-20 | 2013-02-26 | Yahoo! Inc. | Systems and methods for providing advanced search result page content |
US8881128B2 (en) | 2010-02-25 | 2014-11-04 | Blackberry Limited | Method and system for acquisition of an application for installation at a communication device |
US10216408B2 (en) | 2010-06-14 | 2019-02-26 | Apple Inc. | Devices and methods for identifying user interface objects based on view hierarchy |
US20120124062A1 (en) | 2010-11-12 | 2012-05-17 | Microsoft Corporation | Application Transfer Protocol |
US20120316955A1 (en) | 2011-04-06 | 2012-12-13 | Yahoo! Inc. | System and Method for Mobile Application Search |
WO2012154843A1 (en) | 2011-05-09 | 2012-11-15 | Google Inc. | Identifying applications of interest based on application market log data |
US9519726B2 (en) | 2011-06-16 | 2016-12-13 | Amit Kumar | Surfacing applications based on browsing activity |
KR101812657B1 (en) | 2011-11-22 | 2018-01-31 | 삼성전자주식회사 | A method and apparatus for recommending applications based on context information |
US8984166B2 (en) | 2012-04-05 | 2015-03-17 | Cloudflare, Inc. | Method and apparatus for reducing network resource transmission size using delta compression |
US9569500B2 (en) | 2012-04-27 | 2017-02-14 | Quixey, Inc. | Providing a customizable application search |
US9600530B2 (en) | 2012-04-27 | 2017-03-21 | Quixey, Inc. | Updating a search index used to facilitate application searches |
US9256697B2 (en) | 2012-05-11 | 2016-02-09 | Microsoft Technology Licensing, Llc | Bidirectional mapping between applications and network content |
US9552414B2 (en) | 2012-05-22 | 2017-01-24 | Quixey, Inc. | Dynamic filtering in application search |
US9405832B2 (en) | 2012-05-31 | 2016-08-02 | Apple Inc. | Application search query classifier |
US9280789B2 (en) | 2012-08-17 | 2016-03-08 | Google Inc. | Recommending native applications |
US9104787B2 (en) | 2012-12-14 | 2015-08-11 | Microsoft Technology Licensing, Llc | Augmenting search results with relevant third-party application content |
US9002821B2 (en) | 2013-01-16 | 2015-04-07 | Google Inc. | Indexing application pages of native applications |
US20140358887A1 (en) | 2013-05-29 | 2014-12-04 | Microsoft Corporation | Application content search management |
US9135346B2 (en) | 2013-06-07 | 2015-09-15 | Google Inc. | Index data for native applications |
-
2014
- 2014-10-23 US US14/521,526 patent/US9626443B2/en not_active Expired - Fee Related
-
2017
- 2017-01-02 US US15/396,723 patent/US20170147659A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730012B2 (en) * | 2004-06-25 | 2010-06-01 | Apple Inc. | Methods and systems for managing data |
US20070220317A1 (en) * | 2005-11-30 | 2007-09-20 | Honeywell International Inc. | System and method for providing a software installation or removal status display |
US20090138445A1 (en) * | 2007-11-26 | 2009-05-28 | Urban Mapping, Inc. | Generating geographical keywords for geotargeting search engine-offered advertisements |
US20120284247A1 (en) * | 2011-05-06 | 2012-11-08 | Microsoft Corporation | Integrating applications within search results |
US20130238609A1 (en) * | 2012-03-07 | 2013-09-12 | Microsoft Corporation | Query result rendering |
US20140067846A1 (en) * | 2012-08-30 | 2014-03-06 | Apple Inc. | Application query conversion |
US20140358910A1 (en) * | 2013-05-29 | 2014-12-04 | Microsoft Corporation | Integrated search results |
US20140359598A1 (en) * | 2013-05-29 | 2014-12-04 | Microsoft Corporation | Application installation from search results |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180239827A1 (en) * | 2013-06-19 | 2018-08-23 | Microsoft Technology Licensing, Llc | Identifying relevant apps in response to queries |
US10387379B2 (en) * | 2015-05-13 | 2019-08-20 | Samsung Electronics Co., Ltd. | State extrapolation for automated and semi-automated crawling architecture |
US11256525B2 (en) | 2016-12-09 | 2022-02-22 | Beijing Xiaomi Mobile Software Co., Ltd. | Object starting method and device |
WO2022174749A1 (en) * | 2021-02-20 | 2022-08-25 | 花瓣云科技有限公司 | Associative word displaying method, terminal device, and computer storage medium |
US12271534B2 (en) | 2021-02-20 | 2025-04-08 | Petal Cloud Technology Co., Ltd. | Method for displaying associated term, terminal device, and computer storage medium |
Also Published As
Publication number | Publication date |
---|---|
US20160117388A1 (en) | 2016-04-28 |
US9626443B2 (en) | 2017-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9626443B2 (en) | Searching and accessing application functionality | |
US10310834B2 (en) | Searching and accessing application functionality | |
US10338898B2 (en) | State-specific external functionality for software developers | |
US10318599B2 (en) | Providing additional functionality as advertisements with search results | |
US10157232B2 (en) | Personalizing deep search results using subscription data | |
US20160189214A1 (en) | Personalizing Advertisements Using Subscription Data | |
US10089652B2 (en) | Generating advertisements for search results that reference software applications | |
US20150242510A1 (en) | Interactive Search Results | |
JP2016520913A (en) | Entity bid | |
US20170097967A1 (en) | Automated Customization of Display Component Data for Search Results | |
US10120951B2 (en) | Bifurcated search | |
US9946794B2 (en) | Accessing special purpose search systems | |
US20170193059A1 (en) | Searching For Applications Based On Application Usage | |
US10936584B2 (en) | Searching and accessing application-independent functionality | |
US20160034957A1 (en) | Generating Advertisements for Search Results Associated With Entities Based on Aggregated Entity Bids | |
US20160188684A1 (en) | Consolidating Search Results | |
US11392589B2 (en) | Multi-vertical entity-based search system | |
US20160188130A1 (en) | Automatic Conditional Application Downloading | |
US20160307237A1 (en) | Accessing Advertised Application States From A Current Application State | |
US20200081930A1 (en) | Entity-based search system using user engagement | |
US20170103073A1 (en) | Identifying Expert Reviewers | |
US20170192977A1 (en) | Searching Based On Application Usage | |
US20160188721A1 (en) | Accessing Multi-State Search Results | |
US20160034958A1 (en) | Generating Advertisements For Search Results That Are Associated With Entities | |
WO2016100777A1 (en) | Providing additional functionality as advertisements with search results |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUIXEY, INC.;REEL/FRAME:043972/0569 Effective date: 20171019 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |