US20160357764A1 - Generating Search Results based on Proximate Computing Devices - Google Patents
Generating Search Results based on Proximate Computing Devices Download PDFInfo
- Publication number
- US20160357764A1 US20160357764A1 US14/982,161 US201514982161A US2016357764A1 US 20160357764 A1 US20160357764 A1 US 20160357764A1 US 201514982161 A US201514982161 A US 201514982161A US 2016357764 A1 US2016357764 A1 US 2016357764A1
- Authority
- US
- United States
- Prior art keywords
- proximate
- record
- user device
- indication
- search
- 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/3087—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0261—Targeted advertisements based on user location
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G06F17/3053—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0267—Wireless devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0269—Targeted advertisements based on user profile or attribute
- G06Q30/0271—Personalized advertisement
-
- H04W4/005—
-
- H04W4/008—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/02—Services making use of location information
- H04W4/023—Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/70—Services for machine-to-machine communication [M2M] or machine type communication [MTC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W64/00—Locating users or terminals or network equipment for network management purposes, e.g. mobility management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/02—Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
- H04W84/10—Small scale networks; Flat hierarchical networks
- H04W84/12—WLAN [Wireless Local Area Networks]
Definitions
- This disclosure generally relates to the field of search, and more particularly to techniques for generating and displaying search results on user devices.
- a method includes receiving a search query and an indication of a proximate device from a user device.
- the proximate device is located proximate to the user device and configured to communicate via a local wireless network.
- the user device receives the indication of the proximate device from the proximate device via the local wireless network.
- the method further includes identifying one or more records based on the search query and the indication.
- each record includes record content and record information that describes the content.
- the method also includes selecting the record content from the identified records and transmitting the selected content to the user device as search results.
- a method in another example, includes receiving a search query from a user device and identifying one or more records based on the query.
- each record includes record content and record information that describes the content.
- the method further includes receiving an indication of a proximate device from the user device.
- the proximate device is located proximate to the user device and configured to communicate via a local wireless network.
- the user device receives the indication of the proximate device from the proximate device via the local wireless network.
- the method still further includes generating a result score for each of the identified records based on the indication and selecting one or more of the identified records based on the one or more result scores.
- the method also includes selecting the record content from the selected records and transmitting the selected content to the user device as search results.
- a system in another example, includes one or more computing devices configured to receive a search query and an indication of a proximate device from a user device.
- the proximate device is located proximate to the user device and configured to communicate via a local wireless network.
- the user device receives the indication of the proximate device from the proximate device via the local wireless network.
- the computing devices are further configured to identify one or more records based on the search query and the indication. In this example, each record includes record content and record information that describes the content. The computing devices are also configured to select the record content from the identified records and transmit the selected content to the user device as search results.
- a system in another example, includes one or more computing devices configured to receive a search query from a user device and identify one or more records based on the query.
- each record includes record content and record information that describes the content.
- the computing devices are further configured to receive an indication of a proximate device from the user device.
- the proximate device is located proximate to the user device and configured to communicate via a local wireless network.
- the user device receives the indication of the proximate device from the proximate device via the local wireless network.
- the computing devices are still further configured to generate a result score for each of the identified records based on the indication and select one or more of the identified records based on the one or more result scores.
- the computing devices are also configured to select the record content from the selected records and transmit the selected content to the user device as search results.
- FIG. 1 depicts an example environment that includes a search system and one or more user devices, proximate devices, and data sources that communicate via a network.
- FIG. 2 depicts an example user device in communication with one or more example proximate devices and an example search system.
- FIG. 3A is a functional block diagram of an example search system.
- FIG. 3B is a functional block diagram of an example search module.
- FIGS. 4A-4B depict example records included in an example search data store.
- FIGS. 5A-5B are flow diagrams that illustrate example methods for generating search results based on proximate devices using a search system.
- FIG. 6 is a flow diagram that illustrates an example method for generating search results based on proximate devices using a user device.
- FIGS. 7A-7B depict example graphical user interfaces (GUIs) that may be generated on a user device according to the present disclosure.
- GUIs graphical user interfaces
- the present disclosure generally relates to the field of search, and, more particularly, to techniques for generating and displaying search results on user devices.
- a user device e.g., a smart watch, smartphone, tablet computer, or laptop computer
- proximate devices may be capable of indicating their presence near the user device to the device.
- the proximate devices may include one or more network-connected (e.g., communicatively coupled via a computer network, or “networked”) computing devices and/or appliances.
- the proximate devices may include any of networked desktop computers, printers, routers, smart televisions, gaming consoles, and wireless speakers.
- the proximate devices may include any of networked home thermostats, light switches, refrigerators, microwaves, toasters, crock-pots, and other home and kitchen devices and appliances.
- the proximate devices may be networked using any of Wi-Fi, Bluetooth, near-field communication (NFC), ZigBee, Z-Wave, radio frequency identification (RFID), and/or other short-range local wireless communication protocols, interfaces, and technologies.
- the proximate devices may be further networked using any of Ethernet, USB, optical fiber, power line and/or other wired communication protocols, interfaces, and technologies.
- the proximate devices may include one or more devices commonly referred to as “Internet of Things” (IoT) devices that are connected to a local network and, e.g., the Internet, via a wired and/or wireless communications interface.
- IoT Internet of Things
- the user device may include any computing device that is capable of connecting to and interacting with one or more of the proximate devices via any of the local wireless communication protocols, interfaces, and technologies described herein.
- the user device may also be capable of connecting to and interacting with other computing devices via any of the wired communication protocols, interfaces, and technologies described herein.
- the proximate devices may be configured to indicate their proximity to the user device via a local wireless communication protocol, interface, or technology (e.g., any of the local wireless communication protocols, interfaces, and technologies described herein).
- each proximate device may be configured to transmit an indication of the device to the user device via a short-range local wireless network (e.g., Wi-Fi, Bluetooth, or NFC).
- a local wireless network may refer to any communication protocol, interface, or technology that enables two or more computing devices to exchange data wirelessly over a relatively short distance (e.g., up to 10-100 meters).
- a first computing device may transmit data wirelessly to a second, different computing device.
- the second computing device may also transmit data wirelessly to the first computing device using the local wireless network.
- the proximate device transmitting the indication of the device to the user device via the short-range local wireless network may indicate that the proximate device is located proximate to (e.g., nearby) the user device.
- the proximate device may transmit the indication to the user device as part of actively communicating with the user device (e.g., the proximate device may be communicatively coupled with the user device).
- the proximate device may transmit the indication to the user device as part of (e.g., in response to) the user device scanning for, or “pinging” (e.g., querying to determine a connection with, or activity of) nearby devices using a local wireless network (e.g., Wi-Fi, or Bluetooth).
- the proximate device may transmit the indication as part of a transmission (e.g., a broadcast) intended for one or more computing devices other than the user device (e.g., as part of pairing the proximate device with, or transmitting data to, the computing devices).
- the user device may receive the indication as a result of the transmission (e.g., by listening for and/or receiving the transmission).
- the user device may not transmit any data to the identified proximate device as part of receiving the indication of the proximate device from the proximate device. In this manner, the user device may receive the indication as a result of various types of data transmission by the proximate device, including data transmission directly to the user device, and data transmission to one or more other computing devices. As described herein, the proximate device may transmit the indication to the user device over a local wireless network. In some examples, the proximate device may transmit the indication wirelessly using an intermediate device, such as a wireless router, a Wi-Fi adapter, or a Bluetooth adapter.
- an intermediate device such as a wireless router, a Wi-Fi adapter, or a Bluetooth adapter.
- one or more such indications received by the user device from one or more proximate devices that are located proximate to the user device may be referred to as a “snapshot” of the proximate devices from the standpoint of the user device.
- the user device may identify the proximate devices as located proximate to the user device.
- the user device may identify each proximate device as being located proximate to the user device.
- the user device may identify a subset of the proximate devices as being located proximate to the user device.
- the user device may identify one or more of the proximate devices as being located the most proximate (e.g., closest) to the user device.
- the user device may generate one or more search results based on the devices and a search query specified by a user of the device.
- the search results may include or reference a variety of different types of information and content.
- the user device e.g., the search system
- the user device may generate the search results such that the results are relevant to both the search query and to one or more aspects of the identified proximate devices, their types (e.g., device categories), and/or their specific states at the time the devices were identified.
- the user device may display the results to the user.
- the techniques described herein may improve search query understanding and search result relevance.
- the identified proximate devices, their types, and/or their states may serve as useful contextual data related to the user and the user's behavior (e.g., the user's intent, or need) with respect to the search query.
- the techniques may improve understanding of the query.
- the techniques may further enable generating search results that are more relevant to the user than those generated using the query alone.
- FIG. 1 is a functional block diagram that illustrates an example environment including a search system 100 and one or more user devices 102 , proximate devices 104 , and data sources 108 that communicate via a network 106 .
- the network 106 through which the above-described systems and devices communicate may include any type of network, such as a local area network (LAN), a wide area network (WAN), and/or the Internet.
- the search system 100 includes a search module 110 , a search data store 112 , and a result generation module 114 , which are described in greater detail herein.
- the search system 100 receives a search query and one or more indications of one or more of the proximate device(s) 104 , their types, and/or their states from one of the user device(s) 102 .
- the search system 100 then generates one or more search results in response to receiving the search query and the indications.
- the search system 100 generates the search results based on the search query and the indications, as well as using information included in one or more records stored in the search data store 112 .
- each record may include or reference a variety of different content (e.g., record content), such as web pages (e.g., web links), documents (e.g., text), media (e.g., image, audio, and/or video) files, software applications (apps), and/or states of software apps.
- the search system 100 selects the record content from the records and transmits the content to the user device 102 as the search results.
- Each record may also include other information (e.g., record information, such as text, and/or record identifiers (IDs)) which the search system 100 may use to identify the records in the search data store 112 .
- the search system 100 transmits the search results, including the record content, to the user device 102 , which displays the results to a user of the device 102 as one or more user selectable links that include the content.
- the search module 110 may identify one or more records included in the search data store 112 based on the search query and, e.g., the indications of the one or more of the proximate device(s) 104 , their types, and/or their states. Initially, the search module 110 may analyze the search query. The search module 110 may then identify one or more records included in the search data store 112 based on the (e.g., analyzed) search query and, e.g., the indications. For example, the search module 110 may identify the records based on (e.g., text) matches between terms of the search query and terms of information included in the records.
- the search module 110 may identify the records based on (e.g., text) matches between terms of the search query and terms of information included in the records.
- the search module 110 may further identify the records based on (e.g., text) matches between the indications and information included in the records.
- the search module 110 may then process (e.g., score) the identified records. For example, the search module 110 may determine how well the identified records match the search query and, e.g., various aspects of one or more of the proximate device(s) 104 , as specified by the indications.
- the search module 110 may then select one or more of the identified records that best match the search query and, e.g., various aspects of the proximate devices 104 , and transmit indications (e.g., IDs) of the selected records to the result generation module 114 .
- indications e.g., IDs
- the result generation module 114 may identify the records selected by the search module 110 in the search data store 112 using the received indications (e.g., IDs). The result generation module 114 may then select record content (e.g., web links, documents, media files, access mechanisms (AMs), such as app AMs (AAMs), web AMs (WAMs), and/or app download addresses (ADAs)) from the identified records. The result generation module 114 may transmit the selected record content to the user device 102 as the search results. In some examples, the result generation module 114 may transmit additional data with the record content to the user device 102 .
- record content e.g., web links, documents, media files, access mechanisms (AMs), such as app AMs (AAMs), web AMs (WAMs), and/or app download addresses (ADAs)
- AAMs app AMs
- WAMs web AMs
- ADAs app download addresses
- the search module 110 may generate result scores for the records from which the record content is selected (e.g., using values of metrics associated with the persons, places, or things described in the records, various features of the search query, and, e.g., various features of the proximate device(s) 104 as specified by the indications).
- each record e.g., the corresponding record content
- the result generation module 114 may transmit the result score associated with each record to the user device 102 with the record content of each record. Additionally, or alternatively, the result generation module 114 may transmit link data associated with each record (e.g., with the corresponding record content) to the user device 102 .
- Using the techniques described herein may, in some examples, enable generating search results that are relatively more relevant to the search query compared to search results generated using other techniques (e.g., based on the query alone).
- the user device 102 in response to receiving a search query “toast” from the user and upon identifying a proximate smart toaster 104 (e.g., a Bugatti Noun Toaster), the user device 102 may transmit the query and an indication of the toaster 104 (e.g., its model name/number, or general type) to the search system 100 (e.g., as part of a query wrapper).
- the user device 102 may receive from the search system 100 search results that are both responsive to the search query and relevant to the smart toaster 104 .
- the search results may specify one or more web pages, documents, media files, apps, and/or states of apps that are related to bread toast or bread toasters, rather than, e.g., to raising a glass and making a speech (e.g., an alternative interpretation of the term “toast”).
- the user device 102 may display an indication of the web pages, documents, files, apps, and/or states to the user as one or more user selectable links that, when selected by the user, cause the device 102 to access the web pages, documents, or media files, download and install the apps, and/or launch apps and set the apps into the states.
- Using the techniques may also enable generating search results that are directly applicable to those of the proximate device(s) 104 that are located proximate to the user device(s) 102 .
- the techniques may include using indications of the proximate device(s) 104 , their types, and/or their states (e.g., specific model names/numbers or device IDs, type IDs, and/or state IDs) to generate search results that are both responsive to user-specified search queries and directly applicable to the device(s) 104 .
- the user device 102 may be configured to receive search results that specify one or more web resources or files associated with the device(s) 104 , types, and/or states from the system 100 .
- the search results may include any of web pages (e.g., web links), documents (e.g., text), images, audio files, and/or video files that describe or relate to the proximate device(s) 104 , types, and/or states.
- the user device 102 may transmit the query and an indication of the crock-pot 104 to the search system 100 (e.g., as part of a query wrapper).
- the user device 102 may receive from the search system 100 search results that are both responsive to the search query and directly applicable to the smart crock-pot 104 .
- the search results may specify one or more web pages, documents, and/or (e.g., media) files associated with the smart crock-pot 104 (e.g., user manuals, walkthrough video tutorials, etc.).
- the user device 102 may display an indication of the web pages, documents, and/or files to the user as one or more user selectable links that, when selected by the user, cause the device 102 to access these resources.
- the user device 102 may be configured to receive search results that specify one or more native apps (e.g., app search results) associated with the proximate device(s) 104 , types, and/or states from the search system 100 .
- the search results may include any of text and image data that describe the apps and ADAs that enable the user device 102 to download and install the apps.
- the user device 102 may transmit the query and an indication of the printer 104 to the search system 100 (e.g., in a query wrapper).
- the user device 102 may receive from the search system 100 search results that are both responsive to the search query and specify one or more native apps that are directly applicable to the networked printer 104 .
- the search results may include one or more ADAs that each direct the user device 102 (e.g., in response to a user input) to a location (e.g., a digital distribution platform) from which the device 102 may download a native app associated with the networked printer 104 (e.g., the HP® All-in-One Printer Remote) that enables the user to print documents and/or images using the printer 104 .
- the user device 102 may display the ADAs (and, e.g., text and/or images included in the search results) to the user as one or more user selectable links that, when selected by the user, cause the device 102 to download and install the native app.
- the user device 102 may receive other types of search results (e.g., a device driver for the networked printer 104 ) that are both responsive to the search query and directly applicable to the printer 104 .
- the user device 102 may be configured to receive search results that specify one or more states of native apps (e.g., app state search results) associated with the proximate device(s) 104 , types, and/or states from the search system 100 .
- the search results may include any of text and image (e.g., link) data and one or more AAMs, WAMs, and ADAs that describe the states and enable the user device 102 to access the states (e.g., by first downloading and installing the corresponding app).
- the user device 102 may transmit the query and an indication of the lock 104 to the search system 100 (e.g., in a query wrapper).
- the user device 102 may receive from the search system 100 search results that are both responsive to the search query and specify one or more states of a native app that are directly applicable to the smart door lock 104 .
- the search results may include one or more AAMs that each direct the user device 102 to launch a native app associated with the smart door lock 104 (e.g., the August® Smart Lock App) and set the app into a state that unlocks the lock 104 .
- the user device 102 may display the AAMs to the user as one or more user selectable links that, when selected by the user, cause the device 102 to launch the native app and set the app into the corresponding states.
- the native app may further (e.g., automatically, or via additional user input) cause the smart door lock 104 to unlock.
- the search results may also include one or more WAMs that, when selected by the user (e.g., as part of a user selectable link), direct the user device 102 to a web equivalent (e.g., a web page) of one or more of the states (e.g., in cases where the user device 102 does not have the native app installed).
- the search results may also include one or more ADAs that direct the user device 102 (e.g., in response to a user input) to a location (e.g., a digital distribution platform) from which the device 102 may download the native app, e.g., prior to launching and setting it into any of the states previously described.
- the search results may specify web resources, files, apps, and/or states of apps that are directly applicable, complementary, or tangentially related to states of the proximate device(s) 104 .
- the search results may specify states of apps for hot or cold food items or beverages depending on whether a (e.g., specific model, or a general type of) networked home thermostat located proximate to the user device 102 indicates a particular indoor or outdoor temperature, temperature range, or ongoing mode of operation (e.g., cooling, or heating).
- the states of the proximate devices 104 may be indicated using state IDs that include textual and/or numerical data that describes the states of the devices 104 (e.g., “75° F.,” “day's range: 45° F.-55° F.,” “cooling” or “heating”).
- the search system 100 may identify state records 400 and/or rank the records 400 based on matches between the state IDs and information included in the records 400 , as described herein.
- the search results may specify web resources, files, apps, and/or states of apps that are directly applicable, complementary, or tangentially related to other properties (e.g., so-called “external” factors) of the user device 102 and/or the user that are derived based on the states of the proximate device(s) 104 .
- the user device 102 and/or the search system 100 may be configured to learn a particular user behavior associated with the user (and, e.g., other users) as a function of one or more states of the proximate device(s) 104 .
- the user device 102 and/or the search system 100 may determine that, given a particular state of a specific proximate device 104 (e.g., a networked home thermostat in the process of heating or cooling), the user performing searches for states of apps corresponding to restaurants may select search results specifying some restaurants over others.
- the user device 102 and/or the search system 100 may generate a mapping between the state (e.g., a corresponding state ID including text and/or numbers) and the information (e.g., text) included in the state records 400 associated with the selected search results.
- the user device 102 and/or the search system 100 may then use this mapping as part of generating search results for subsequent searches.
- the search system 100 may, given the same state of the proximate device 104 at a later point in time, identify and/or rank state records 400 based on matches between the information associated with the state by the mapping and information included in the records 400 , in a similar manner as described herein.
- an app may refer to computer software that causes a computing device (e.g., one of the user device(s) 102 ) to perform a task.
- an app may be referred to as a “program.”
- Example apps include word processing apps, spreadsheet apps, messaging apps, media streaming apps, social networking apps, and games.
- Apps can be executed on a variety of different computing devices, including mobile computing devices, such as smartphones, tablets, and wearable computing devices (e.g., smart headsets and/or smart watches). Apps can also be executed on other types of computing devices having other form factors, such as laptop computers, desktop computers, or other consumer electronic devices.
- apps may be installed on a computing device prior to a user purchasing the device.
- the user may download and install apps on the computing device after purchasing the device.
- a native app as used herein, may refer to an app that is installed and executed on a user device 102 .
- a web-based app in turn, may refer to an app that is accessible from a user device 102 via a web browser app included on the device 102 .
- An AM may include any of an AAM, a WAM, and an ADA.
- a user device 102 of the present disclosure may use an AM to access the functionality provided by a native or a web-based app.
- a user of the user device 102 may select a user selectable link that includes the AM to access the functionality of the app.
- An AAM may be a string that references a native app and indicates one or more operations for a user device 102 (e.g., the app) to perform. If a user of the user device 102 selects a user selectable link that includes the AAM, the device 102 may launch the native app and (e.g., cause the app to) perform the operations.
- the user selecting the user selectable link may cause the user device 102 to launch the native app and set the app into an app state (e.g., in which the app displays a GUI, or screen) that corresponds to the operations.
- the native app may be configured to display one or more products, services, or vendors, to the user, e.g., via a display device of the user device 102 .
- the AAM may specify the app state of the native app.
- the app state may refer to the operations indicated by the AAM and/or the outcome of the native app performing the operations in response to the user selecting the user selectable link that includes the AAM.
- a WAM may include a resource identifier that references a web resource (e.g., a page of a web-based app, or website).
- the WAM may include a uniform resource locator (URL) (i.e., a web address) used with the hypertext transfer protocol (HTTP).
- URL uniform resource locator
- HTTP hypertext transfer protocol
- the device 102 may launch a web browser app included on the device 102 and retrieve the web resource referenced by the resource identifier. Stated another way, if the user selects the user selectable link, the user device 102 may launch the web browser app and access an app state (e.g., a page) of a web-based app, or website, specified by the WAM.
- a WAM included in an app state record with an AAM may specify an app state of a web-based app that is an equivalent of (e.g., analogous to) an app state of a native app specified by the AAM.
- An ADA may specify a location (e.g., a digital distribution platform, such as Google Play® by Google Inc.) where a native app (e.g., a native app referenced by an AAM) may be downloaded.
- a native app e.g., a native app referenced by an AAM
- an app state record may include an ADA with an AAM (and, e.g., a WAM).
- the ADA may specify a location from which a native app referenced by the AAM may be downloaded.
- the search system 100 may transmit the search results, including the record content, to the user device 102 with additional data.
- the search system 100 may transmit link (e.g., text and/or image) data that the user device 102 may use to generate the user selectable links for the record content.
- Each user selectable link may include a portion of the link (e.g., text and/or image) data that the user of the user device 102 may select (e.g., touch, or “click on”).
- Each user selectable link may also be associated with a corresponding portion of the record content included in the search results, such that when the user selects the link, the user device 102 access the content.
- the user device 102 may access a web page using a web browser app, download and/or open a document or a media file, or launch a native or web-based app referenced by a corresponding AM and cause the app to perform one or more operations indicated by the AM.
- the text and/or image data of the user selectable link may indicate the web page, document, media file, or operations or function that the user device 102 accesses performs in response to selection of the link.
- the user selectable link is for a song in a native or web-based music player app
- the text and/or image data may indicate that the user device 102 will launch the app and that the app will play the song when the user selects the link.
- the user device 102 downloads a native app referenced by a corresponding AM and installs the app.
- Example user selectable links are described with reference to FIGS. 7A-7B .
- the search system 100 uses data (e.g., records) included in the search data store 112 to generate search results based on search queries and indications of the proximate device(s) 104 , their types, and/or their states received from the user device(s) 102 .
- the search data store 112 may include one or more databases, indices (e.g., inverted indices), tables, files, or other data structures that may be used to implement the techniques of this disclosure.
- the search data store 112 may be included in one or more storage devices.
- the search data store 112 includes one or more records. Each record may include a wide variety of different types of data, as described herein.
- each record may include, among other information, a record ID, record information, and record content.
- a record ID of a record may uniquely identify the record among other records included in the search data store 112 .
- Record information of a record may describe the record content included in, or referenced by the record. Example records are described with reference to FIGS. 4A-4B .
- the search system 100 receives the search query and the indications of the proximate device(s) 104 , their types, and/or their states from the user device 102 and generates the search results based on the query and the indications.
- the search query may include text, numbers, and/or symbols (e.g., punctuation) entered into the user device 102 by the user.
- the user may have entered the search query into a search field, or “search box,” of a search app (e.g., a search app 204 , as shown in FIG. 2 ) included on the user device 102 .
- the user may have entered the search query using a touchscreen keypad, a mechanical keypad, and/or via speech recognition techniques and transmitted the query to the search system 100 using the search app.
- the search app may be a native app (e.g., any of one or more native apps 206 , as further shown in FIG. 2 ) dedicated to search, or a more general app, such as a web browser app (e.g., a web browser app 202 , as also shown in FIG. 2 ).
- the indications of the proximate device(s) 104 , their types, and/or their states may include text, numbers, symbols (e.g., punctuation), and/or any machine-readable (e.g., binary) data used by the user device 102 (e.g., the search app) to represent the device(s) 104 , types, and/or states.
- the indications may include or reference any of device IDs, type IDs, and state IDs.
- the search app may identify the proximate device(s) 104 , determine their types and/or their states, and transmit the indications to the search system 100 (e.g., with the search query).
- the user device 102 may transmit additional data to the search system 100 with the search query and the indications of the proximate device(s) 104 , their types, and/or their states.
- the search query, the indications, and the additional data may be referred to herein as a query wrapper.
- the additional data may include geo-location data associated with the user device 102 , platform data for the device 102 (e.g., a type and/or a version of the device 102 , an operating system (OS), and/or a web browser app of the device 102 ), an identity of the user (e.g., a username), partner specific data, and other data.
- the user device 102 may transmit the query wrapper to the search system 100 , which may use the search query, the indications, and/or the additional data included in the wrapper to generate the search results and provide the results to the device 102 .
- the user device(s) 102 may be any computing devices capable of providing search queries and indications of the proximate device(s) 104 , their types, and/or their states to the search system 100 and receiving search results from the system 100 .
- the user device(s) 102 may include any of smartphones, and tablet, laptop, or desktop computers.
- the user device(s) 102 may also include any computing devices having other form factors, e.g., computing devices included in vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances).
- the user device(s) 102 may use a variety of different operating systems or platforms (e.g., OS 200 , as shown in FIG. 2 ).
- a user device 102 may operate using an OS such as ANDROID® by Google Inc., IOS® by Apple Inc., or WINDOWS PHONE® by Microsoft Corporation.
- the device 102 may use an OS such as MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple Inc., or LINUX® (LINUX is the registered trademark of Linus Torvalds in the U.S. and other countries).
- the user device(s) 102 may also interact with the search system 100 using operating systems other than those described herein, whether presently available or developed in the future.
- the user device(s) 102 may communicate with the search system 100 via the network 106 .
- the user device(s) 102 may communicate with the search system 100 using any app that can transmit search queries and indications of the proximate device(s) 104 , their types, and/or their states, to the system 100 and receive search results from the system 100 .
- the user device(s) 102 may include an app that is dedicated to interfacing with the search system 100 , such as an app dedicated to search.
- the user device(s) 102 may communicate with the search system 100 using a more general app, such as a web browser app.
- An app included on a user device 102 to communicate with the search system 100 may include a GUI with a search field, or “box,” into which users may enter search queries, e.g., using a touchscreen, physical keyboard, a speech-to-text program, or other form of user input available on the device 102 .
- the app may also be configured to identify (e.g., via a proximate device identification module) one or more of the proximate device(s) 104 that are located proximate to the user device 102 and transmit one or more indications of the identified devices 104 , their types, and/or their states to the search system 100 .
- the user device 102 may use a GUI of a search app, or a more general app, included on the device 102 to display search results to the user.
- the user device 102 may also use the GUI to receive search queries from the user and transmit the queries and indications of the proximate device(s) 104 , their types, and/or their states to the search system 100 .
- the GUI may display the search results to the user in a variety of different ways, depending on the information transmitted to the user device 102 from the search system 100 .
- the search system 100 may transmit the search results (e.g., record content) to the user device 102 with result scores, link data, and/or other information used to generate and display (e.g., rank) one or more user selectable links for the results.
- the GUI may display the search results to the user as a list of the user selectable links, including text and/or image data.
- the text and/or images data may indicate the record content specified by (e.g., included in) the search results.
- the GUI may display the search results as the list of the user selectable links arranged under a search field into which the user has entered a search query.
- the GUI may arrange the user selectable links by result scores associated with the links, i.e., with the record content for which the links are generated, or using other logic.
- the GUI may also group the user selectable links by various headers.
- the data source(s) 104 may be sources of data that the search system 100 may use to generate and/or update the search data store 112 .
- the search system 100 may use the data source(s) 104 to generate and/or update one or more databases, indices, tables, files, or other data structures included in the search data store 112 .
- the search system 100 may generate new records and update existing records based on data retrieved from the data source(s) 104 .
- the search system 100 may include modules that generate new records and/or update existing records based on the data retrieved from the data source(s) 104 .
- some or all of the data included in the search data store 112 (e.g., one or more records) may be manually generated by a human operator.
- the data source(s) 104 may include a variety of different data providers.
- the data source(s) 104 may include data from app developers, such as app developer websites and data feeds provided by app developers.
- the data source(s) 104 may also include operators of digital distribution platforms configured to distribute apps to user devices 102 .
- the data source(s) 104 may further include other websites, such as websites that include web logs (i.e., blogs), app reviews, or other data related to apps.
- the data source(s) 104 may include social networking sites, such as “FACEBOOK®” by Facebook Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets).
- the data source(s) 104 may also include online databases and websites that include data related to movies, television programs, music, and restaurants.
- the data source(s) 104 may further include other types of data sources, which may have various types of content and update rates.
- the search system 100 may retrieve data from the data source(s) 104 , including any type of data related to web links, documents, media files, apps, and states of apps. The search system 100 may then generate one or more records based on the data and store the records in the search data store 112 . In other examples, some or all of the data included in the records (e.g., record information) may be manually generated by a human operator. In some examples, the data included in the records may be updated over time so that the search system 100 may provide up-to-date search results in response to search queries and indications of the proximate device(s) 104 , their types, and/or their states received from the user device(s) 102 .
- the data included in the records may be updated over time so that the search system 100 may provide up-to-date search results in response to search queries and indications of the proximate device(s) 104 , their types, and/or their states received from the user device(s) 102 .
- FIG. 2 illustrates an example of one of the user device(s) 102 in communication with one or more of the proximate device(s) 104 and the search system 100 .
- FIG. 2 depicts example interactions and data exchanged among the user device 102 , proximate devices 104 , and search system 100 .
- the user device 102 may initially receive a search query 116 from a user of the device 102 .
- the user may have entered the search query 116 into a search field 117 of a GUI 115 of a search app 204 included on the user device 102 .
- the user device 102 may further identify one or more of the proximate device(s) 104 .
- the user device 102 may identify the proximate device(s) 104 prior to, during (e.g., in response to), or following the user entering the search query 130 as described herein.
- the user device 102 may identify the proximate devices 104 using a proximate device identification module 208 included on the device 102 .
- the proximate device identification module 208 may be configured to identify one or more of the proximate device(s) 104 that are located proximate to (e.g., nearby) the user device 102 .
- the proximate device identification module 208 may include a device determination module 210 configured to determine a model name, a model number, and/or a device ID of each of one or more of the identified proximate devices 104 .
- the user device 102 may further determine one or more types of the identified proximate devices 104 (e.g., via one or more type IDs associated with the types).
- the proximate device identification module 208 may include a device type determination module 212 configured to determine the types of the identified proximate devices 104 .
- the user device 102 may determine one or more states of the identified proximate devices 104 (e.g., via one or more state IDs).
- the proximate device identification module 208 may include a device state determination module 214 configured to determine the states.
- the user device 102 may transmit a query wrapper to the search system 100 .
- the query wrapper may include the search query 116 and one or more indications of the identified proximate devices 104 , their types, and/or their states 118 (e.g., the one or more device IDs, type IDs, and/or state IDs).
- the query wrapper may also include geo-location data, platform data, and/or other information (e.g., an IP address) associated with the user, the user device 102 , the query 116 , and/or the identified proximate devices 104 .
- the user may have caused the user device 102 (e.g., the search app 204 ) to submit the query wrapper including the search query 116 and the indications 118 to the search system 100 by selecting a search button 119 also included in the GUI 115 of the search app 204 .
- the user device 102 e.g., the search app 204
- the search system 100 may generate one or more search results 120 based on the search query 116 and the indications 118 included in the wrapper. As described herein, to generate the search results 120 , the search system 100 may identify one or more records included in the search data store 112 using the search query 116 and, e.g., the indications 118 . As also described herein, the search system 100 may further generate results scores for the identified records, e.g., based on the indications 118 . The search system 100 may then transmit the search results 120 to the user device 102 . As shown in FIG.
- the search results 120 may include or reference one or more web pages (e.g., web links), documents (e.g., text), media (e.g., image, audio, and/or video) files, AMs (e.g., AAMs, WAMs, and/or ADAs specifying native or web-based apps and/or states of the apps), result scores, link data, and/or other information included in the identified records.
- web pages e.g., web links
- documents e.g., text
- media e.g., image, audio, and/or video
- AMs e.g., AAMs, WAMs, and/or ADAs specifying native or web-based apps and/or states of the apps
- result scores e.g., link data, and/or other information included in the identified records.
- the user device 102 may display the results 120 as one or more user selectable links. For example, the user device 102 may generate the user selectable links such that each link is associated with (e.g., includes) a portion of the information included in the search results 120 . The user device 102 may generate the user selectable links using the link data also included in the search results 120 .
- the link data may include any of text and image data describing the information included in the search results 120 . In this manner, the link data included in (e.g., used to generate) each user selectable link may describe the portion of the information included in the search results 120 associated with the link.
- the user device 102 may further arrange (e.g., order, or rank) the user selectable links to display the links to the user based on the result scores also included in the search results 120 . For example, the user device 102 may assign each user selectable link the result score associated with the record from which the information included in the link was selected. The user device 102 may then order the user selectable links based on the result scores (e.g., display higher-ranking links higher in a list of user selectable links).
- Example search results 120 displayed to a user of a user device 102 as user selectable links are described with reference to FIGS. 7A-7B .
- FIG. 3A illustrates an example search system 100 .
- the search system 100 of FIG. 3A includes the search module 100 , search data store 112 , and result generation module 114 .
- the search module 110 identifies records 400 included in the search data store 112 based on search queries 116 and based on indications of proximate devices 104 , their types, and/or their states 118 received from the user device(s) 102 . Initially, the search module 110 may optionally analyze a search query 116 received from a user device 102 .
- the search module 110 may then identify one or more records 400 included in the search data store 112 based on the (e.g., analyzed) search query 116 and based on an indication of a proximate device 104 , its type, and/or its state (e.g., represented using a device ID, a type ID, and/or a state ID) also received from the user device 102 .
- the search module 110 may identify the records 400 based on (e.g., text) matches between terms of the search query 116 and terms of information (e.g., record information and/or record IDs) included in the identified records 400 .
- the search module 110 may further identify the records 400 based on matches between (e.g., terms of) the indication 118 (e.g., the device ID, type ID, and/or state ID) and the information included in the identified records 400 .
- the search module 110 may then process (e.g., generate result scores for) the identified records 400 .
- the search module 110 may generate result scores for the records 400 based on how well the records 400 match the search query 116 and, e.g., the indication 118 (e.g., terms of the indication 118 , such as the device ID, type ID, and/or state ID).
- the search module 110 may further select one or more of the identified records 400 that best match the search query 116 and the indication 118 (e.g., select one or more records 400 having the highest result scores).
- the search module 110 may transmit record IDs 122 associated with (e.g., included in) the selected records 400 to the result generation module 114 .
- the result generation module 114 may identify the records 400 selected by the search module 110 in the search data store 112 using the received record IDs 122 and select record content (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or other information) from the identified records 400 .
- the result generation module 114 may then transmit the selected record content to the user device 102 as one or more search results 120 .
- FIG. 3B illustrates an example of the search module 110 described with reference to FIG. 3A .
- the search module 110 of FIG. 3B includes a query analysis module 300 , a consideration set generation module (hereinafter, “set generation module”) 302 , and a consideration set processing module (hereinafter, “set processing module”) 304 .
- the query analysis module 300 may receive a search query 116 (e.g., as part of a query wrapper) from a user device 102 and analyze the query 116 .
- the query analysis module 300 may perform any of tokenization, filtering, stemming, synonymization, and stop word removal with respect to the query 116 .
- the set generation module 302 may identify one or more records 400 included in the search data store 112 based on the search query 116 and based on one or more indications of one or more of the proximate device(s) 104 , their types, and/or their states 118 (e.g., one or more device IDs, type IDs, and/or state IDs) also received from the user device 102 .
- the set generation module 302 may identify a given record 400 based on whether a particular proximate device 104 (e.g., having a specific model name, model number, and/or device ID) is located proximate to the user device 102 , as specified by the indications 118 . In other examples, the set generation module 302 may identify the record 400 based on whether a particular proximate device type (e.g., having a specific type ID) is located proximate to the user device 102 , as specified by the indications 118 .
- a particular proximate device type e.g., having a specific type ID
- the set generation module 302 may identify the record 400 based on whether a specific proximate device, or a general device type, having a particular state (e.g., having a given state ID) is located proximate to the user device 102 , as specified by the indications 118 .
- the identified records 400 may be referred to herein as a “consideration set.”
- the set generation module 302 may identify the records 400 of the consideration set based on one or more (e.g., text) matches between one or more terms of the search query 116 and one or more terms of information (e.g., record information and/or record IDs) included in the identified records 400 .
- the set generation module 302 may identify the records 400 based on matches between tokens generated by the query analysis module 300 and words included in the records 400 (e.g., in record information and/or record IDs of the records 400 ). In some examples, the set generation module 302 may further identify the records 400 of the consideration set based on one or more (e.g., text) matches between the indications of the proximate devices 104 , their types, and/or their states 118 (e.g., between the device IDs, type IDs, and/or state IDs included in, or referenced by the indications 118 ) and the information included in the records 400 (e.g., the record information and/or record IDs).
- one or more e.g., text
- the set generation module 302 may identify one or more records 400 included in the search data store 112 that specify any aspect of the indications of the proximate devices 104 , their types, and/or their states 118 (e.g., that include any of the associated device IDs, type IDs, and/or state IDs).
- the set generation module 302 may identify the records 400 using the search query 116 and, e.g., the indications 118 , as inputs to Lucene® information retrieval software developed by the Apache Software Foundation (hereinafter, “Lucene”).
- the record information included in the records 400 may be indexed using inverted indexing techniques, which may allow mapping one or more terms of the search query 116 and (e.g., one or more terms of) the indications 118 (e.g., device IDs, type IDs, and/or state IDs) to the record information included in the records 400 .
- inverted indexing techniques may allow mapping one or more terms of the search query 116 and (e.g., one or more terms of) the indications 118 (e.g., device IDs, type IDs, and/or state IDs) to the record information included in the records 400 .
- the set processing module 304 processes (e.g., generates result scores for, or “scores”) the records 400 included in the consideration set and transmits one or more record IDs 122 associated with (e.g. included in) the processed records 400 to the result generation module 114 .
- the set processing module 304 scores the records 400 by generating a result score for each record 400 .
- the result scores may be transmitted to the result generation module 114 along with the record IDs 122 for the records 400 of the consideration set.
- the set processing module 304 may generate the result scores for the records 400 in a variety of different ways.
- the set processing module 304 generates a result score for a record 400 based on one or more scoring features.
- the scoring features may be associated with the record 400 , the search query 116 , and/or one or more indications of the proximate device(s) 104 , their types, and/or their states that resulted in identification of the record 400 by the set generation module 302 .
- a scoring feature for the record 400 (e.g., a “record scoring feature”) may be based on any data associated with the record 400 , e.g., data included in the record information of the record 400 .
- Example record scoring features for the record 400 include popularity and/or ratings (e.g., user ratings) of a web page, document, media file, app, or state of an app specified by the record 400 .
- Other example record scoring features include measurements associated with the record 400 , such as how often the record 400 is retrieved during a search and how often user selectable links for record content included in the record 400 are selected by a user. Still other record scoring features include whether the record 400 specifies a web page, a document, a media file, an app, a state of an app, or any other data that is specific to the record 400 .
- a scoring feature for the search query 116 (e.g., a “query scoring feature”) may include any data associated with the query 116 .
- Example query scoring features for the search query 116 include a number of words in the query 116 , popularity of the query 116 , and an expected frequency of the words in search query 116 .
- a scoring feature for the record 400 and the search query 116 may include any data that may be generated based on information associated with both the record 400 and the query 116 .
- Example record-query scoring features for the record 400 and the search query 116 include parameters that indicate how well terms of the query 116 match terms of the record information and/or the record ID of the record 400 .
- the set processing module 304 may generate a result score for a record 400 based on one or more indications of one or more of the proximate device(s) 104 , their types, and/or their states 118 received from one of the user device(s) 102 .
- a “proximate device” scoring feature may include any aspects of the indications 118 .
- a proximate device scoring feature may include one or more model names, model numbers, and/or device IDs specified by the indications 118 .
- the set processing module 304 may generate the result score for the record 400 based on whether a particular proximate device 104 (e.g., having a specific model name, model number, and/or device ID) is located proximate to the user device 102 , as specified by the indications 118 .
- a proximate device scoring feature may include one or more type IDs specified by the indications 118 .
- the set processing module 304 may generate the result score for the record 400 based on whether a particular proximate device type (e.g., having a specific type ID) is located proximate to the user device 102 , as specified by the indications 118 .
- a proximate device scoring feature may include one or more state IDs specified by the indications 118 .
- the set processing module 304 may generate the result score for the record 400 based on whether a specific proximate device, or a general device type, having a particular state (e.g., having a given state ID) is located proximate to the user device 102 , as specified by the indications 118 .
- a scoring feature for the record 400 and the indications 118 (e.g., a “record-proximate device” scoring feature) may include any data generated based on information associated with both the record 400 and the indications 118 .
- Example record-proximate device scoring features include parameters that indicate how well (e.g., terms of) the indications 118 (e.g., the device IDs, type IDs, and/or state IDs) match terms of the record information and/or the record ID included in the record 400 .
- the set processing module 304 may generate the result score for the record 400 based on any combination of one or more record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and record-proximate device scoring features.
- the set processing module 304 may generate the result scores for the records 400 included in the consideration set based on one or more of the scoring features described herein and/or any additional scoring features.
- the set processing module 304 may include one or more machine-learned models (e.g., a supervised learning model), such as a machine-learned relevance (MLR) model (e.g., including regression) configured to receive one or more scoring features.
- MLR machine-learned relevance
- the machine-learned models may be further configured to generate the result scores for the records 400 based on one or more of the record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and record-proximate device scoring features described herein.
- the set processing module 304 may pair the search query 116 with each record 400 of the consideration set and compute a vector of features for each (query, record) pair.
- the set processing module 304 may further pair the search query 116 and each record 400 with the indications of the proximate devices 104 , their types, and/or their states 118 , and compute a vector of features for each (query, proximate device/type/state, record) pair.
- the vector of features may include one or more record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and/or record-proximate device scoring features.
- the set processing module 304 may then input the vector of features into a machine-learned (e.g., MLR) model to calculate a result score for the corresponding record 400 .
- the machine-learned model may include a set of decision trees (e.g., gradient boosted decision trees), or a logistic probability formula.
- the machine-learned task described herein may be framed as a semi-supervised learning task, where a minority of training data used to create the machine-learned model is labeled with human curated result scores, and the rest of the training data is used without human curated result score labels.
- the set processing module 304 may further select one or more of the records 400 included in the consideration set based on the result scores associated with the records 400 . For example, the set processing module 304 may select one or more records 400 having the highest one or more result scores from the consideration set. The set processing module 304 may then transmit one or more record IDs 122 associated with (e.g., included in) the selected records 400 to the result generation module 114 .
- the result generation module 114 may receive the record IDs 122 and, e.g., the result scores, from the set processing module 304 and identify the (e.g., selected) records 400 of the consideration set in the search data store 112 using the IDs 122 .
- the result generation module 114 may then select record content (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or additional information) from the (e.g., selected) records 400 and transmit the selected content to the user device 102 as search results 120 , e.g., with the corresponding result scores.
- the user device 102 may use the result scores associated with the record content (i.e., the search results 120 ) in a variety of different ways.
- the user device 102 may use the result scores to rank the record content (e.g., one or more user selectable links generated using the content) within a list for display to a user of the device 102 .
- a larger result score may indicate that the corresponding portion of the record content (e.g., a given web link, document, media file, app, or state of an app) is more relevant to the search query 116 and, e.g., the indications of the proximate devices 104 , their types, and/or their states 118 than another portion of the content having a smaller result score.
- links for portions of the content associated with larger result scores may be displayed higher within the list (e.g., near the top of a screen) than links for portions of the content associated with smaller results scores.
- links for portions of the record content having smaller result scores may be located farther down the list (e.g., off screen) and may be accessed by scrolling down a screen of the user device 102 .
- the result scores associated with the record content transmitted by the result generation module 114 to the user device 102 may indicate the relevance of the content (e.g., web links, documents, media files, apps, and/or states of apps) to the search query 116 and, e.g., the proximate devices 104 , their types, and/or states, depending on which parameters the set processing module 304 uses to generate the result scores.
- the content e.g., web links, documents, media files, apps, and/or states of apps
- FIGS. 4A-4B illustrate example records that may be included in the search data store 112 .
- FIG. 4A illustrates a general example of a record 400 A that may be included in the search data store 112 .
- the record 400 A of FIG. 4A may include or reference various different data associated with web pages, documents, media files, native or web-based apps, states of native or web-based apps, and/or other information.
- the record 400 A may include a record ID 402 A that identifies the record 400 A among other records included in the search data store 112 .
- the record 400 A may include record information 404 A, such as a description of the data included in or referenced by the record 400 A (e.g., a description of a web page, document, media file, an app, or a state of an app).
- the search system 100 may identify the record 400 A in the search data store 112 using (e.g., based on text matches between) a search query 116 and the record information 404 A.
- the record 400 A may include record content 406 A that includes or references the data described by the record information 404 A. For example, as shown in FIG.
- the record content 406 A may include one or more web links (e.g., to web pages), documents (e.g., text), files (e.g., media files, such as image, audio, video, and/or other files), AAMs, WAMs, ADAs, and/or additional data.
- the search system 100 may select the record content 406 A from the record 400 A and use the content 406 A to generate search results 120 that are responsive to the query 116 .
- FIG. 4B illustrates a specific example of a record 400 B that may be included in the search data store 112 .
- the record 400 B of FIG. 4B specifies a state of the native app “HP® All-in-One Printer Remote” that enables users to print documents and images using a networked printer (e.g., the HP® Envy 4502 printer).
- the record 400 B includes a record ID “HP ALL-IN-ONE PRINTER REMOTE—PRINT DOCUMENTS/IMAGES” 402 B that identifies the record 400 B among other records included in the search data store 112 .
- the record ID 402 B may be represented using one or more characters and/or numbers (e.g., an alphanumeric string, or an index), or machine-readable (e.g., binary) data.
- the record 400 B includes record information 404 B, including a description of the state specified by the record 400 B and user reviews of the state.
- the record 400 B includes record content 406 B, including one or more AAMs that enable a user device 102 to access the state specified by the record 400 B, one or more WAMs that enable the device 102 to access a web equivalent of (e.g., a web page corresponding to) the state, and one or more ADAs that enable the device 102 to download the native app associated with the state (i.e., “HP® All-in-One Printer Remote”).
- the record content 406 B also includes link (e.g., text and/or image) data that enables the user device 102 to generate one or more user selectable links associated with the record content 406 B.
- FIG. 5A is a flow diagram that illustrates an example method 500 A for generating search results 120 based on a search query 116 and one or more of the proximate device(s) 104 using the search system 100 .
- the search system 100 e.g., the search module 110
- the search system 100 e.g., the query analysis module 300
- may optionally perform an analysis of the search query 116 e.g., perform any of tokenization, filtering, stemming, synonymization, and stop word removal with respect to the query 116 ).
- the search system 100 may also receive an indication of one of the proximate device(s) 104 , its type, and/or its state 118 (e.g., a device ID, a type ID, and/or a state ID) from the user device 102 .
- the user device 102 may have identified the proximate device 104 as being located proximate to the user device 102 using a local wireless network.
- the identified proximate device 104 may be configured to communicate via the local wireless network.
- the user device 102 may have received an indication of the proximate device 104 from the proximate device 104 via the local wireless network.
- the search system 100 e.g., the set generation module 302
- each record may include record content 406 including any of a web link, a document, a media file, an AAM, a WAM, an ADA, and/or other information.
- the search system 100 may identify the records 400 of the consideration set based on one or more (e.g., text) matches between one or more terms of the search query 116 and one or more terms of the information (e.g., the record information 404 ) included in the identified records 400 .
- the search system 100 may further identify the records 400 based on one or more (e.g., text) matches between the indication 118 (e.g., the device ID, type ID, and/or state ID) and one or more terms of the information (e.g., the record information 404 ) included in the identified records 400 .
- the search system 100 may optionally generate one or more result scores for the records 400 included in the consideration set (e.g., generate a result score for each record 400 ).
- the search system 100 may optionally select one or more records 400 from the consideration set based on the one or more result scores associated with the selected records 400 (e.g., select one or more highest-scoring records).
- the search system 100 may select the record content 406 (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or other information) from the (e.g., selected) records 400 of the consideration set.
- the search system 100 e.g., the result generation module 114
- the search system 100 e.g., the result generation module 114
- FIG. 5B is a flow diagram that illustrates another example method 500 B for generating search results 120 based on a search query 116 and one or more of the proximate device(s) 104 using the search system 100 .
- Blocks 502 B- 504 B, 508 B, and 512 B- 518 B of the method 500 B are analogous to blocks 502 A- 506 A and 512 A- 518 A of the method 500 A.
- the search system 100 e.g., the set generation module 302
- the search system 100 may generate one or more result scores for the records 400 included in the consideration set based on the indication 118 (e.g., generate a result score for each record 400 ).
- the search system 100 may generate the result scores for the records 400 based on how well various aspects of the indication 118 (e.g., the device ID, type ID, and/or state ID) match one or more terms of the information (e.g., the record information 404 ) included in the identified records 400 , e.g., using an MLR model.
- the search system 100 may select one or more records 400 from the consideration set based on the one or more result scores associated with the selected records 400 , in a similar manner as described with reference to the method 500 A.
- the search system 100 e.g., the result generation module 114
- FIG. 6 is a flow diagram that illustrates an example method 600 for generating search results 120 based on a search query 116 and one or more of the proximate device(s) 104 using one of the user device(s) 102 .
- the user device 102 e.g., the search app 204
- the user device 102 e.g., the search app 204
- the user device 102 may identify one of the proximate device(s) 104 that is located proximate to (e.g., nearby) the device 102 using a local wireless network (e.g., Wi-Fi, Bluetooth, or NFC).
- a local wireless network e.g., Wi-Fi, Bluetooth, or NFC.
- the identified proximate device 104 may be configured to communicate via the local wireless network.
- the user device 102 may receive an indication (e.g., a device ID) of the proximate device 104 from the proximate device 104 via the local wireless network.
- the user device 102 may identify the proximate device 104 using the proximate device identification module 208 included on the device 102 (e.g., as part of the search app 204 ). Specifically, as one example, the user device 102 may determine a model name, a model number, and/or a device ID of the identified proximate device 104 using the device determination module 210 included in the proximate device identification module 208 . As another example, the user device 102 may determine a type (e.g., a type ID) of the identified proximate device 104 using the device type determination module 212 also included in the proximate device identification module 208 . As still another example, the user device 102 may determine a state (e.g., a state ID) of the identified proximate device 104 using the device state determination module 214 also included in the proximate device identification module 208 .
- a model name e.g., a model number
- a device ID e.g.
- the user device 102 may transmit an indication of the identified proximate device 104 , its category (e.g., type), and/or its state 118 to the search system 100 (e.g., as a device ID, a type ID, and/or a state ID).
- the search system 100 may receive the search query 116 and the indication 118 from the user device 102 , generate one or more search results 120 based on the query 116 and indication 116 , and transmit the results 120 to the device 102 .
- the user device 102 may receive the search results 120 from the search system 100 in response to transmitting the search query 116 and the indication 118 .
- the user device 102 e.g., the search app 204
- the search results 120 may include any of web pages, documents, media files, AAMs, WAMs, ADAs, and/or other information.
- the user device 102 may detect a user selection of one of the user selectable links, and, as shown in block 616 , in response to detecting the user selection, access the content associated with the selected link.
- FIGS. 7A-7B illustrate example GUIs that may be generated on one of the user device(s) 102 according to the present disclosure.
- FIG. 7A depicts an example GUI 115 of a search app 204 executing on the user device 102 .
- a user of the user device 102 has entered a search query “print” 116 into a search field 117 (e.g., a “search box,” or a “search bar”) of the GUI 115 .
- the user has then selected (e.g., touched, or clicked on) a search button 119 of the GUI 115 to cause the search app 204 (e.g., the user device 102 ) to transmit a query wrapper that includes the search query 116 to the search system 100 .
- the user may have caused the search app 204 to transmit the query wrapper to the search system 100 using other techniques (e.g., by touching or clicking another button or GUI element, or via voice command).
- the user device 102 e.g., the search app 204
- has also identified one of the proximate device(s) 104 namely a networked printer 104 , that is located proximate to (e.g., nearby) the user device 102 using a local wireless network (e.g., Wi-Fi, Bluetooth, or NFC).
- a local wireless network e.g., Wi-Fi, Bluetooth, or NFC.
- the identified proximate device 104 may be configured to communicate via the local wireless network.
- the user device 102 may receive an indication (e.g., a device ID) of the proximate device 104 from the proximate device 104 via the local wireless network.
- the user device 102 e.g., the search app 204
- the user device 102 may have transmitted the indication 118 to the search system 100 with the search query 116 (e.g., as part of the query wrapper), or separately from the query 116 (e.g., prior to or after transmitting the query 116 to the system 100 ).
- the search system 100 has received the search query 116 and the indication of the networked printer 104 , its type, and/or its state 118 from the user device 102 and generated one or more search results 120 including, e.g., one or more web pages, documents, media files, AAMs, WAMs, ADAs, and/or other information based on the query 116 and the indication 118 .
- the search system 100 has then transmitted the search results 120 to the user device 102 .
- the search system 100 has generated the search results 120 using the search query 116 and the indication 118 such that the results 120 are both responsive to (e.g., match) the query 116 and directly applicable to the networked printer 104 . As shown in FIG.
- the user device 102 has received the search results 120 from the search system 100 and has displayed the results 120 to the user as one or more user selectable links.
- the user selectable links are configured to, upon being selected by the user, direct the user device 102 to the web pages, documents, media files, AAMs, WAMs, ADAs and/or other information specified by the results 120 .
- FIG. 7B the user device 102 has received the search results 120 from the search system 100 and has displayed the results 120 to the user as one or more user selectable links.
- the user selectable links are configured to, upon being selected by the user, direct the user device 102 to the web pages, documents, media files, AAMs, WAMs, ADAs and/or other information specified by the results 120 .
- the user selectable links (e.g., the corresponding search results 120 ) specify a video user review 600 - 1 of the networked printer 104 in a web-based or native version of YouTube®, a downloadable (e.g., PDF) user's manual 600 - 2 associated with the printer 104 , a downloadable native app “HP® Smart Print” 600 - 3 associated with the printer 104 , and a state of the app 600 - 4 that enables the user to print a document or an image using the app and the printer 104 (e.g., by selecting a GUI element 600 - 5 ).
- a downloadable (e.g., PDF) user's manual 600 - 2 associated with the printer 104 e.g., a downloadable native app “HP® Smart Print” 600 - 3 associated with the printer 104
- a state of the app 600 - 4 that enables the user to print a document or an image using the app and the printer 104 (e.g., by selecting a GUI element 600
- the user device 102 may identify the proximate device(s) 104 using any optical communication protocols, interfaces, and technologies, such as wireless infrared communications (e.g., IrDA) and laser-based communications (e.g., using a barcode scanner included in the user device 102 and barcodes present on the proximate device(s) 104 ).
- wireless infrared communications e.g., IrDA
- laser-based communications e.g., using a barcode scanner included in the user device 102 and barcodes present on the proximate device(s) 104 .
- the user device 102 may identify the proximate device(s) 104 using a current location of the device 102 (e.g., GPS coordinates associated with the device 102 ) and a database (e.g., a data store) including an indication of one or more proximate devices 104 and their corresponding geographic locations (e.g., GPS coordinates associated with the devices 104 ).
- a current location of the device 102 e.g., GPS coordinates associated with the device 102
- a database e.g., a data store
- the modules and data stores included in the search system 100 represent features or functionality that may be included in the system 100 as it is described in the present disclosure.
- the search module 110 , search data store 112 , result generation module 114 , and the components thereof may represent features included in the search system 100 .
- the modules and data stores described herein may be embodied by electronic hardware, software, and/or firmware. Depiction of different features or functionality as separate modules or data stores does not necessarily imply whether the modules or data stores are embodied by common or separate electronic hardware, software, and/or firmware. In some implementations, the features or functionality associated with one or more of the modules and data stores depicted herein may be realized by common or separate electronic hardware, software, and/or firmware components.
- the modules and data stores may be embodied by electronic hardware, software, and/or firmware components including one or more processing units, memory components, input/output (I/O) components, and interconnect components.
- the interconnect components may be configured to provide communication between the processing units, memory components, and I/O components.
- the interconnect components may include one or more buses configured to transfer data between electronic components.
- the interconnect components may also include one or more control circuits (e.g., a memory controller and/or an I/O controller) configured to control communication between electronic components.
- the processing units may include one or more central processing units (CPUs), graphics processing units (GPUs), digital signal processing units (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other processing units.
- CPUs central processing units
- GPUs graphics processing units
- DSPs digital signal processing units
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- the processing units may be configured to communicate with the memory components and I/O components.
- the processing units may be configured to communicate with the memory components and I/O components via the interconnect components.
- a memory component, or memory, as described herein may include any volatile or non-volatile media.
- a memory component may include electrical media, magnetic media, and/or optical media, such as random access memory (RAM), non-volatile RAM (NVRAM), read-only memory (ROM), electrically-erasable programmable ROM (EEPROM), Flash memory, solid state drives (SSDs), hard disk drives (HDDs), magnetic tape drives, optical storage technology (e.g., compact disc, digital versatile disc, and/or Blu-ray disc), or any other equivalent or analogous memory components, systems, or devices.
- the memory components may include (e.g., store) the various types of data described herein.
- the memory components may store data included in one or more of the records of the search data store 112 .
- the memory components may also include one or more instructions that may be executed by the processing units.
- the memory components may include one or more computer-readable instructions that, when executed by the processing units, cause the units to perform the various functions attributed to the modules and data stores described herein.
- the I/O components may refer to electronic hardware, software, and/or firmware that provide communication with a variety of different devices.
- the I/O components may provide communication between other devices and the processing units and memory components.
- the I/O components may be configured to communicate with a computer network, such as the network 106 .
- the I/O components may be configured to exchange data over a computer network using any of a variety of different physical connections, wireless connections, and protocols.
- the I/O components may include one or more network interface components (e.g., a network interface controller), repeaters, network bridges, network switches, routers, and firewalls.
- the I/O components may include hardware, software, and/or firmware configured to communicate with various human interface devices, including display screens, keyboards, pointer devices (e.g., a mouse), touchscreens, speakers, and microphones.
- the I/O components may provide communication with additional devices, such as external memory (e.g., external HDDs).
- the search system may be a system of one or more computing devices (e.g., a computer search system) configured to implement the techniques described herein.
- Each computing device may include any combination of the electronic hardware, software, and firmware components described herein.
- Each computing device may also include any combination of the processing units, memory components, I/O components, and interconnect components also described herein.
- the computing devices of the search system may also include various human interface devices, including 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 computing devices of the search system may be configured to communicate with the network 106 .
- the computing devices may also be configured to communicate with one another (e.g., within the search system) via a computer network.
- the computing devices may include one or more server computing devices configured to communicate with user devices, such as the user device(s) 102 (e.g., receive search queries 116 and indications of proximate device(s) 104 , their types, and/or their states 118 , and transmit search results 120 ).
- the server computing devices may also gather data from various data sources, such as the data source(s) 108 , index the data, and store the data, as well as gather, index, and/or store other documents or information.
- the server computing devices may also reside within a single machine or within multiple machines at a single geographic location, or may be distributed across a number of geographic locations.
- search system described herein (e.g., using one or more computing devices that include one or more processing units, memory components, I/O components, and interconnect components) are equally applicable to any of the user device(s) 102 , as well as to the various components thereof, as described herein.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Marketing (AREA)
- Game Theory and Decision Science (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This application claims the benefit of U.S. Provisional Application No. 62/170,044 filed Jun. 2, 2015, which is hereby incorporated by reference in its entirety.
- This disclosure generally relates to the field of search, and more particularly to techniques for generating and displaying search results on user devices.
- In recent years, the use of computers, tablets, smartphones, smart watches, and other stationary and mobile computing devices has grown significantly. Additionally, the presence of network connectivity among these and other devices has also increased. Today, many consumer and industrial computing devices and appliances are capable of being connected to local computer networks and even the Internet. Users often perform searches (e.g., Internet searches) for web-pages, documents, media files, and other content using a variety of different computing devices, including such networked and Internet-enabled devices.
- In one example, a method includes receiving a search query and an indication of a proximate device from a user device. In this example, the proximate device is located proximate to the user device and configured to communicate via a local wireless network. Also in this example, the user device receives the indication of the proximate device from the proximate device via the local wireless network. The method further includes identifying one or more records based on the search query and the indication. In this example, each record includes record content and record information that describes the content. The method also includes selecting the record content from the identified records and transmitting the selected content to the user device as search results.
- In another example, a method includes receiving a search query from a user device and identifying one or more records based on the query. In this example, each record includes record content and record information that describes the content. The method further includes receiving an indication of a proximate device from the user device. In this example, the proximate device is located proximate to the user device and configured to communicate via a local wireless network. Also in this example, the user device receives the indication of the proximate device from the proximate device via the local wireless network. The method still further includes generating a result score for each of the identified records based on the indication and selecting one or more of the identified records based on the one or more result scores. The method also includes selecting the record content from the selected records and transmitting the selected content to the user device as search results.
- In another example, a system includes one or more computing devices configured to receive a search query and an indication of a proximate device from a user device. In this example, the proximate device is located proximate to the user device and configured to communicate via a local wireless network. Also in this example, the user device receives the indication of the proximate device from the proximate device via the local wireless network. The computing devices are further configured to identify one or more records based on the search query and the indication. In this example, each record includes record content and record information that describes the content. The computing devices are also configured to select the record content from the identified records and transmit the selected content to the user device as search results.
- In another example, a system includes one or more computing devices configured to receive a search query from a user device and identify one or more records based on the query. In this example, each record includes record content and record information that describes the content. The computing devices are further configured to receive an indication of a proximate device from the user device. In this example, the proximate device is located proximate to the user device and configured to communicate via a local wireless network. Also in this example, the user device receives the indication of the proximate device from the proximate device via the local wireless network. The computing devices are still further configured to generate a result score for each of the identified records based on the indication and select one or more of the identified records based on the one or more result scores. The computing devices are also configured to select the record content from the selected records and transmit the selected content to the user device as search results.
- The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
-
FIG. 1 depicts an example environment that includes a search system and one or more user devices, proximate devices, and data sources that communicate via a network. -
FIG. 2 depicts an example user device in communication with one or more example proximate devices and an example search system. -
FIG. 3A is a functional block diagram of an example search system. -
FIG. 3B is a functional block diagram of an example search module. -
FIGS. 4A-4B depict example records included in an example search data store. -
FIGS. 5A-5B are flow diagrams that illustrate example methods for generating search results based on proximate devices using a search system. -
FIG. 6 is a flow diagram that illustrates an example method for generating search results based on proximate devices using a user device. -
FIGS. 7A-7B depict example graphical user interfaces (GUIs) that may be generated on a user device according to the present disclosure. - The figures and the following description relate to example implementations by way of illustration only. It should be noted that from the following discussion, alternative implementations of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the scope of this disclosure.
- The present disclosure generally relates to the field of search, and, more particularly, to techniques for generating and displaying search results on user devices. Using the techniques disclosed herein, in some examples, improve search query understanding and search result relevance. According to the disclosed techniques, a user device (e.g., a smart watch, smartphone, tablet computer, or laptop computer) may be located proximate to (e.g., nearby) one or more other devices (e.g., one or more consumer and/or industrial devices) that are capable of indicating their proximity to the user device. In other words, the proximate devices may be capable of indicating their presence near the user device to the device. For example, the proximate devices may include one or more network-connected (e.g., communicatively coupled via a computer network, or “networked”) computing devices and/or appliances. In some examples, the proximate devices may include any of networked desktop computers, printers, routers, smart televisions, gaming consoles, and wireless speakers. Additionally, or alternatively, the proximate devices may include any of networked home thermostats, light switches, refrigerators, microwaves, toasters, crock-pots, and other home and kitchen devices and appliances. In some examples, the proximate devices may be networked using any of Wi-Fi, Bluetooth, near-field communication (NFC), ZigBee, Z-Wave, radio frequency identification (RFID), and/or other short-range local wireless communication protocols, interfaces, and technologies. In these examples, the proximate devices may be further networked using any of Ethernet, USB, optical fiber, power line and/or other wired communication protocols, interfaces, and technologies. As a specific example, the proximate devices may include one or more devices commonly referred to as “Internet of Things” (IoT) devices that are connected to a local network and, e.g., the Internet, via a wired and/or wireless communications interface. In this disclosure, the user device may include any computing device that is capable of connecting to and interacting with one or more of the proximate devices via any of the local wireless communication protocols, interfaces, and technologies described herein. In some examples, the user device may also be capable of connecting to and interacting with other computing devices via any of the wired communication protocols, interfaces, and technologies described herein.
- According to the disclosed techniques, the proximate devices may be configured to indicate their proximity to the user device via a local wireless communication protocol, interface, or technology (e.g., any of the local wireless communication protocols, interfaces, and technologies described herein). Specifically, each proximate device may be configured to transmit an indication of the device to the user device via a short-range local wireless network (e.g., Wi-Fi, Bluetooth, or NFC). A local wireless network, as used herein, may refer to any communication protocol, interface, or technology that enables two or more computing devices to exchange data wirelessly over a relatively short distance (e.g., up to 10-100 meters). Using the local wireless network, a first computing device may transmit data wirelessly to a second, different computing device. In some examples, the second computing device may also transmit data wirelessly to the first computing device using the local wireless network. As a result, the proximate device transmitting the indication of the device to the user device via the short-range local wireless network may indicate that the proximate device is located proximate to (e.g., nearby) the user device. In some examples, the proximate device may transmit the indication to the user device as part of actively communicating with the user device (e.g., the proximate device may be communicatively coupled with the user device). In other examples, the proximate device may transmit the indication to the user device as part of (e.g., in response to) the user device scanning for, or “pinging” (e.g., querying to determine a connection with, or activity of) nearby devices using a local wireless network (e.g., Wi-Fi, or Bluetooth). In still other examples, the proximate device may transmit the indication as part of a transmission (e.g., a broadcast) intended for one or more computing devices other than the user device (e.g., as part of pairing the proximate device with, or transmitting data to, the computing devices). In these examples, the user device may receive the indication as a result of the transmission (e.g., by listening for and/or receiving the transmission). In other words, in some examples, the user device may not transmit any data to the identified proximate device as part of receiving the indication of the proximate device from the proximate device. In this manner, the user device may receive the indication as a result of various types of data transmission by the proximate device, including data transmission directly to the user device, and data transmission to one or more other computing devices. As described herein, the proximate device may transmit the indication to the user device over a local wireless network. In some examples, the proximate device may transmit the indication wirelessly using an intermediate device, such as a wireless router, a Wi-Fi adapter, or a Bluetooth adapter.
- In this disclosure, one or more such indications received by the user device from one or more proximate devices that are located proximate to the user device may be referred to as a “snapshot” of the proximate devices from the standpoint of the user device. According to the disclosed techniques, upon receiving the indications (e.g., the snapshot), the user device may identify the proximate devices as located proximate to the user device. As one example, the user device may identify each proximate device as being located proximate to the user device. As another example, the user device may identify a subset of the proximate devices as being located proximate to the user device. As a specific example, the user device may identify one or more of the proximate devices as being located the most proximate (e.g., closest) to the user device.
- Upon identifying the one or more proximate devices, the user device (e.g., using a search system) may generate one or more search results based on the devices and a search query specified by a user of the device. As described herein, the search results may include or reference a variety of different types of information and content. In particular, the user device (e.g., the search system) may generate the search results such that the results are relevant to both the search query and to one or more aspects of the identified proximate devices, their types (e.g., device categories), and/or their specific states at the time the devices were identified. Upon generating the search results, the user device may display the results to the user.
- In this manner, the techniques described herein may improve search query understanding and search result relevance. As one example, the identified proximate devices, their types, and/or their states may serve as useful contextual data related to the user and the user's behavior (e.g., the user's intent, or need) with respect to the search query. By performing searches for a variety of different types of information and content using the search query and the identified proximate devices, their types, and/or their states as search parameters, the techniques may improve understanding of the query. Additionally, by uncovering information (e.g., content) that is both responsive to (e.g., matches) the search query and relevant to the identified proximate devices, their types, and/or their states, the techniques may further enable generating search results that are more relevant to the user than those generated using the query alone.
-
FIG. 1 is a functional block diagram that illustrates an example environment including asearch system 100 and one ormore user devices 102,proximate devices 104, anddata sources 108 that communicate via anetwork 106. Thenetwork 106 through which the above-described systems and devices communicate may include any type of network, such as a local area network (LAN), a wide area network (WAN), and/or the Internet. As shown inFIG. 1 , thesearch system 100 includes asearch module 110, asearch data store 112, and aresult generation module 114, which are described in greater detail herein. - In the example of
FIG. 1 , thesearch system 100 receives a search query and one or more indications of one or more of the proximate device(s) 104, their types, and/or their states from one of the user device(s) 102. Thesearch system 100 then generates one or more search results in response to receiving the search query and the indications. Specifically, thesearch system 100 generates the search results based on the search query and the indications, as well as using information included in one or more records stored in thesearch data store 112. In this example, each record may include or reference a variety of different content (e.g., record content), such as web pages (e.g., web links), documents (e.g., text), media (e.g., image, audio, and/or video) files, software applications (apps), and/or states of software apps. Thesearch system 100 selects the record content from the records and transmits the content to theuser device 102 as the search results. Each record may also include other information (e.g., record information, such as text, and/or record identifiers (IDs)) which thesearch system 100 may use to identify the records in thesearch data store 112. Thesearch system 100 transmits the search results, including the record content, to theuser device 102, which displays the results to a user of thedevice 102 as one or more user selectable links that include the content. - Specifically, to generate the search results, the
search module 110 may identify one or more records included in thesearch data store 112 based on the search query and, e.g., the indications of the one or more of the proximate device(s) 104, their types, and/or their states. Initially, thesearch module 110 may analyze the search query. Thesearch module 110 may then identify one or more records included in thesearch data store 112 based on the (e.g., analyzed) search query and, e.g., the indications. For example, thesearch module 110 may identify the records based on (e.g., text) matches between terms of the search query and terms of information included in the records. In some examples, thesearch module 110 may further identify the records based on (e.g., text) matches between the indications and information included in the records. Thesearch module 110 may then process (e.g., score) the identified records. For example, thesearch module 110 may determine how well the identified records match the search query and, e.g., various aspects of one or more of the proximate device(s) 104, as specified by the indications. Thesearch module 110 may then select one or more of the identified records that best match the search query and, e.g., various aspects of theproximate devices 104, and transmit indications (e.g., IDs) of the selected records to theresult generation module 114. - The
result generation module 114 may identify the records selected by thesearch module 110 in thesearch data store 112 using the received indications (e.g., IDs). Theresult generation module 114 may then select record content (e.g., web links, documents, media files, access mechanisms (AMs), such as app AMs (AAMs), web AMs (WAMs), and/or app download addresses (ADAs)) from the identified records. Theresult generation module 114 may transmit the selected record content to theuser device 102 as the search results. In some examples, theresult generation module 114 may transmit additional data with the record content to theuser device 102. For example, thesearch module 110 may generate result scores for the records from which the record content is selected (e.g., using values of metrics associated with the persons, places, or things described in the records, various features of the search query, and, e.g., various features of the proximate device(s) 104 as specified by the indications). As such, each record (e.g., the corresponding record content) may be associated with a result score that indicates a rank of the record (e.g., the content) relative to the other records (e.g., the corresponding record content of each record). In some examples, theresult generation module 114 may transmit the result score associated with each record to theuser device 102 with the record content of each record. Additionally, or alternatively, theresult generation module 114 may transmit link data associated with each record (e.g., with the corresponding record content) to theuser device 102. - Using the techniques described herein may, in some examples, enable generating search results that are relatively more relevant to the search query compared to search results generated using other techniques (e.g., based on the query alone). As a specific example, in response to receiving a search query “toast” from the user and upon identifying a proximate smart toaster 104 (e.g., a Bugatti Noun Toaster), the
user device 102 may transmit the query and an indication of the toaster 104 (e.g., its model name/number, or general type) to the search system 100 (e.g., as part of a query wrapper). In this example, theuser device 102 may receive from thesearch system 100 search results that are both responsive to the search query and relevant to thesmart toaster 104. Specifically, the search results may specify one or more web pages, documents, media files, apps, and/or states of apps that are related to bread toast or bread toasters, rather than, e.g., to raising a glass and making a speech (e.g., an alternative interpretation of the term “toast”). Theuser device 102 may display an indication of the web pages, documents, files, apps, and/or states to the user as one or more user selectable links that, when selected by the user, cause thedevice 102 to access the web pages, documents, or media files, download and install the apps, and/or launch apps and set the apps into the states. - Using the techniques may also enable generating search results that are directly applicable to those of the proximate device(s) 104 that are located proximate to the user device(s) 102. Specifically, the techniques may include using indications of the proximate device(s) 104, their types, and/or their states (e.g., specific model names/numbers or device IDs, type IDs, and/or state IDs) to generate search results that are both responsive to user-specified search queries and directly applicable to the device(s) 104. As one example, upon transmitting the search query and the indications of the proximate device(s) 104, their types, and/or their states to the
search system 100, as described herein, theuser device 102 may be configured to receive search results that specify one or more web resources or files associated with the device(s) 104, types, and/or states from thesystem 100. For example, the search results may include any of web pages (e.g., web links), documents (e.g., text), images, audio files, and/or video files that describe or relate to the proximate device(s) 104, types, and/or states. As a specific example, in response to receiving a search query “crock-pot” from a user and upon identifying a proximate smart crock-pot 104 (e.g., a Crock-Pot® Smart Slow Cooker with WeMo®), theuser device 102 may transmit the query and an indication of the crock-pot 104 to the search system 100 (e.g., as part of a query wrapper). In this example, theuser device 102 may receive from thesearch system 100 search results that are both responsive to the search query and directly applicable to the smart crock-pot 104. For example, the search results may specify one or more web pages, documents, and/or (e.g., media) files associated with the smart crock-pot 104 (e.g., user manuals, walkthrough video tutorials, etc.). Theuser device 102 may display an indication of the web pages, documents, and/or files to the user as one or more user selectable links that, when selected by the user, cause thedevice 102 to access these resources. - As another example, upon transmitting the search query and the indications to the
search system 100, theuser device 102 may be configured to receive search results that specify one or more native apps (e.g., app search results) associated with the proximate device(s) 104, types, and/or states from thesearch system 100. For example, the search results may include any of text and image data that describe the apps and ADAs that enable theuser device 102 to download and install the apps. In a specific example, in response to receiving a search query “print” from a user and upon identifying a proximate networked printer 104 (e.g., the HP® Envy 4502 printer), theuser device 102 may transmit the query and an indication of theprinter 104 to the search system 100 (e.g., in a query wrapper). In this example, theuser device 102 may receive from thesearch system 100 search results that are both responsive to the search query and specify one or more native apps that are directly applicable to thenetworked printer 104. For example, the search results may include one or more ADAs that each direct the user device 102 (e.g., in response to a user input) to a location (e.g., a digital distribution platform) from which thedevice 102 may download a native app associated with the networked printer 104 (e.g., the HP® All-in-One Printer Remote) that enables the user to print documents and/or images using theprinter 104. Theuser device 102 may display the ADAs (and, e.g., text and/or images included in the search results) to the user as one or more user selectable links that, when selected by the user, cause thedevice 102 to download and install the native app. Additionally, or alternatively, theuser device 102 may receive other types of search results (e.g., a device driver for the networked printer 104) that are both responsive to the search query and directly applicable to theprinter 104. - As still another example, upon transmitting the search query and the indications to the
search system 100, theuser device 102 may be configured to receive search results that specify one or more states of native apps (e.g., app state search results) associated with the proximate device(s) 104, types, and/or states from thesearch system 100. For example, the search results may include any of text and image (e.g., link) data and one or more AAMs, WAMs, and ADAs that describe the states and enable theuser device 102 to access the states (e.g., by first downloading and installing the corresponding app). In a specific example, in response to receiving a search query “unlock” from a user and upon identifying a proximate smart door lock 104 (e.g., an August® Smart Lock), theuser device 102 may transmit the query and an indication of thelock 104 to the search system 100 (e.g., in a query wrapper). In this example, theuser device 102 may receive from thesearch system 100 search results that are both responsive to the search query and specify one or more states of a native app that are directly applicable to thesmart door lock 104. For example, the search results may include one or more AAMs that each direct theuser device 102 to launch a native app associated with the smart door lock 104 (e.g., the August® Smart Lock App) and set the app into a state that unlocks thelock 104. Theuser device 102 may display the AAMs to the user as one or more user selectable links that, when selected by the user, cause thedevice 102 to launch the native app and set the app into the corresponding states. Upon being launched and set into any of the states, the native app may further (e.g., automatically, or via additional user input) cause thesmart door lock 104 to unlock. In some examples, the search results may also include one or more WAMs that, when selected by the user (e.g., as part of a user selectable link), direct theuser device 102 to a web equivalent (e.g., a web page) of one or more of the states (e.g., in cases where theuser device 102 does not have the native app installed). In other examples, the search results may also include one or more ADAs that direct the user device 102 (e.g., in response to a user input) to a location (e.g., a digital distribution platform) from which thedevice 102 may download the native app, e.g., prior to launching and setting it into any of the states previously described. - In some examples, the search results may specify web resources, files, apps, and/or states of apps that are directly applicable, complementary, or tangentially related to states of the proximate device(s) 104. As one example, the search results may specify states of apps for hot or cold food items or beverages depending on whether a (e.g., specific model, or a general type of) networked home thermostat located proximate to the
user device 102 indicates a particular indoor or outdoor temperature, temperature range, or ongoing mode of operation (e.g., cooling, or heating). In these examples, the states of theproximate devices 104, or of proximate device types, may be indicated using state IDs that include textual and/or numerical data that describes the states of the devices 104 (e.g., “75° F.,” “day's range: 45° F.-55° F.,” “cooling” or “heating”). Thesearch system 100 may identify state records 400 and/or rank the records 400 based on matches between the state IDs and information included in the records 400, as described herein. - In other examples, the search results may specify web resources, files, apps, and/or states of apps that are directly applicable, complementary, or tangentially related to other properties (e.g., so-called “external” factors) of the
user device 102 and/or the user that are derived based on the states of the proximate device(s) 104. For example, theuser device 102 and/or thesearch system 100 may be configured to learn a particular user behavior associated with the user (and, e.g., other users) as a function of one or more states of the proximate device(s) 104. As one example, theuser device 102 and/or thesearch system 100 may determine that, given a particular state of a specific proximate device 104 (e.g., a networked home thermostat in the process of heating or cooling), the user performing searches for states of apps corresponding to restaurants may select search results specifying some restaurants over others. Theuser device 102 and/or thesearch system 100 may generate a mapping between the state (e.g., a corresponding state ID including text and/or numbers) and the information (e.g., text) included in the state records 400 associated with the selected search results. Theuser device 102 and/or thesearch system 100 may then use this mapping as part of generating search results for subsequent searches. For example, thesearch system 100 may, given the same state of theproximate device 104 at a later point in time, identify and/or rank state records 400 based on matches between the information associated with the state by the mapping and information included in the records 400, in a similar manner as described herein. - In this disclosure, an app may refer to computer software that causes a computing device (e.g., one of the user device(s) 102) to perform a task. In some examples, an app may be referred to as a “program.” Example apps include word processing apps, spreadsheet apps, messaging apps, media streaming apps, social networking apps, and games. Apps can be executed on a variety of different computing devices, including mobile computing devices, such as smartphones, tablets, and wearable computing devices (e.g., smart headsets and/or smart watches). Apps can also be executed on other types of computing devices having other form factors, such as laptop computers, desktop computers, or other consumer electronic devices. In some examples, apps may be installed on a computing device prior to a user purchasing the device. In other examples, the user may download and install apps on the computing device after purchasing the device. A native app, as used herein, may refer to an app that is installed and executed on a
user device 102. A web-based app, in turn, may refer to an app that is accessible from auser device 102 via a web browser app included on thedevice 102. - An AM, as used herein, may include any of an AAM, a WAM, and an ADA. As such, a
user device 102 of the present disclosure may use an AM to access the functionality provided by a native or a web-based app. For example, a user of theuser device 102 may select a user selectable link that includes the AM to access the functionality of the app. An AAM may be a string that references a native app and indicates one or more operations for a user device 102 (e.g., the app) to perform. If a user of theuser device 102 selects a user selectable link that includes the AAM, thedevice 102 may launch the native app and (e.g., cause the app to) perform the operations. In other words, the user selecting the user selectable link may cause theuser device 102 to launch the native app and set the app into an app state (e.g., in which the app displays a GUI, or screen) that corresponds to the operations. As a result, the native app may be configured to display one or more products, services, or vendors, to the user, e.g., via a display device of theuser device 102. In this manner, the AAM may specify the app state of the native app. The app state, in turn, may refer to the operations indicated by the AAM and/or the outcome of the native app performing the operations in response to the user selecting the user selectable link that includes the AAM. - A WAM may include a resource identifier that references a web resource (e.g., a page of a web-based app, or website). For example, the WAM may include a uniform resource locator (URL) (i.e., a web address) used with the hypertext transfer protocol (HTTP). If a user of a
user device 102 selects a user selectable link that includes the WAM, thedevice 102 may launch a web browser app included on thedevice 102 and retrieve the web resource referenced by the resource identifier. Stated another way, if the user selects the user selectable link, theuser device 102 may launch the web browser app and access an app state (e.g., a page) of a web-based app, or website, specified by the WAM. In some examples, a WAM included in an app state record with an AAM may specify an app state of a web-based app that is an equivalent of (e.g., analogous to) an app state of a native app specified by the AAM. - An ADA may specify a location (e.g., a digital distribution platform, such as Google Play® by Google Inc.) where a native app (e.g., a native app referenced by an AAM) may be downloaded. In some examples, an app state record may include an ADA with an AAM (and, e.g., a WAM). In these examples, the ADA may specify a location from which a native app referenced by the AAM may be downloaded.
- In some examples, the
search system 100 may transmit the search results, including the record content, to theuser device 102 with additional data. For example, thesearch system 100 may transmit link (e.g., text and/or image) data that theuser device 102 may use to generate the user selectable links for the record content. Each user selectable link may include a portion of the link (e.g., text and/or image) data that the user of theuser device 102 may select (e.g., touch, or “click on”). Each user selectable link may also be associated with a corresponding portion of the record content included in the search results, such that when the user selects the link, theuser device 102 access the content. For example, theuser device 102 may access a web page using a web browser app, download and/or open a document or a media file, or launch a native or web-based app referenced by a corresponding AM and cause the app to perform one or more operations indicated by the AM. The text and/or image data of the user selectable link may indicate the web page, document, media file, or operations or function that theuser device 102 accesses performs in response to selection of the link. For example, if the user selectable link is for a song in a native or web-based music player app, the text and/or image data may indicate that theuser device 102 will launch the app and that the app will play the song when the user selects the link. In some examples, when the user selects the user selectable link, theuser device 102 downloads a native app referenced by a corresponding AM and installs the app. Example user selectable links are described with reference toFIGS. 7A-7B . - As described herein, the
search system 100 uses data (e.g., records) included in thesearch data store 112 to generate search results based on search queries and indications of the proximate device(s) 104, their types, and/or their states received from the user device(s) 102. Thesearch data store 112 may include one or more databases, indices (e.g., inverted indices), tables, files, or other data structures that may be used to implement the techniques of this disclosure. In some examples, thesearch data store 112 may be included in one or more storage devices. Thesearch data store 112 includes one or more records. Each record may include a wide variety of different types of data, as described herein. For example, each record may include, among other information, a record ID, record information, and record content. A record ID of a record may uniquely identify the record among other records included in thesearch data store 112. Record information of a record may describe the record content included in, or referenced by the record. Example records are described with reference toFIGS. 4A-4B . - As described herein, the
search system 100 receives the search query and the indications of the proximate device(s) 104, their types, and/or their states from theuser device 102 and generates the search results based on the query and the indications. The search query may include text, numbers, and/or symbols (e.g., punctuation) entered into theuser device 102 by the user. For example, the user may have entered the search query into a search field, or “search box,” of a search app (e.g., asearch app 204, as shown inFIG. 2 ) included on theuser device 102. The user may have entered the search query using a touchscreen keypad, a mechanical keypad, and/or via speech recognition techniques and transmitted the query to thesearch system 100 using the search app. In some examples, the search app may be a native app (e.g., any of one or morenative apps 206, as further shown inFIG. 2 ) dedicated to search, or a more general app, such as a web browser app (e.g., aweb browser app 202, as also shown inFIG. 2 ). The indications of the proximate device(s) 104, their types, and/or their states may include text, numbers, symbols (e.g., punctuation), and/or any machine-readable (e.g., binary) data used by the user device 102 (e.g., the search app) to represent the device(s) 104, types, and/or states. For example, the indications may include or reference any of device IDs, type IDs, and state IDs. In some examples, the search app may identify the proximate device(s) 104, determine their types and/or their states, and transmit the indications to the search system 100 (e.g., with the search query). In further examples, theuser device 102 may transmit additional data to thesearch system 100 with the search query and the indications of the proximate device(s) 104, their types, and/or their states. The search query, the indications, and the additional data may be referred to herein as a query wrapper. The additional data may include geo-location data associated with theuser device 102, platform data for the device 102 (e.g., a type and/or a version of thedevice 102, an operating system (OS), and/or a web browser app of the device 102), an identity of the user (e.g., a username), partner specific data, and other data. Theuser device 102 may transmit the query wrapper to thesearch system 100, which may use the search query, the indications, and/or the additional data included in the wrapper to generate the search results and provide the results to thedevice 102. - The user device(s) 102 may be any computing devices capable of providing search queries and indications of the proximate device(s) 104, their types, and/or their states to the
search system 100 and receiving search results from thesystem 100. The user device(s) 102 may include any of smartphones, and tablet, laptop, or desktop computers. The user device(s) 102 may also include any computing devices having other form factors, e.g., computing devices included in vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances). The user device(s) 102 may use a variety of different operating systems or platforms (e.g.,OS 200, as shown inFIG. 2 ). In instances where auser device 102 is a mobile device, thedevice 102 may operate using an OS such as ANDROID® by Google Inc., IOS® by Apple Inc., or WINDOWS PHONE® by Microsoft Corporation. In instances where theuser device 102 is a laptop or desktop computing device, thedevice 102 may use an OS such as MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple Inc., or LINUX® (LINUX is the registered trademark of Linus Torvalds in the U.S. and other countries). The user device(s) 102 may also interact with thesearch system 100 using operating systems other than those described herein, whether presently available or developed in the future. - The user device(s) 102 may communicate with the
search system 100 via thenetwork 106. In general, the user device(s) 102 may communicate with thesearch system 100 using any app that can transmit search queries and indications of the proximate device(s) 104, their types, and/or their states, to thesystem 100 and receive search results from thesystem 100. In some examples, the user device(s) 102 may include an app that is dedicated to interfacing with thesearch system 100, such as an app dedicated to search. In other examples, the user device(s) 102 may communicate with thesearch system 100 using a more general app, such as a web browser app. An app included on auser device 102 to communicate with thesearch system 100 may include a GUI with a search field, or “box,” into which users may enter search queries, e.g., using a touchscreen, physical keyboard, a speech-to-text program, or other form of user input available on thedevice 102. In some examples, the app may also be configured to identify (e.g., via a proximate device identification module) one or more of the proximate device(s) 104 that are located proximate to theuser device 102 and transmit one or more indications of the identifieddevices 104, their types, and/or their states to thesearch system 100. - The
user device 102 may use a GUI of a search app, or a more general app, included on thedevice 102 to display search results to the user. Theuser device 102 may also use the GUI to receive search queries from the user and transmit the queries and indications of the proximate device(s) 104, their types, and/or their states to thesearch system 100. The GUI may display the search results to the user in a variety of different ways, depending on the information transmitted to theuser device 102 from thesearch system 100. In some examples, thesearch system 100 may transmit the search results (e.g., record content) to theuser device 102 with result scores, link data, and/or other information used to generate and display (e.g., rank) one or more user selectable links for the results. In some examples, the GUI may display the search results to the user as a list of the user selectable links, including text and/or image data. For example, the text and/or images data may indicate the record content specified by (e.g., included in) the search results. In some examples, the GUI may display the search results as the list of the user selectable links arranged under a search field into which the user has entered a search query. The GUI may arrange the user selectable links by result scores associated with the links, i.e., with the record content for which the links are generated, or using other logic. In some examples, the GUI may also group the user selectable links by various headers. - The data source(s) 104 may be sources of data that the
search system 100 may use to generate and/or update thesearch data store 112. For example, thesearch system 100 may use the data source(s) 104 to generate and/or update one or more databases, indices, tables, files, or other data structures included in thesearch data store 112. Thesearch system 100 may generate new records and update existing records based on data retrieved from the data source(s) 104. For example, thesearch system 100 may include modules that generate new records and/or update existing records based on the data retrieved from the data source(s) 104. In some examples, some or all of the data included in the search data store 112 (e.g., one or more records) may be manually generated by a human operator. - The data source(s) 104 may include a variety of different data providers. For example, the data source(s) 104 may include data from app developers, such as app developer websites and data feeds provided by app developers. The data source(s) 104 may also include operators of digital distribution platforms configured to distribute apps to
user devices 102. The data source(s) 104 may further include other websites, such as websites that include web logs (i.e., blogs), app reviews, or other data related to apps. Additionally, the data source(s) 104 may include social networking sites, such as “FACEBOOK®” by Facebook Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets). The data source(s) 104 may also include online databases and websites that include data related to movies, television programs, music, and restaurants. The data source(s) 104 may further include other types of data sources, which may have various types of content and update rates. - In some examples, the
search system 100 may retrieve data from the data source(s) 104, including any type of data related to web links, documents, media files, apps, and states of apps. Thesearch system 100 may then generate one or more records based on the data and store the records in thesearch data store 112. In other examples, some or all of the data included in the records (e.g., record information) may be manually generated by a human operator. In some examples, the data included in the records may be updated over time so that thesearch system 100 may provide up-to-date search results in response to search queries and indications of the proximate device(s) 104, their types, and/or their states received from the user device(s) 102. -
FIG. 2 illustrates an example of one of the user device(s) 102 in communication with one or more of the proximate device(s) 104 and thesearch system 100. Specifically,FIG. 2 depicts example interactions and data exchanged among theuser device 102,proximate devices 104, andsearch system 100. As shown inFIG. 2 , theuser device 102 may initially receive asearch query 116 from a user of thedevice 102. For example, the user may have entered thesearch query 116 into asearch field 117 of aGUI 115 of asearch app 204 included on theuser device 102. As also shown, theuser device 102 may further identify one or more of the proximate device(s) 104. In some examples, theuser device 102 may identify the proximate device(s) 104 prior to, during (e.g., in response to), or following the user entering the search query 130 as described herein. For example, theuser device 102 may identify theproximate devices 104 using a proximatedevice identification module 208 included on thedevice 102. For instance, the proximatedevice identification module 208 may be configured to identify one or more of the proximate device(s) 104 that are located proximate to (e.g., nearby) theuser device 102. In some examples, the proximatedevice identification module 208 may include adevice determination module 210 configured to determine a model name, a model number, and/or a device ID of each of one or more of the identifiedproximate devices 104. In other examples, theuser device 102 may further determine one or more types of the identified proximate devices 104 (e.g., via one or more type IDs associated with the types). For example, the proximatedevice identification module 208 may include a devicetype determination module 212 configured to determine the types of the identifiedproximate devices 104. Additionally, or alternatively, theuser device 102 may determine one or more states of the identified proximate devices 104 (e.g., via one or more state IDs). For example, the proximatedevice identification module 208 may include a devicestate determination module 214 configured to determine the states. - As shown in
FIG. 2 , theuser device 102 may transmit a query wrapper to thesearch system 100. The query wrapper may include thesearch query 116 and one or more indications of the identifiedproximate devices 104, their types, and/or their states 118 (e.g., the one or more device IDs, type IDs, and/or state IDs). The query wrapper may also include geo-location data, platform data, and/or other information (e.g., an IP address) associated with the user, theuser device 102, thequery 116, and/or the identifiedproximate devices 104. For example, the user may have caused the user device 102 (e.g., the search app 204) to submit the query wrapper including thesearch query 116 and theindications 118 to thesearch system 100 by selecting asearch button 119 also included in theGUI 115 of thesearch app 204. - Upon receiving the query wrapper from the
user device 102, thesearch system 100 may generate one ormore search results 120 based on thesearch query 116 and theindications 118 included in the wrapper. As described herein, to generate the search results 120, thesearch system 100 may identify one or more records included in thesearch data store 112 using thesearch query 116 and, e.g., theindications 118. As also described herein, thesearch system 100 may further generate results scores for the identified records, e.g., based on theindications 118. Thesearch system 100 may then transmit the search results 120 to theuser device 102. As shown inFIG. 2 , the search results 120 may include or reference one or more web pages (e.g., web links), documents (e.g., text), media (e.g., image, audio, and/or video) files, AMs (e.g., AAMs, WAMs, and/or ADAs specifying native or web-based apps and/or states of the apps), result scores, link data, and/or other information included in the identified records. - In the example of
FIG. 2 , upon receiving the search results 120 from thesearch system 100, theuser device 102 may display theresults 120 as one or more user selectable links. For example, theuser device 102 may generate the user selectable links such that each link is associated with (e.g., includes) a portion of the information included in the search results 120. Theuser device 102 may generate the user selectable links using the link data also included in the search results 120. For example, the link data may include any of text and image data describing the information included in the search results 120. In this manner, the link data included in (e.g., used to generate) each user selectable link may describe the portion of the information included in the search results 120 associated with the link. Theuser device 102 may further arrange (e.g., order, or rank) the user selectable links to display the links to the user based on the result scores also included in the search results 120. For example, theuser device 102 may assign each user selectable link the result score associated with the record from which the information included in the link was selected. Theuser device 102 may then order the user selectable links based on the result scores (e.g., display higher-ranking links higher in a list of user selectable links).Example search results 120 displayed to a user of auser device 102 as user selectable links are described with reference toFIGS. 7A-7B . -
FIG. 3A illustrates anexample search system 100. Thesearch system 100 ofFIG. 3A includes thesearch module 100,search data store 112, and resultgeneration module 114. Thesearch module 110 identifies records 400 included in thesearch data store 112 based onsearch queries 116 and based on indications ofproximate devices 104, their types, and/or theirstates 118 received from the user device(s) 102. Initially, thesearch module 110 may optionally analyze asearch query 116 received from auser device 102. Thesearch module 110 may then identify one or more records 400 included in thesearch data store 112 based on the (e.g., analyzed)search query 116 and based on an indication of aproximate device 104, its type, and/or its state (e.g., represented using a device ID, a type ID, and/or a state ID) also received from theuser device 102. For example, thesearch module 110 may identify the records 400 based on (e.g., text) matches between terms of thesearch query 116 and terms of information (e.g., record information and/or record IDs) included in the identified records 400. In some examples, thesearch module 110 may further identify the records 400 based on matches between (e.g., terms of) the indication 118 (e.g., the device ID, type ID, and/or state ID) and the information included in the identified records 400. Thesearch module 110 may then process (e.g., generate result scores for) the identified records 400. For example, thesearch module 110 may generate result scores for the records 400 based on how well the records 400 match thesearch query 116 and, e.g., the indication 118 (e.g., terms of theindication 118, such as the device ID, type ID, and/or state ID). Thesearch module 110 may further select one or more of the identified records 400 that best match thesearch query 116 and the indication 118 (e.g., select one or more records 400 having the highest result scores). Thesearch module 110 may transmitrecord IDs 122 associated with (e.g., included in) the selected records 400 to theresult generation module 114. Theresult generation module 114 may identify the records 400 selected by thesearch module 110 in thesearch data store 112 using the receivedrecord IDs 122 and select record content (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or other information) from the identified records 400. Theresult generation module 114 may then transmit the selected record content to theuser device 102 as one or more search results 120. -
FIG. 3B illustrates an example of thesearch module 110 described with reference toFIG. 3A . Thesearch module 110 ofFIG. 3B includes aquery analysis module 300, a consideration set generation module (hereinafter, “set generation module”) 302, and a consideration set processing module (hereinafter, “set processing module”) 304. Thequery analysis module 300 may receive a search query 116 (e.g., as part of a query wrapper) from auser device 102 and analyze thequery 116. For example, thequery analysis module 300 may perform any of tokenization, filtering, stemming, synonymization, and stop word removal with respect to thequery 116. Theset generation module 302 may identify one or more records 400 included in thesearch data store 112 based on thesearch query 116 and based on one or more indications of one or more of the proximate device(s) 104, their types, and/or their states 118 (e.g., one or more device IDs, type IDs, and/or state IDs) also received from theuser device 102. - In some examples, the
set generation module 302 may identify a given record 400 based on whether a particular proximate device 104 (e.g., having a specific model name, model number, and/or device ID) is located proximate to theuser device 102, as specified by theindications 118. In other examples, theset generation module 302 may identify the record 400 based on whether a particular proximate device type (e.g., having a specific type ID) is located proximate to theuser device 102, as specified by theindications 118. Additionally, or alternatively, theset generation module 302 may identify the record 400 based on whether a specific proximate device, or a general device type, having a particular state (e.g., having a given state ID) is located proximate to theuser device 102, as specified by theindications 118. The identified records 400 may be referred to herein as a “consideration set.” In some examples, theset generation module 302 may identify the records 400 of the consideration set based on one or more (e.g., text) matches between one or more terms of thesearch query 116 and one or more terms of information (e.g., record information and/or record IDs) included in the identified records 400. For example, theset generation module 302 may identify the records 400 based on matches between tokens generated by thequery analysis module 300 and words included in the records 400 (e.g., in record information and/or record IDs of the records 400). In some examples, theset generation module 302 may further identify the records 400 of the consideration set based on one or more (e.g., text) matches between the indications of theproximate devices 104, their types, and/or their states 118 (e.g., between the device IDs, type IDs, and/or state IDs included in, or referenced by the indications 118) and the information included in the records 400 (e.g., the record information and/or record IDs). For example, theset generation module 302 may identify one or more records 400 included in thesearch data store 112 that specify any aspect of the indications of theproximate devices 104, their types, and/or their states 118 (e.g., that include any of the associated device IDs, type IDs, and/or state IDs). As a specific example, theset generation module 302 may identify the records 400 using thesearch query 116 and, e.g., theindications 118, as inputs to Lucene® information retrieval software developed by the Apache Software Foundation (hereinafter, “Lucene”). In this example, the record information included in the records 400 may be indexed using inverted indexing techniques, which may allow mapping one or more terms of thesearch query 116 and (e.g., one or more terms of) the indications 118 (e.g., device IDs, type IDs, and/or state IDs) to the record information included in the records 400. - The
set processing module 304 processes (e.g., generates result scores for, or “scores”) the records 400 included in the consideration set and transmits one ormore record IDs 122 associated with (e.g. included in) the processed records 400 to theresult generation module 114. In some examples, theset processing module 304 scores the records 400 by generating a result score for each record 400. In these examples, the result scores may be transmitted to theresult generation module 114 along with therecord IDs 122 for the records 400 of the consideration set. Theset processing module 304 may generate the result scores for the records 400 in a variety of different ways. In some examples, theset processing module 304 generates a result score for a record 400 based on one or more scoring features. The scoring features may be associated with the record 400, thesearch query 116, and/or one or more indications of the proximate device(s) 104, their types, and/or their states that resulted in identification of the record 400 by theset generation module 302. A scoring feature for the record 400 (e.g., a “record scoring feature”) may be based on any data associated with the record 400, e.g., data included in the record information of the record 400. Example record scoring features for the record 400 include popularity and/or ratings (e.g., user ratings) of a web page, document, media file, app, or state of an app specified by the record 400. Other example record scoring features include measurements associated with the record 400, such as how often the record 400 is retrieved during a search and how often user selectable links for record content included in the record 400 are selected by a user. Still other record scoring features include whether the record 400 specifies a web page, a document, a media file, an app, a state of an app, or any other data that is specific to the record 400. A scoring feature for the search query 116 (e.g., a “query scoring feature”) may include any data associated with thequery 116. Example query scoring features for thesearch query 116 include a number of words in thequery 116, popularity of thequery 116, and an expected frequency of the words insearch query 116. A scoring feature for the record 400 and the search query 116 (e.g., a “record-query scoring feature”) may include any data that may be generated based on information associated with both the record 400 and thequery 116. Example record-query scoring features for the record 400 and thesearch query 116 include parameters that indicate how well terms of thequery 116 match terms of the record information and/or the record ID of the record 400. - As described herein, in some examples, the
set processing module 304 may generate a result score for a record 400 based on one or more indications of one or more of the proximate device(s) 104, their types, and/or theirstates 118 received from one of the user device(s) 102. In these examples, a “proximate device” scoring feature may include any aspects of theindications 118. As one example, a proximate device scoring feature may include one or more model names, model numbers, and/or device IDs specified by theindications 118. In this example, theset processing module 304 may generate the result score for the record 400 based on whether a particular proximate device 104 (e.g., having a specific model name, model number, and/or device ID) is located proximate to theuser device 102, as specified by theindications 118. As another example, a proximate device scoring feature may include one or more type IDs specified by theindications 118. In this example, theset processing module 304 may generate the result score for the record 400 based on whether a particular proximate device type (e.g., having a specific type ID) is located proximate to theuser device 102, as specified by theindications 118. As still another example, a proximate device scoring feature may include one or more state IDs specified by theindications 118. In this example, theset processing module 304 may generate the result score for the record 400 based on whether a specific proximate device, or a general device type, having a particular state (e.g., having a given state ID) is located proximate to theuser device 102, as specified by theindications 118. In another example, a scoring feature for the record 400 and the indications 118 (e.g., a “record-proximate device” scoring feature) may include any data generated based on information associated with both the record 400 and theindications 118. Example record-proximate device scoring features include parameters that indicate how well (e.g., terms of) the indications 118 (e.g., the device IDs, type IDs, and/or state IDs) match terms of the record information and/or the record ID included in the record 400. In general, theset processing module 304 may generate the result score for the record 400 based on any combination of one or more record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and record-proximate device scoring features. - The
set processing module 304 may generate the result scores for the records 400 included in the consideration set based on one or more of the scoring features described herein and/or any additional scoring features. In some examples, theset processing module 304 may include one or more machine-learned models (e.g., a supervised learning model), such as a machine-learned relevance (MLR) model (e.g., including regression) configured to receive one or more scoring features. The machine-learned models may be further configured to generate the result scores for the records 400 based on one or more of the record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and record-proximate device scoring features described herein. For example, theset processing module 304 may pair thesearch query 116 with each record 400 of the consideration set and compute a vector of features for each (query, record) pair. In some examples, theset processing module 304 may further pair thesearch query 116 and each record 400 with the indications of theproximate devices 104, their types, and/or theirstates 118, and compute a vector of features for each (query, proximate device/type/state, record) pair. In general, the vector of features may include one or more record scoring features, query scoring features, record-query scoring features, proximate device scoring features, and/or record-proximate device scoring features. Theset processing module 304 may then input the vector of features into a machine-learned (e.g., MLR) model to calculate a result score for the corresponding record 400. In some examples, the machine-learned model may include a set of decision trees (e.g., gradient boosted decision trees), or a logistic probability formula. In further examples, the machine-learned task described herein may be framed as a semi-supervised learning task, where a minority of training data used to create the machine-learned model is labeled with human curated result scores, and the rest of the training data is used without human curated result score labels. - In some examples, the
set processing module 304 may further select one or more of the records 400 included in the consideration set based on the result scores associated with the records 400. For example, theset processing module 304 may select one or more records 400 having the highest one or more result scores from the consideration set. Theset processing module 304 may then transmit one ormore record IDs 122 associated with (e.g., included in) the selected records 400 to theresult generation module 114. - The
result generation module 114 may receive therecord IDs 122 and, e.g., the result scores, from theset processing module 304 and identify the (e.g., selected) records 400 of the consideration set in thesearch data store 112 using theIDs 122. Theresult generation module 114 may then select record content (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or additional information) from the (e.g., selected) records 400 and transmit the selected content to theuser device 102 as search results 120, e.g., with the corresponding result scores. Theuser device 102 may use the result scores associated with the record content (i.e., the search results 120) in a variety of different ways. In some examples, theuser device 102 may use the result scores to rank the record content (e.g., one or more user selectable links generated using the content) within a list for display to a user of thedevice 102. In these examples, a larger result score may indicate that the corresponding portion of the record content (e.g., a given web link, document, media file, app, or state of an app) is more relevant to thesearch query 116 and, e.g., the indications of theproximate devices 104, their types, and/or theirstates 118 than another portion of the content having a smaller result score. In examples where the record content is displayed to the user as a list of one or more user selectable links (or “links”), links for portions of the content associated with larger result scores may be displayed higher within the list (e.g., near the top of a screen) than links for portions of the content associated with smaller results scores. In these examples, links for portions of the record content having smaller result scores may be located farther down the list (e.g., off screen) and may be accessed by scrolling down a screen of theuser device 102. In this manner, the result scores associated with the record content transmitted by theresult generation module 114 to theuser device 102 may indicate the relevance of the content (e.g., web links, documents, media files, apps, and/or states of apps) to thesearch query 116 and, e.g., theproximate devices 104, their types, and/or states, depending on which parameters theset processing module 304 uses to generate the result scores. -
FIGS. 4A-4B illustrate example records that may be included in thesearch data store 112.FIG. 4A illustrates a general example of arecord 400A that may be included in thesearch data store 112. Therecord 400A ofFIG. 4A may include or reference various different data associated with web pages, documents, media files, native or web-based apps, states of native or web-based apps, and/or other information. As shown inFIG. 4A , therecord 400A may include arecord ID 402A that identifies therecord 400A among other records included in thesearch data store 112. As further shown, therecord 400A may includerecord information 404A, such as a description of the data included in or referenced by therecord 400A (e.g., a description of a web page, document, media file, an app, or a state of an app). As described herein, thesearch system 100 may identify therecord 400A in thesearch data store 112 using (e.g., based on text matches between) asearch query 116 and therecord information 404A. As also shown, therecord 400A may includerecord content 406A that includes or references the data described by therecord information 404A. For example, as shown inFIG. 4A , therecord content 406A may include one or more web links (e.g., to web pages), documents (e.g., text), files (e.g., media files, such as image, audio, video, and/or other files), AAMs, WAMs, ADAs, and/or additional data. As also described herein, upon identifying therecord 400A using asearch query 116, thesearch system 100 may select therecord content 406A from therecord 400A and use thecontent 406A to generatesearch results 120 that are responsive to thequery 116. -
FIG. 4B illustrates a specific example of arecord 400B that may be included in thesearch data store 112. Therecord 400B ofFIG. 4B specifies a state of the native app “HP® All-in-One Printer Remote” that enables users to print documents and images using a networked printer (e.g., the HP® Envy 4502 printer). As shown inFIG. 4B , therecord 400B includes a record ID “HP ALL-IN-ONE PRINTER REMOTE—PRINT DOCUMENTS/IMAGES” 402B that identifies therecord 400B among other records included in thesearch data store 112. In other examples, therecord ID 402B may be represented using one or more characters and/or numbers (e.g., an alphanumeric string, or an index), or machine-readable (e.g., binary) data. As further shown, therecord 400B includesrecord information 404B, including a description of the state specified by therecord 400B and user reviews of the state. As also shown, therecord 400B includesrecord content 406B, including one or more AAMs that enable auser device 102 to access the state specified by therecord 400B, one or more WAMs that enable thedevice 102 to access a web equivalent of (e.g., a web page corresponding to) the state, and one or more ADAs that enable thedevice 102 to download the native app associated with the state (i.e., “HP® All-in-One Printer Remote”). As shown inFIG. 4B , therecord content 406B also includes link (e.g., text and/or image) data that enables theuser device 102 to generate one or more user selectable links associated with therecord content 406B. -
FIG. 5A is a flow diagram that illustrates anexample method 500A for generatingsearch results 120 based on asearch query 116 and one or more of the proximate device(s) 104 using thesearch system 100. As shown inFIG. 5A , inblock 502A, the search system 100 (e.g., the search module 110) may initially receive a search query 116 (e.g., a text string) from one of the user device(s) 102. Inblock 504A, the search system 100 (e.g., the query analysis module 300) may optionally perform an analysis of the search query 116 (e.g., perform any of tokenization, filtering, stemming, synonymization, and stop word removal with respect to the query 116). Inblock 506A, the search system 100 (e.g., the search module 110) may also receive an indication of one of the proximate device(s) 104, its type, and/or its state 118 (e.g., a device ID, a type ID, and/or a state ID) from theuser device 102. As described with reference toFIG. 6 , theuser device 102 may have identified theproximate device 104 as being located proximate to theuser device 102 using a local wireless network. As further described, the identifiedproximate device 104 may be configured to communicate via the local wireless network. As also described, to identify theproximate device 104, theuser device 102 may have received an indication of theproximate device 104 from theproximate device 104 via the local wireless network. Inblock 508A, the search system 100 (e.g., the set generation module 302) may identify a consideration set of one or more records 400 included in thesearch data store 112 based on thesearch query 116 and theindication 118. In this example, each record may include record content 406 including any of a web link, a document, a media file, an AAM, a WAM, an ADA, and/or other information. For example, thesearch system 100 may identify the records 400 of the consideration set based on one or more (e.g., text) matches between one or more terms of thesearch query 116 and one or more terms of the information (e.g., the record information 404) included in the identified records 400. In theexample method 500A, thesearch system 100 may further identify the records 400 based on one or more (e.g., text) matches between the indication 118 (e.g., the device ID, type ID, and/or state ID) and one or more terms of the information (e.g., the record information 404) included in the identified records 400. Inblock 510A, the search system 100 (e.g., the set processing module 304) may optionally generate one or more result scores for the records 400 included in the consideration set (e.g., generate a result score for each record 400). Inblock 512A, the search system 100 (e.g., the set processing module 304) may optionally select one or more records 400 from the consideration set based on the one or more result scores associated with the selected records 400 (e.g., select one or more highest-scoring records). Inblock 514A, the search system 100 (e.g., the result generation module 114) may select the record content 406 (e.g., web links, documents, media files, AAMs, WAMs, ADAs, and/or other information) from the (e.g., selected) records 400 of the consideration set. Inblock 516A, the search system 100 (e.g., the result generation module 114) may generate one ormore search results 120 that include the selected record content 406 (e.g., eachresult 120 may include the record content 406 selected from each record 400). Inblock 518A, the search system 100 (e.g., the result generation module 114) may transmit the search results 120 to theuser device 102. -
FIG. 5B is a flow diagram that illustrates anotherexample method 500B for generatingsearch results 120 based on asearch query 116 and one or more of the proximate device(s) 104 using thesearch system 100.Blocks 502B-504B, 508B, and 512B-518B of themethod 500B are analogous toblocks 502A-506A and 512A-518A of themethod 500A. Inblock 506B, the search system 100 (e.g., the set generation module 302) may identify a consideration set of one or more records 400 included in thesearch data store 112 based on thesearch query 116, in a similar manner as described with reference to themethod 500A. Inblock 510B, the search system 100 (e.g., the set processing module 304) may generate one or more result scores for the records 400 included in the consideration set based on the indication 118 (e.g., generate a result score for each record 400). For example, thesearch system 100 may generate the result scores for the records 400 based on how well various aspects of the indication 118 (e.g., the device ID, type ID, and/or state ID) match one or more terms of the information (e.g., the record information 404) included in the identified records 400, e.g., using an MLR model. Inblock 512B, the search system 100 (e.g., the set processing module 304) may select one or more records 400 from the consideration set based on the one or more result scores associated with the selected records 400, in a similar manner as described with reference to themethod 500A. Inblock 514B, the search system 100 (e.g., the result generation module 114) may select the record content 406 from the selected records 400 of the consideration set, also in a similar manner as described with reference to themethod 500A. -
FIG. 6 is a flow diagram that illustrates anexample method 600 for generatingsearch results 120 based on asearch query 116 and one or more of the proximate device(s) 104 using one of the user device(s) 102. As shown inFIG. 6 , inblock 602, the user device 102 (e.g., the search app 204) may initially receive asearch query 116 from a user of thedevice 102. Inblock 604, the user device 102 (e.g., the search app 204) may transmit thesearch query 116 to thesearch system 100. Inblock 606, the user device 102 (e.g., the search app 204) may identify one of the proximate device(s) 104 that is located proximate to (e.g., nearby) thedevice 102 using a local wireless network (e.g., Wi-Fi, Bluetooth, or NFC). In this example, the identifiedproximate device 104 may be configured to communicate via the local wireless network. Also in this example, to identify theproximate device 104, theuser device 102 may receive an indication (e.g., a device ID) of theproximate device 104 from theproximate device 104 via the local wireless network. As described herein, theuser device 102 may identify theproximate device 104 using the proximatedevice identification module 208 included on the device 102 (e.g., as part of the search app 204). Specifically, as one example, theuser device 102 may determine a model name, a model number, and/or a device ID of the identifiedproximate device 104 using thedevice determination module 210 included in the proximatedevice identification module 208. As another example, theuser device 102 may determine a type (e.g., a type ID) of the identifiedproximate device 104 using the devicetype determination module 212 also included in the proximatedevice identification module 208. As still another example, theuser device 102 may determine a state (e.g., a state ID) of the identifiedproximate device 104 using the devicestate determination module 214 also included in the proximatedevice identification module 208. - In
block 608, the user device 102 (e.g., the search app 204) may transmit an indication of the identifiedproximate device 104, its category (e.g., type), and/or itsstate 118 to the search system 100 (e.g., as a device ID, a type ID, and/or a state ID). As described with reference toFIGS. 5A-5B , thesearch system 100 may receive thesearch query 116 and theindication 118 from theuser device 102, generate one ormore search results 120 based on thequery 116 andindication 116, and transmit theresults 120 to thedevice 102. Accordingly, inblock 610, the user device 102 (e.g., the search app 204) may receive the search results 120 from thesearch system 100 in response to transmitting thesearch query 116 and theindication 118. Inblock 612, the user device 102 (e.g., the search app 204) may display the search results 120 to the user as one or more user selectable links. As described herein, the search results 120 may include any of web pages, documents, media files, AAMs, WAMs, ADAs, and/or other information. In some examples, as shown inblock 614, theuser device 102 may detect a user selection of one of the user selectable links, and, as shown inblock 616, in response to detecting the user selection, access the content associated with the selected link. -
FIGS. 7A-7B illustrate example GUIs that may be generated on one of the user device(s) 102 according to the present disclosure.FIG. 7A depicts anexample GUI 115 of asearch app 204 executing on theuser device 102. As shown inFIG. 7A , a user of theuser device 102 has entered a search query “print” 116 into a search field 117 (e.g., a “search box,” or a “search bar”) of theGUI 115. The user has then selected (e.g., touched, or clicked on) asearch button 119 of theGUI 115 to cause the search app 204 (e.g., the user device 102) to transmit a query wrapper that includes thesearch query 116 to thesearch system 100. In other examples, the user may have caused thesearch app 204 to transmit the query wrapper to thesearch system 100 using other techniques (e.g., by touching or clicking another button or GUI element, or via voice command). In the example ofFIGS. 7A-7B , the user device 102 (e.g., the search app 204) has also identified one of the proximate device(s) 104, namely anetworked printer 104, that is located proximate to (e.g., nearby) theuser device 102 using a local wireless network (e.g., Wi-Fi, Bluetooth, or NFC). In this example, the identifiedproximate device 104 may be configured to communicate via the local wireless network. Also in this example, to identify theproximate device 104, theuser device 102 may receive an indication (e.g., a device ID) of theproximate device 104 from theproximate device 104 via the local wireless network. The user device 102 (e.g., the search app 204) has then transmitted an indication of thenetworked printer 104, its type (e.g., a “networked printer”), and/or its state (e.g., “low ink”) 118 to thesearch system 100. For example, theuser device 102 may have transmitted theindication 118 to thesearch system 100 with the search query 116 (e.g., as part of the query wrapper), or separately from the query 116 (e.g., prior to or after transmitting thequery 116 to the system 100). - The
search system 100 has received thesearch query 116 and the indication of thenetworked printer 104, its type, and/or itsstate 118 from theuser device 102 and generated one ormore search results 120 including, e.g., one or more web pages, documents, media files, AAMs, WAMs, ADAs, and/or other information based on thequery 116 and theindication 118. Thesearch system 100 has then transmitted the search results 120 to theuser device 102. As described herein, thesearch system 100 has generated the search results 120 using thesearch query 116 and theindication 118 such that theresults 120 are both responsive to (e.g., match) thequery 116 and directly applicable to thenetworked printer 104. As shown inFIG. 7B , theuser device 102 has received the search results 120 from thesearch system 100 and has displayed theresults 120 to the user as one or more user selectable links. As also shown, the user selectable links are configured to, upon being selected by the user, direct theuser device 102 to the web pages, documents, media files, AAMs, WAMs, ADAs and/or other information specified by theresults 120. Specifically, as shown inFIG. 7B , the user selectable links (e.g., the corresponding search results 120) specify a video user review 600-1 of thenetworked printer 104 in a web-based or native version of YouTube®, a downloadable (e.g., PDF) user's manual 600-2 associated with theprinter 104, a downloadable native app “HP® Smart Print” 600-3 associated with theprinter 104, and a state of the app 600-4 that enables the user to print a document or an image using the app and the printer 104 (e.g., by selecting a GUI element 600-5). - In additional examples, the
user device 102 may identify the proximate device(s) 104 using any optical communication protocols, interfaces, and technologies, such as wireless infrared communications (e.g., IrDA) and laser-based communications (e.g., using a barcode scanner included in theuser device 102 and barcodes present on the proximate device(s) 104). In other examples, theuser device 102 may identify the proximate device(s) 104 using a current location of the device 102 (e.g., GPS coordinates associated with the device 102) and a database (e.g., a data store) including an indication of one or moreproximate devices 104 and their corresponding geographic locations (e.g., GPS coordinates associated with the devices 104). - The modules and data stores included in the
search system 100 represent features or functionality that may be included in thesystem 100 as it is described in the present disclosure. For example, thesearch module 110,search data store 112,result generation module 114, and the components thereof may represent features included in thesearch system 100. The modules and data stores described herein may be embodied by electronic hardware, software, and/or firmware. Depiction of different features or functionality as separate modules or data stores does not necessarily imply whether the modules or data stores are embodied by common or separate electronic hardware, software, and/or firmware. In some implementations, the features or functionality associated with one or more of the modules and data stores depicted herein may be realized by common or separate electronic hardware, software, and/or firmware components. - The modules and data stores may be embodied by electronic hardware, software, and/or firmware components including one or more processing units, memory components, input/output (I/O) components, and interconnect components. The interconnect components may be configured to provide communication between the processing units, memory components, and I/O components. For example, the interconnect components may include one or more buses configured to transfer data between electronic components. The interconnect components may also include one or more control circuits (e.g., a memory controller and/or an I/O controller) configured to control communication between electronic components.
- The processing units may include one or more central processing units (CPUs), graphics processing units (GPUs), digital signal processing units (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other processing units. The processing units may be configured to communicate with the memory components and I/O components. For example, the processing units may be configured to communicate with the memory components and I/O components via the interconnect components.
- A memory component, or memory, as described herein may include any volatile or non-volatile media. For example, a memory component may include electrical media, magnetic media, and/or optical media, such as random access memory (RAM), non-volatile RAM (NVRAM), read-only memory (ROM), electrically-erasable programmable ROM (EEPROM), Flash memory, solid state drives (SSDs), hard disk drives (HDDs), magnetic tape drives, optical storage technology (e.g., compact disc, digital versatile disc, and/or Blu-ray disc), or any other equivalent or analogous memory components, systems, or devices. The memory components may include (e.g., store) the various types of data described herein. For example, the memory components may store data included in one or more of the records of the
search data store 112. The memory components may also include one or more instructions that may be executed by the processing units. For example, the memory components may include one or more computer-readable instructions that, when executed by the processing units, cause the units to perform the various functions attributed to the modules and data stores described herein. - The I/O components may refer to electronic hardware, software, and/or firmware that provide communication with a variety of different devices. For example, the I/O components may provide communication between other devices and the processing units and memory components. In some examples, the I/O components may be configured to communicate with a computer network, such as the
network 106. For example, the I/O components may be configured to exchange data over a computer network using any of a variety of different physical connections, wireless connections, and protocols. The I/O components may include one or more network interface components (e.g., a network interface controller), repeaters, network bridges, network switches, routers, and firewalls. In some examples, the I/O components may include hardware, software, and/or firmware configured to communicate with various human interface devices, including display screens, keyboards, pointer devices (e.g., a mouse), touchscreens, speakers, and microphones. In other examples, the I/O components may provide communication with additional devices, such as external memory (e.g., external HDDs). - In some examples, the search system may be a system of one or more computing devices (e.g., a computer search system) configured to implement the techniques described herein. In other words, the features or functionality attributed to the modules and data stores described herein may be implemented by one or more computing devices. Each computing device may include any combination of the electronic hardware, software, and firmware components described herein. Each computing device may also include any combination of the processing units, memory components, I/O components, and interconnect components also described herein. The computing devices of the search system may also include various human interface devices, including 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 computing devices of the search system may be configured to communicate with the
network 106. The computing devices may also be configured to communicate with one another (e.g., within the search system) via a computer network. In some examples, the computing devices may include one or more server computing devices configured to communicate with user devices, such as the user device(s) 102 (e.g., receivesearch queries 116 and indications of proximate device(s) 104, their types, and/or theirstates 118, and transmit search results 120). The server computing devices may also gather data from various data sources, such as the data source(s) 108, index the data, and store the data, as well as gather, index, and/or store other documents or information. The server computing devices may also reside within a single machine or within multiple machines at a single geographic location, or may be distributed across a number of geographic locations. - Additionally, the various implementations of the search system described herein (e.g., using one or more computing devices that include one or more processing units, memory components, I/O components, and interconnect components) are equally applicable to any of the user device(s) 102, as well as to the various components thereof, as described herein.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/982,161 US20160357764A1 (en) | 2015-06-02 | 2015-12-29 | Generating Search Results based on Proximate Computing Devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562170044P | 2015-06-02 | 2015-06-02 | |
US14/982,161 US20160357764A1 (en) | 2015-06-02 | 2015-12-29 | Generating Search Results based on Proximate Computing Devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160357764A1 true US20160357764A1 (en) | 2016-12-08 |
Family
ID=57451498
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/982,120 Active US10127579B2 (en) | 2015-06-02 | 2015-12-29 | Personalizing advertisements based on proximate computing devices |
US14/982,104 Abandoned US20160358215A1 (en) | 2015-06-02 | 2015-12-29 | Generating Advertisements based on Proximate Computing Devices |
US14/982,161 Abandoned US20160357764A1 (en) | 2015-06-02 | 2015-12-29 | Generating Search Results based on Proximate Computing Devices |
US15/245,378 Abandoned US20160364759A1 (en) | 2015-06-02 | 2016-08-24 | Generating Advertisements Based On Proximate Computing Devices |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/982,120 Active US10127579B2 (en) | 2015-06-02 | 2015-12-29 | Personalizing advertisements based on proximate computing devices |
US14/982,104 Abandoned US20160358215A1 (en) | 2015-06-02 | 2015-12-29 | Generating Advertisements based on Proximate Computing Devices |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/245,378 Abandoned US20160364759A1 (en) | 2015-06-02 | 2016-08-24 | Generating Advertisements Based On Proximate Computing Devices |
Country Status (1)
Country | Link |
---|---|
US (4) | US10127579B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9959558B2 (en) * | 2015-08-18 | 2018-05-01 | Samsung Electronics Co., Ltd. | Application cards as advertisements |
US10127579B2 (en) | 2015-06-02 | 2018-11-13 | Samsung Electronics Co., Ltd. | Personalizing advertisements based on proximate computing devices |
US11575682B2 (en) * | 2019-09-26 | 2023-02-07 | Amazon Technologies, Inc. | Assigning contextual identity to a device based on proximity of other devices |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5927329B1 (en) * | 2015-08-13 | 2016-06-01 | ヤフー株式会社 | Distribution device, distribution method, distribution program, terminal device, and display program |
US10769674B2 (en) * | 2015-12-31 | 2020-09-08 | Samsung Electronics Co., Ltd. | Generation and rendering system for advertisement objects with computer-selected conditional content |
CN107172151B (en) * | 2017-05-18 | 2020-08-07 | 百度在线网络技术(北京)有限公司 | Method and device for pushing information |
KR102532299B1 (en) * | 2017-07-27 | 2023-05-15 | 삼성전자주식회사 | Apparatus and method for replacing and outputting an advertisement |
US11010419B2 (en) * | 2018-08-21 | 2021-05-18 | International Business Machines Corporation | Internet of things device graphical presentation modification |
KR20210088985A (en) * | 2020-01-07 | 2021-07-15 | 삼성전자주식회사 | An electronic apparatus and a method therefor |
US11676179B2 (en) | 2020-12-14 | 2023-06-13 | International Business Machines Corporation | Personalization of advertisement selection using data generated by IoT devices |
US20220215435A1 (en) * | 2021-01-06 | 2022-07-07 | Universal Electronics Inc. | System and method for using device discovery to provide marketing recommendations |
WO2023122290A1 (en) * | 2021-12-23 | 2023-06-29 | Universal Electronics Inc. | System and method for using device discovery to provide marketing recommendations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040162804A1 (en) * | 2003-02-18 | 2004-08-19 | Michael Strittmatter | System and method for searching for wireless devices |
US20100130125A1 (en) * | 2008-11-21 | 2010-05-27 | Nokia Corporation | Method, Apparatus and Computer Program Product for Analyzing Data Associated with Proximate Devices |
US20130163027A1 (en) * | 2011-12-22 | 2013-06-27 | Xerox Corporation | Secure federation of cloud print services |
US20140047487A1 (en) * | 2012-08-10 | 2014-02-13 | Qualcomm Incorporated | Ad-hoc media presentation based upon dynamic discovery of media output devices that are proximate to one or more users |
US20140344848A1 (en) * | 2013-05-20 | 2014-11-20 | Verizon Patent And Licensing Inc. | Device recommendation engine |
US9787778B2 (en) * | 2012-07-05 | 2017-10-10 | Aruba Networks, Inc. | Geographic proximity based service discovery |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001261721A1 (en) | 2000-05-19 | 2001-12-03 | Leap Wireless International, Inc. | Computer network page advertising method |
US8473349B1 (en) * | 2004-05-21 | 2013-06-25 | A9.Com, Inc. | Ad server and syndication system |
US9118774B2 (en) * | 2005-07-21 | 2015-08-25 | Google Inc. | Dispatch system to remote devices |
WO2007022104A2 (en) * | 2005-08-13 | 2007-02-22 | Adstreams Roi, Inc. | Enabling an advertiser to measure user viewing to and response to an advertisement |
US20150046255A1 (en) * | 2008-03-28 | 2015-02-12 | Google Inc. | Asset maps |
US20090287672A1 (en) * | 2008-05-13 | 2009-11-19 | Deepayan Chakrabarti | Method and Apparatus for Better Web Ad Matching by Combining Relevance with Consumer Click Feedback |
US20100121710A1 (en) * | 2008-11-13 | 2010-05-13 | Spreezio, Inc. | System and method for location-based online shopping and just-in-time advertising |
US20110010245A1 (en) * | 2009-02-19 | 2011-01-13 | Scvngr, Inc. | Location-based advertising method and system |
US20150154631A1 (en) * | 2012-04-19 | 2015-06-04 | Dennoo Inc. | Advertisement Platform With Novel Cost Models |
US20140058793A1 (en) * | 2012-08-21 | 2014-02-27 | Microsoft Corporation | Forecasting a number of impressions of a prospective advertisement listing |
US20140373040A1 (en) * | 2013-02-06 | 2014-12-18 | Miiicasa Taiwan Inc. | Method and device for providing content/service subscription and providing subscribed content/service |
CN105074700A (en) * | 2013-03-01 | 2015-11-18 | 奎克西公司 | Generating search results containing state links to applications |
US9420044B2 (en) * | 2013-06-26 | 2016-08-16 | Qualcomm Innovation Center, Inc. | Leveraging system signaling service advertisements for application-layer discovery and connection management in an internet of things (IoT) environment |
US10185934B2 (en) * | 2013-07-09 | 2019-01-22 | Qualcomm Incorporated | Real-time context aware recommendation engine based on a user internet of things environment |
US9871865B2 (en) * | 2013-07-11 | 2018-01-16 | Neura, Inc. | Physical environment profiling through internet of things integration platform |
US9843886B2 (en) * | 2013-09-16 | 2017-12-12 | Qualcomm Incorporated | User interactive application enabled gateway |
US20150156266A1 (en) * | 2013-11-29 | 2015-06-04 | Qualcomm Incorporated | Discovering cloud-based services for iot devices in an iot network associated with a user |
US9635124B2 (en) * | 2014-01-15 | 2017-04-25 | Qualcomm Connected Experiences, Inc. | Conveying state changes using connectionless messaging and a store-and-forward cache |
US10438235B2 (en) * | 2014-01-21 | 2019-10-08 | Facebook, Inc. | Dynamically allocating computing resources to identify advertisements for presentation |
US20150358777A1 (en) * | 2014-06-04 | 2015-12-10 | Qualcomm Incorporated | Generating a location profile of an internet of things device based on augmented location information associated with one or more nearby internet of things devices |
US9565633B2 (en) * | 2014-07-03 | 2017-02-07 | Alcatel Lucent | Opportunistic information forwarding using wireless terminals in the internet-of-things |
US9954948B2 (en) * | 2014-07-11 | 2018-04-24 | Microsoft Technology Licensing, Llc | Private content distribution network |
US10290027B2 (en) * | 2014-09-29 | 2019-05-14 | Pandora Media, Llc | Dynamically selected background music for personalized audio advertisement |
US9986594B2 (en) * | 2014-12-16 | 2018-05-29 | Qualcomm Incorporated | IOT device to enable fast connection between low energy IOT devices |
US10282475B2 (en) * | 2014-12-18 | 2019-05-07 | Microsoft Technology Licensing, Llc | Generation of browser suggestions based on internet of things device data |
US9774507B2 (en) * | 2015-01-06 | 2017-09-26 | Afero, Inc. | System and method for collecting and utilizing user behavior data within an IoT system |
US20160205003A1 (en) * | 2015-01-08 | 2016-07-14 | Formcept Technologies and Solutions Private Limited | Method to provide inferred intentional data analysis to user(s), using IoT (Internet of Things) devices |
US10673959B2 (en) * | 2015-03-25 | 2020-06-02 | Intel Corporation | Accessing service of Internet of Things |
US10127579B2 (en) | 2015-06-02 | 2018-11-13 | Samsung Electronics Co., Ltd. | Personalizing advertisements based on proximate computing devices |
-
2015
- 2015-12-29 US US14/982,120 patent/US10127579B2/en active Active
- 2015-12-29 US US14/982,104 patent/US20160358215A1/en not_active Abandoned
- 2015-12-29 US US14/982,161 patent/US20160357764A1/en not_active Abandoned
-
2016
- 2016-08-24 US US15/245,378 patent/US20160364759A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040162804A1 (en) * | 2003-02-18 | 2004-08-19 | Michael Strittmatter | System and method for searching for wireless devices |
US20100130125A1 (en) * | 2008-11-21 | 2010-05-27 | Nokia Corporation | Method, Apparatus and Computer Program Product for Analyzing Data Associated with Proximate Devices |
US20130163027A1 (en) * | 2011-12-22 | 2013-06-27 | Xerox Corporation | Secure federation of cloud print services |
US9787778B2 (en) * | 2012-07-05 | 2017-10-10 | Aruba Networks, Inc. | Geographic proximity based service discovery |
US20140047487A1 (en) * | 2012-08-10 | 2014-02-13 | Qualcomm Incorporated | Ad-hoc media presentation based upon dynamic discovery of media output devices that are proximate to one or more users |
US20140344848A1 (en) * | 2013-05-20 | 2014-11-20 | Verizon Patent And Licensing Inc. | Device recommendation engine |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10127579B2 (en) | 2015-06-02 | 2018-11-13 | Samsung Electronics Co., Ltd. | Personalizing advertisements based on proximate computing devices |
US9959558B2 (en) * | 2015-08-18 | 2018-05-01 | Samsung Electronics Co., Ltd. | Application cards as advertisements |
US11575682B2 (en) * | 2019-09-26 | 2023-02-07 | Amazon Technologies, Inc. | Assigning contextual identity to a device based on proximity of other devices |
Also Published As
Publication number | Publication date |
---|---|
US20160364759A1 (en) | 2016-12-15 |
US20160358216A1 (en) | 2016-12-08 |
US20160358215A1 (en) | 2016-12-08 |
US10127579B2 (en) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160357764A1 (en) | Generating Search Results based on Proximate Computing Devices | |
US10353977B2 (en) | Computer-implemented method for automated operating-system-specific access to software functionality | |
US9483388B2 (en) | Discovery of application states | |
US10409454B2 (en) | Smart watch device and user interface thereof | |
US10296513B2 (en) | Accessing messaging applications in search | |
US10356077B2 (en) | Automated search result adaptation according to user account information | |
US10496717B2 (en) | Storing predicted search results on a user device based on software application use | |
US20160132596A1 (en) | Generating Search Results Based On Software Application Installation Status | |
US20160147765A1 (en) | Techniques for Using Similarity to Enhance Relevance in Search Results | |
US20160191338A1 (en) | Retrieving content from an application | |
US20170192644A1 (en) | Accessing Additional Search Results Functionality Using Gestures | |
WO2016109529A1 (en) | Viewing search results using multiple different devices | |
US20180232377A1 (en) | Search result relevance based on content associated with software applications | |
US10198518B2 (en) | Filtering search results using current software application states | |
US9984132B2 (en) | Combining search results to generate customized software application functions | |
US20170185656A1 (en) | Combining Search Results That Specify Software Application Functions | |
US20170169024A1 (en) | Searching and Accessing Software Application Functionality Using Application Connections | |
US10853470B2 (en) | Configuration of applications to desired application states | |
US20170192640A1 (en) | Using Search Results As Software Application Input Parameters | |
US20170171292A1 (en) | Generating Software Application Search Results Using Shared Application Connections | |
US10146879B2 (en) | Generating software application search results using application connection keywords | |
US20170169022A1 (en) | Generating Software Application Search Results Using Application Connections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: QUIXEY, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GLOVER, ERIC;NELSON, JOSEPH;REEL/FRAME:037985/0306 Effective date: 20160125 |
|
AS | Assignment |
Owner name: ALIBABA.COM U.S. INVESTMENT HOLDING CORPORATION, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:QUIXEY, INC.;REEL/FRAME:039521/0041 Effective date: 20160720 Owner name: ALIBABA.COM U.S. INVESTMENT HOLDING CORPORATION, C Free format text: SECURITY INTEREST;ASSIGNOR:QUIXEY, INC.;REEL/FRAME:039521/0041 Effective date: 20160720 |
|
AS | Assignment |
Owner name: QUIXEY, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:ALIBABA.COM U.S. INVESTMENT HOLDING CORPORATION;REEL/FRAME:044575/0410 Effective date: 20171023 |
|
AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUIXEY, INC.;REEL/FRAME:043972/0910 Effective date: 20171019 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |