U.S. patent application number 14/577602 was filed with the patent office on 2015-09-10 for accessing search results using multiple different devices.
This patent application is currently assigned to Quixey, Inc.. The applicant listed for this patent is Quixey, Inc.. Invention is credited to Tomer Kagan, Taher Savliwala, Liron Shapira.
Application Number | 20150254352 14/577602 |
Document ID | / |
Family ID | 54017345 |
Filed Date | 2015-09-10 |
United States Patent
Application |
20150254352 |
Kind Code |
A1 |
Kagan; Tomer ; et
al. |
September 10, 2015 |
Accessing Search Results Using Multiple Different Devices
Abstract
A method includes transmitting a search query from a searching
device to a search system and receiving search results from the
search system at the searching device in response to the search
query. Each search result indicates a function for a computing
device to perform. The method also includes displaying the search
results on the searching device, receiving a user selection of one
of the search results at the searching device, selecting one of a
plurality of performing devices using the searching device, and
transmitting an indication of the user selection from the searching
device to the selected performing device. The selected performing
device is configured to perform the function indicated by the
selected search result in response to receiving the indication.
Inventors: |
Kagan; Tomer; (Sunnyvale,
CA) ; Shapira; Liron; (Mountain View, CA) ;
Savliwala; Taher; (Mountain View, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Quixey, Inc. |
Mountain View |
CA |
US |
|
|
Assignee: |
Quixey, Inc.
Mountain View
CA
|
Family ID: |
54017345 |
Appl. No.: |
14/577602 |
Filed: |
December 19, 2014 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61948488 |
Mar 5, 2014 |
|
|
|
Current U.S.
Class: |
707/722 |
Current CPC
Class: |
G06F 16/9537 20190101;
G06F 3/0482 20130101; H04L 67/025 20130101; G06F 1/163 20130101;
G06F 16/248 20190101; G06F 3/04842 20130101; G06F 16/951 20190101;
G06F 16/957 20190101; G06F 3/04883 20130101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06F 3/0482 20060101 G06F003/0482; G06F 3/0484 20060101
G06F003/0484 |
Claims
1. A method comprising: transmitting, using a searching device, a
search query to a search system configured to generate search
results in response to a received search query; receiving search
results from the search system at the searching device in response
to the search query, wherein each search result indicates a
function for a computing device to perform; displaying the search
results on the searching device; receiving a user selection of one
of the search results at the searching device; selecting, using the
searching device, one of a plurality of performing devices; and
transmitting, using the searching device, an indication of the user
selection to the one of the plurality of performing devices,
wherein the one of the plurality of performing devices is
configured to perform the function indicated by the one of the
search results in response to receiving the indication.
2. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving a user
selection of a performing device of the plurality of performing
devices at the searching device, and selecting the performing
device as the one of the plurality of performing devices.
3. The method of claim 2, further comprising displaying an
indication of the performing device of the plurality of performing
devices on the searching device, wherein receiving the user
selection of the performing device comprises receiving a user
selection of the indication at the searching device.
4. The method of claim 3, wherein displaying the indication of the
performing device of the plurality of performing devices on the
searching device comprises displaying the indication along with the
one of the search results displayed on the searching device.
5. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving location data
that indicates the location of each of one or more of the plurality
of performing devices, and selecting the one of the plurality of
performing devices based on the location data.
6. The method of claim 5, wherein selecting the one of the
plurality of performing devices based on the location data
comprises identifying a performing device of the plurality of
performing devices that is located most proximate to the searching
device using the location data, and selecting the performing device
as the one of the plurality of performing devices.
7. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving availability
data that indicates whether each of one or more of the plurality of
performing devices is available to perform the function indicated
by the one of the search results, and selecting the one of the
plurality of performing devices based on the availability data.
8. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving compatibility
data that indicates whether each of one or more of the plurality of
performing devices is compatible with an access mechanism that
specifies the function indicated by the one of the search results,
and selecting the one of the plurality of performing devices based
on the compatibility data.
9. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving connectivity
data that indicates whether each of one or more of the plurality of
performing devices is connected to the searching device via a
communication interface, and selecting the one of the plurality of
performing devices based on the connectivity data.
10. The method of claim 1, wherein selecting the one of the
plurality of performing devices comprises receiving historical
connectivity data that indicates whether each of one or more of the
plurality of performing devices has been previously connected to
the searching device via a communication interface, and selecting
the one of the plurality of performing devices based on the
historical connectivity data.
11. The method of claim 1, wherein the one of the search results
includes an access mechanism, and wherein to perform the function
indicated by the one of the search results, the one of the
plurality of performing devices is configured to set an application
into a state of the application using the access mechanism.
12. A system comprising: a searching device; a plurality of
performing devices; and a search system, wherein the search system
is configured to receive a search query from the searching device
and transmit search results that are responsive to the search query
to the searching device, wherein the searching device is configured
to display the search results to a user, receive a user selection
of one of the search results from the user, select one of the
plurality of performing devices, and transmit an indication of the
user selection to the one of the plurality of performing devices,
wherein the one of the plurality of performing devices is
configured to perform a function indicated by the one of the search
results in response to receiving the indication.
13. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive a user selection of a performing device of the plurality
of performing devices at the searching device, and select the
performing device as the one of the plurality of performing
devices.
14. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive location data that indicates the location of each of one
or more of the plurality of performing devices, and select the one
of the plurality of performing devices based on the location
data.
15. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive availability data that indicates whether each of one or
more of the plurality of performing devices is available to perform
the function indicated by the one of the search results, and select
the one of the plurality of performing devices based on the
availability data.
16. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive compatibility data that indicates whether each of one or
more of the plurality of performing devices is compatible with an
access mechanism that specifies the function indicated by the one
of the search results, and select the one of the plurality of
performing devices based on the compatibility data.
17. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive connectivity data that indicates whether each of one or
more of the plurality of performing devices is connected to the
searching device via a communication interface, and select the one
of the plurality of performing devices based on the connectivity
data.
18. The system of claim 12, wherein to select the one of the
plurality of performing devices, the searching device is configured
to receive historical connectivity data that indicates whether each
of one or more of the plurality of performing devices has been
previously connected to the searching device via a communication
interface, and select the one of the plurality of performing
devices based on the historical connectivity data.
19. The system of claim 12, wherein the one of the search results
includes an access mechanism, and wherein to perform the function
indicated by the one of the search results, the one of the
plurality of performing devices is configured to set an application
into a state of the application using the access mechanism.
20. A computer program product encoded on a non-transitory computer
readable storage medium comprising instructions that when executed
by a data processing apparatus cause the data processing apparatus
to perform operations comprising: transmitting a search query to a
search system configured to generate search results in response to
a received search query; receiving search results from the search
system at the searching device in response to the search query,
wherein each search result indicates a function for a computing
device to perform; displaying the search results on the searching
device; receiving a user selection of one of the search results at
the searching device; selecting one of a plurality of performing
devices; and transmitting an indication of the user selection to
the one of the plurality of performing devices, wherein the one of
the plurality of performing devices is configured to perform the
function indicated by the one of the search results in response to
receiving the indication.
Description
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This U.S. patent application claims priority under 35 U.S.C.
.sctn.119(e) to U.S. Provisional Application 61/948,488, filed Mar.
5, 2014, which is hereby incorporated by reference in its
entirety.
TECHNICAL FIELD
[0002] This disclosure generally relates to the field of search,
and more particularly to generating, displaying, and accessing
search results on computing devices.
BACKGROUND
[0003] In recent years, the use of computers, smartphones, and
other Internet-connected computing devices has grown significantly.
Correspondingly, the number of software applications available for
such computing devices has also grown. Today, many diverse software
applications can be accessed on a number of different computing
devices, including, but not limited to, smartphones, personal
computers, automobiles, and televisions. These software
applications can include business driven applications, games,
educational applications, news applications, shopping applications,
messaging applications, media streaming applications, and social
networking applications, as some examples. Because of the large
number of software applications available today and the wide range
of functionality they provide, computing device users often require
the ability to search for and access specific software application
functionality.
SUMMARY
[0004] One aspect of the disclosure provides a method that includes
transmitting a search query from a searching device to a search
system configured to generate search results in response to a
received search query. The method further includes receiving search
results from the search system at the searching device in response
to the search query. Each search result indicates a function for a
computing device to perform. The method also includes displaying
the search results on the searching device, receiving a user
selection of one of the search results at the searching device,
selecting, using the searching device, one of a plurality of
performing devices, and transmitting an indication of the user
selection from the searching device to the one of the plurality of
performing devices. The one of the plurality of performing devices
is configured to perform the function indicated by the one of the
search results in response to receiving the indication.
[0005] Implementations of the disclosure may include one or more of
the following optional features. In some implementations, selecting
the one of the plurality of performing devices includes receiving a
user selection of a performing device of the plurality of
performing devices at the searching device, and selecting the
performing device as the one of the plurality of performing
devices. Optionally, the method further includes displaying an
indication of the performing device of the plurality of performing
devices on the searching device, and the receiving the user
selection of the performing device includes receiving a user
selection of the indication at the searching device. In some
examples, the displaying the indication of the performing device of
the plurality of performing devices on the searching device
includes displaying the indication along with the one of the search
results displayed on the searching device.
[0006] In some examples, the selecting the one of the plurality of
performing devices includes receiving location data that indicates
the location of each of one or more of the plurality of performing
devices, and selecting the one of the plurality of performing
devices based on the location data. The selecting the one of the
plurality of performing devices based on the location data
optionally includes identifying a performing device of the
plurality of performing devices that is located most proximate to
the searching device using the location data, and selecting the
performing device as the one of the plurality of performing
devices. In other examples, the selecting the one of the plurality
of performing devices includes receiving availability data that
indicates whether each of one or more of the plurality of
performing devices is available to perform the function indicated
by the one of the search results, and selecting the one of the
plurality of performing devices based on the availability data.
Additionally or alternatively, the selecting the one of the
plurality of performing devices may further include receiving
compatibility data that indicates whether each of one or more of
the plurality of performing devices is compatible with an access
mechanism that specifies the function indicated by the one of the
search results, and selecting the one of the plurality of
performing devices based on the compatibility data. Optionally, the
selecting the one of the plurality of performing devices includes
receiving connectivity data that indicates whether each of one or
more of the plurality of performing devices is connected to the
searching device via a communication interface, and selecting the
one of the plurality of performing devices based on the
connectivity data. In some examples, the selecting the one of the
plurality of performing devices includes receiving historical
connectivity data that indicates whether each of one or more of the
plurality of performing devices has been previously connected to
the searching device via a communication interface, and selecting
the one of the plurality of performing devices based on the
historical connectivity data.
[0007] In some examples, the one of the search results includes an
access mechanism, and to perform the function indicated by the one
of the search results, the one of the plurality of performing
devices is configured to set an application into a state of the
application using the access mechanism.
[0008] Another aspect of the disclosure provides a system includes
a searching device, a plurality of performing devices, and a search
system. The search system is configured to receive a search query
from the searching device and transmit search results that are
responsive to the search query to the searching device. The
searching device is configured to display the search results to a
user, receive a user selection of one of the search results from
the user, select one of the plurality of performing devices, and
transmit an indication of the user selection to the one of the
plurality of performing devices. In this example, the one of the
plurality of performing devices is configured to perform a function
indicated by the one of the search results in response to receiving
the indication.
[0009] This aspect may include one or more of the following
optional features. In some implementations, to select the one of
the plurality of performing devices, the searching device is
configured to receive a user selection of a performing device of
the plurality of performing devices at the searching device, and
select the performing device as the one of the plurality of
performing devices. Optionally, to select the one of the plurality
of performing devices, the searching device is configured to
receive location data that indicates the location of each of one or
more of the plurality of performing devices, and select the one of
the plurality of performing devices based on the location data.
[0010] In some examples, to select the one of the plurality of
performing devices, the searching device is configured to receive
availability data that indicates whether each of one or more of the
plurality of performing devices is available to perform the
function indicated by the one of the search results, and select the
one of the plurality of performing devices based on the
availability data. Additionally or alternatively, to select the one
of the plurality of performing devices, the searching device is
configured to receive compatibility data that indicates whether
each of one or more of the plurality of performing devices is
compatible with an access mechanism that specifies the function
indicated by the one of the search results, and select the one of
the plurality of performing devices based on the compatibility
data. Optionally, to select the one of the plurality of performing
devices, the searching device is configured to receive connectivity
data that indicates whether each of one or more of the plurality of
performing devices is connected to the searching device via a
communication interface, and select the one of the plurality of
performing devices based on the connectivity data. In some
examples, to select the one of the plurality of performing devices,
the searching device is configured to receive historical
connectivity data that indicates whether each of one or more of the
plurality of performing devices has been previously connected to
the searching device via a communication interface, and select the
one of the plurality of performing devices based on the historical
connectivity data. In some implementations, the one of the search
results includes an access mechanism, and to perform the function
indicated by the one of the search results, the one of the
plurality of performing devices is configured to set an application
into a state of the application using the access mechanism.
[0011] In yet another aspect of the disclosure provides a
non-transitory computer-readable storage medium including
instructions that cause one or more computing devices to transmit,
using a searching device, a search query to a search system
configured to generate search results in response to a received
search query. The instructions further cause the one or more
computing devices to receive search results from the search system
at the searching device in response to the search query. Each
search result indicates a function for a computing device to
perform. The instructions also cause the one or more computing
devices to display the search results on the searching device,
receive a user selection of one of the search results at the
searching device, select, using the searching device, one of a
plurality of performing devices, and transmit, using the searching
device, an indication of the user selection to the one of the
plurality of performing devices. The one of the plurality of
performing devices is configured to perform the function indicated
by the one of the search results in response to receiving the
indication.
[0012] 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.
BRIEF DESCRIPTION OF DRAWINGS
[0013] FIG. 1 is a schematic view of an example environment that
includes a searching device, multiple performing devices, and a
search system.
[0014] FIG. 2 is a flow diagram of an example method for performing
a search using a searching device and selecting a performing device
to access results of the search.
[0015] FIG. 3 is a functional block diagram of an example search
module of a search system.
[0016] FIG. 4 is a schematic view of an example function record of
a search system.
[0017] FIGS. 5A-5D are example graphical user interfaces (GUs) that
may be generated on a searching device.
[0018] FIGS. 6A-7D are schematic views of example GUIs that may be
generated on a searching device and different performing
devices.
[0019] FIGS. 8A-8C are schematic views of example GUs that may be
generated on a searching device.
[0020] FIG. 9 is a schematic view of an example GUI that includes
different user selectable links.
[0021] FIGS. 10A-11B are schematic views of example arrangements of
a searching device and multiple performing devices in communication
with a search system.
[0022] FIGS. 12A-12B are schematic views of example arrangements of
a searching device, multiple performing devices, and an
intermediate device in communication with a search system.
[0023] FIG. 13 is a flow diagram of an example method for
performing a search for function records based on a received search
query.
[0024] FIGS. 14-15 are flow diagrams of example methods each
describing operation of a searching device.
[0025] FIG. 16 is a flow diagram of an example method describing
operation of a performing device.
[0026] FIG. 17 is a functional block diagram of an example
searching device and an example performing device in communication
with a search system.
DETAILED DESCRIPTION
[0027] The present disclosure generally relates to the field of
search, and, more particularly, to techniques for generating,
displaying, and accessing search results on different computing
devices. Specifically, the techniques of this disclosure are
directed to performing a search for software applications using a
single user device (e.g., a "searching device") and performing
functions indicated by search results generated as part of the
search using any of multiple different user devices (e.g., "a
plurality of performing devices"). According to the techniques
disclosed herein, the searching device may transmit a search query
to a search system configured to generate search results in
response to a received search query. For example, the searching
device may receive the search query from a user of the searching
device. The searching device may subsequently receive search
results from the search system in response to the transmitted
search query. In this example, each search result may indicate a
function for a computing device (e.g., a performing device) to
perform. For instance, each search result may include an access
mechanism that, upon being received by a computing device, causes
the computing device to set a software application included on the
computing device into a particular application state. The searching
device may display the received search results to the user. The
searching device may further receive a user selection of one of the
displayed search results by the user. The searching device may also
select one of the plurality of performing devices. For example, the
searching device may select the one of the plurality of performing
devices based on one or more of a user input, location data,
availability data, compatibility data, connectivity data, and
historical connectivity data associated with the selected
performing device. The searching device may subsequently transmit
an indication of the user selection to the selected performing
device. In this example, the selected performing device may be
configured to perform the function indicated by the one of the
displayed search results in response to receiving the indication.
For example, the selected performing device may be configured to
set a software application included on the selected performing
device into a particular application state using an access
mechanism included in the one of the displayed search results, as
described above.
[0028] A software application as described herein may refer to
computer software that causes a computing device to perform a task.
In some examples, a software application may be referred to as an
"application," an "app," or a "program." Example applications
include, but are not limited to, word processing applications,
spreadsheet applications, messaging applications, media streaming
applications, social networking applications, and games.
[0029] Applications can be executed on a variety of different
computing devices. For example, applications can be executed on
mobile computing devices such as smart phones, tablets, and
wearable computing devices (e.g., headsets and/or watches, such as
so-called "smart watches"). Applications can also be executed on
other types of computing devices having other form factors, such as
laptop computers, desktop computers, computing devices that are
installed in vehicles (e.g., so-called "vehicle navigation
systems"), or other consumer electronic devices. In some examples,
applications may be installed on a computing device prior to a user
purchasing the computing device. In other examples, the user may
download and install applications on the computing device after
purchasing the computing device.
[0030] The functionality of an application may be accessed on the
computing device on which the application is installed.
Additionally, or alternatively, the functionality of an application
may be accessed via a remote computing device. In some examples,
all of an application's functionality may be included on the
computing device on which the application is installed. These
applications may function without communication with other
computing devices (e.g., via the Internet). In other examples, an
application installed on a computing device may access information
from other remote computing devices during operation. For example,
a weather application installed on a computing device may access
the latest weather information via the Internet and display the
accessed weather information to the user through the installed
weather application. In still other examples, an application (e.g.,
a web-based application) may be partially executed by the user's
computing device and partially executed by a remote computing
device. For example, a web-based application may be an application
that is executed, at least in part, by a web server and accessed by
a web browser of the user's computing device. Example web-based
applications may include, but are not limited to, web-based email,
online auctions, and online retail sites.
[0031] As explained above, the present disclosure is directed to
techniques for generating search results on a single user computing
device and performing operations, or functions, indicated by the
search results on any of multiple different user computing devices.
In some examples described herein, a user may select a search
result on a first computing device (e.g., a smart watch) that then
causes a second computing device (e.g., a smart phone, or tablet)
to perform one or more operations, or functions, indicated by the
selected search result. In some examples, the user and/or the first
computing device may select the second computing device from among
multiple different computing devices. In some scenarios, the user
may be in proximity to both the first and second computing devices.
For example, the first computing device may be a wearable computing
device (e.g., a smart watch on the user's wrist). In this example,
the second computing device may be a mobile computing device (e.g.,
a smart phone in the user's pocket, or a tablet in the user's
palm), or another type of computing device located in proximity to
the user (e.g., a vehicle navigation system installed in the user's
vehicle, or a television or personal computer present in the user's
home). In other examples, the first computing device may be a
mobile computing device, such as a smart phone, or a tablet, and
the second computing device may be another computing device, such
as a smart watch, a vehicle navigation system, a television, or a
personal computer.
[0032] According to the techniques disclosed herein, a user enters
a search query into a first computing device. The first computing
device, which receives the search query, maybe be referred to
herein as a "searching device." The searching device transmits the
search query to a search system. In one example, the searching
device may transmit the search query to the search system via
another user computing device (e.g., a "performing device," or
another intermediate computing device, which are described below)
to which the searching device is tethered. The searching device
being tethered to another user computing device, as described
herein, may refer to the searching device being communicatively
coupled to the other user computing device using a short-range
wired and/or wireless communication interface or connection, such
as, e.g., USB, Bluetooth.RTM., Ethernet (e.g., LAN), and/or
Wi-Fi.RTM. (e.g., wireless LAN (WLAN)). In this example, the other
user computing device may then transmit the search query received
from the searching device to the search system via the Internet. In
another example, the searching device may not be tethered to
another user computing device, but instead the searching device may
be configured to connect to the search system directly via the
Internet (e.g., via a cellular network, Wi-Fi.RTM., and/or another
wireless technology) and transmit the search query to the search
system. The search system generates search results in response to
receiving the search query and transmits the generated search
results to the searching device. The searching device can then
display the search results to the user. A search result that is
displayed to the user may be referred to herein as a "displayed
search result," or a "displayed result."
[0033] The user can select a displayed result on the searching
device. The user and/or the searching device can further select one
of a plurality of computing devices as a second computing device to
perform operations, or functions, associated with the selected
result. In response to selection of the displayed result, the
searching device indicates to the second computing device that the
displayed result has been selected. The displayed result that is
selected by the user on the searching device may be referred to
herein as a "selected search result," or a "selected result." The
second computing device, which receives the indication from the
searching device that the user has selected the displayed result,
may be referred to herein as a "performing device." The performing
device performs one or more operations, or functions, according to
the selected result in response to receiving the indication from
the searching device. For example, the performing device can launch
a native application included on the performing device and set the
native application into a state indicated by the selected result.
The user that entered the search query into the searching device
can then view and interact with the launched native application on
the performing device. In another example, instead of launching a
native application, the performing device can show an expanded view
of the selected result (e.g., a view that includes more image/text
content and/or detail and graphical user interface (GUI)
input/output options compared to the selected result). Displaying
the expanded view of the selected result may be beneficial in
scenarios where the user would like to view the selected result on
a larger screen, assuming that the searching device (e.g., a smart
watch) has a relatively limited display screen size and that the
performing device (e.g., a smart phone, or a tablet) has a
relatively larger display screen size.
[0034] The techniques of the present disclosure may be implemented
for various different network topology arrangements of the
searching device, multiple performing devices, and the search
system. In some examples (e.g., FIG. 11A), the searching device may
be tethered to a performing device such that the searching device
communicates with the search system via the performing device. For
example, the searching device may communicate with the performing
device via a short-range wired connection (e.g., USB) or a
short-range wireless connection (e.g., Bluetooth.RTM.), and the
performing device may communicate with the search system via the
Internet (e.g., via a cellular network, or a home router). In other
examples (e.g., FIG. 10A), the searching device and the multiple
performing devices may independently communicate with the search
system. For example, the searching device and the multiple
performing devices may have their own separate wireless internet
connections that each enable communication with the search system
via the Internet. The separate wireless connections may be wireless
connections to the same wireless router at home, for example. The
separate wireless connections may also be different types of
wireless connections, depending on the connectivity options
available on the searching device and the multiple performing
devices. For example, the searching device may be configured to
communicate with the Internet via a cellular radio, or network,
connection and one or more of the multiple performing devices may
be configured to communicate with the Internet via a Wi-Fi.RTM.
connection.
[0035] While in some examples, a searching device of the present
disclosure can indicate a selected result to one of multiple
performing devices, in other examples, the searching device may
indicate a selected result to each of multiple different performing
devices. In these examples, each of the multiple performing devices
can perform a function indicated by the searching device (i.e., by
the corresponding selected result), such as opening, or launching,
native applications and/or a web browser to a state indicated by
the searching device (i.e., by the selected result).
[0036] The search results generated by the search system include
one or more result objects. A single result object may refer to
data associated with a single search result (e.g., a single
displayed result, or a single selected result). The search system
transmits the result objects to the searching device. The searching
device then generates one or more displayed results using the
result objects. For example, the searching device may generate one
displayed result for each result object received from the search
system. In some implementations, the searching device may display
only a single displayed result at a time (e.g., as shown in FIGS.
5B-5D). For example, if the searching device has a relatively small
screen size (e.g., as in the case of a wrist watch computing
device, such as a smart watch), then it may be beneficial to fill
the entire display of the searching device with a single displayed
result. In this example, a user may use a gesture (e.g., a swipe)
on a touchscreen of the searching device, or interact with a
physical button of the searching device, in order to show another
single displayed result, such as a next displayed result in an
order of the displayed results. While in some examples, the
searching device may be configured to show only a single displayed
result, in other examples, the searching device maybe configured to
display multiple different displayed results at a time (e.g., as
shown in FIG. 9). For example, the searching device may display a
list of multiple displayed results, e.g., according to the order of
the displayed results. The user may select one of the displayed
results from the list. Additionally, the user may interact with the
list to scroll through the list using a gesture (e.g., a swipe) on
a touchscreen of the searching device, or interact with a physical
button of the searching device.
[0037] A result object may include a variety of different data
described herein. A result object may include one or more access
mechanisms for accessing functionality of an application. For
example, a result object may include on or more application access
mechanisms (AAMs). Additionally, or alternatively, a result object
may include a web access mechanism (WAM). In some examples, a
result object may include an application download address. AAMs,
WAMs, and application download addresses are described in greater
detail below. A result object may also include additional data used
by the searching device to generate a displayed result. For
example, a result object can include text and/or images that may be
displayed in the displayed result. The text and/or images displayed
to a user may indicate the operations, or function, that will be
performed in response to selection of the displayed result. For
example, if the displayed result is for a song in a music playing
application, the text and/or images may identify the music playing
application that will be launched by a performing device and the
song that will be played by the music playing application when the
user selects the displayed result. Example displayed results are
illustrated in FIGS. 5A-9.
[0038] A result object may also include data (e.g., instructions)
that defines how to render a displayed result. The searching device
can render a displayed result based on such data included in a
result object corresponding to the displayed result. The result
object can include data that defines the graphical aspects (e.g.,
formatting and arrangement) of the displayed result, such as the
layout of text, images, and animations in the displayed result. In
some examples, the data that defines how to render the displayed
result may be device-specific data that indicates different
formatting and arrangement depending on the display capabilities of
the searching device. For example, if the searching device has a
relatively smaller display (e.g., a smart watch display), then the
formatting and arrangement data may indicate how to render the
displayed result on the smaller display (e.g., as one displayed
result per screen of the smaller display). If the searching device
has a relatively larger display, the formatting and arrangement
data may indicate how to render the displayed result on the larger
display (e.g., as an entry in a list of multiple displayed
results). In other examples, the searching device may receive a
result object that does not include formatting and arrangement
data. In these examples, the searching device (e.g., a native
application, a web browser, and/or an operating system (OS) of the
searching device) may determine how to format a displayed result
corresponding to the received result object.
[0039] A result object can include data that defines additional
user interface elements, such as user inputs and outputs. Example
user inputs may include, but are not limited to, graphical buttons,
text boxes, and menus (e.g., drop down menus). Example user outputs
may include GUI elements configured to display text and/or graphics
to the user. A result object can also include data that defines how
to retrieve information from the Internet (e.g., an application
server, a web server, and/or the search system). For example,
portions of a displayed result generated for a result object
received in response to a search query may be populated in
real-time after the search query is transmitted (i.e., after the
result object is received and the displayed result is generated).
In this example, the result object may include data that instructs
the searching device where to obtain the real-time data (e.g., via
a web address). The real-time data may include a variety of
different types of data, including, but not limited to, weather
data, ticket availability, stock market data, restaurant table
availability, and current taxi locations. A result object can also
include instructions for performing calculations, such as
calculations based on a user input. For example, a result object
may include data used to render a calculator (e.g., scientific
and/or graphing), or a similar mathematical interface, within a
corresponding displayed result. Example data included in a result
object may be generated by the search system according to a
function record described with respect to FIG. 4.
[0040] A result object can further include data (e.g.,
instructions) that defines how the searching device indicates
selection of the displayed result to a performing device. In
examples where the searching device is directly connected (e.g.,
wirelessly via Bluetooth.RTM.) to the performing device, the
searching device can indicate a selection of a displayed result to
the performing device via the direct connection, as illustrated in
FIGS. 11A-11B and 12B. In examples where the searching device is
not directly connected (e.g., via a wireless connection, or a wired
connection) to the performing device (e.g., FIG. 10A), the
searching device can indicate a selection of a displayed result to
the performing device by transmitting an indication of the
selection to the performing device via the Internet, or a more
local network, such as a home or business network (e.g., LAN or
WLAN).
[0041] The indication of the selected result sent from the
searching device to the performing device can include a variety of
different types of data. In some examples, the indication may
include one or more access mechanisms (e.g., AAM(s), WAM(s), and/or
application download address(es)). For example, the searching
device may transmit one or more AAMs of the selected result to the
performing device so that the performing device can access a state
of a native application installed on the performing device. In this
example, the searching device may transmit an application download
address also included in the selected result to the performing
device so that the performing device can download and install the
native application. In another example, the searching device may
transmit a WAM of the selected result to the performing device so
that the performing device can access a web address (e.g., a URL)
using a web browser installed on the performing device. In examples
where the searching device receives the search results via the
performing device (e.g., via the tethered connection of FIG. 11A),
the searching device may not need to transmit an access mechanism,
but instead may indicate to the performing device which search
result (e.g., via a rank number) has been selected by the user. In
these examples, since the performing device relays the search
results to the searching device, the performing device may already
have one or more access mechanisms included in the search results
stored in the performing device. This may allow the searching
device to simply indicate which search result has been selected by
the user without explicitly transmitting an access mechanism for
the selected result. In still another example, the searching device
may transmit a function identifier (ID) to the performing device.
In this example, the performing device may use the function ID to
access a function record used by the search system to generate the
selected result. The performing device may then select one or more
access mechanism associated with the search result from the
identified function record.
[0042] The indication transmitted by the searching device to the
performing device may indicate one or more operations for the
performing device to perform. As described above, the indication
may either include an access mechanism (e.g., an AAM, a WAM, and/or
an application download address), or specify a location from which
the access mechanism can be retrieved. For example, an AAM may be a
string that includes a reference to a native application and
indicates one or more operations for the performing device (e.g.,
the native application) to perform. A WAM may include a resource
identifier (e.g., a URL) that directs a web browser of the
performing device to a web resource. An application download
address may include data used by the performing device to download
a native application referenced in an AAM (e.g., from a digital
distribution platform). AAMs, WAMs, and application download
addresses are described in greater detail hereinafter.
[0043] Transmission of the indication of the selected result from
the searching device to the performing device may involve a variety
of different network paths. In examples where the searching device
is directly connected to the performing device via a wired
connection (e.g., USB) or a wireless connection (e.g., a
short-range wireless connection such as Bluetooth.RTM.)), the
searching device may transmit the indication to the performing
device via the direct connection (e.g., via the wired connection or
short-range wireless connection). In examples where the searching
device is not directly connected to the performing device, the
searching device may transmit the indication to the performing
device via a network. For example, the searching device may
transmit the indication to the performing device via the Internet.
As another example, the searching device may transmit the
indication to the performing device through a more local network
(e.g., a home network, such as a LAN or WLAN). In still other
examples, the searching device may transmit the indication to the
search system and the search system may then transmit the
indication to the performing device.
[0044] In examples where the searching device indicates a function
ID to the performing device, the searching device may transmit the
function ID directly to the performing device, which may then
retrieve one or more access mechanisms included in the
corresponding function record from the search system. In another
example, the searching device may transmit the function ID to the
performing device via the Internet or a more short-range network
(e.g., a business or home network), and the performing device can
send the function ID to the search system to retrieve the access
mechanisms from the search system. In another example, the
searching device may transmit the function ID to the search system,
which may then transmit the access mechanisms to the performing
device.
[0045] The searching device generates displayed results based on
data included in result objects received by the searching device.
For example, with respect to FIGS. 5B-5D, the searching device may
generate a single displayed result based on data included in a
single result object received by the searching device. In some
examples, the searching device may generate multiple displayed
results on the display of the searching device at one time. For
example, with respect to FIG. 9, multiple different displayed
results are viewable by the user on the display of the searching
device at one time.
[0046] In some examples, the searching device may generate only a
single displayed result at a time. For example, the single
displayed result may occupy the entire viewable area of the display
of the searching device. Put another way, in some examples, the
searching device may be configured to display only one displayed
result at a time. The searching device may be configured to display
only a single displayed result in scenarios where the searching
device has limited display area. For example, if the searching
device is a wearable computing device (e.g., a wrist watch
computing device, such as a smart watch), then the display of the
searching device may be limited in size (e.g., have a screen
diagonal size of 2 inches or less in some cases). In these
examples, generating a single displayed result may allow the user
to fully view the displayed result and easily assess whether the
displayed result is desirable for the user to select.
[0047] The way in which a user selects a displayed result may vary
depending on the format of the displayed result. In some examples,
a user may select a displayed result by touching (e.g., tapping) a
portion of the displayed result. For example, the user may select
the displayed result by touching the portion of the display of the
searching device including the displayed result. In examples where
the searching device displays only a single search result, the user
may select the single displayed result by touching anywhere on the
display. In still other examples, the displayed result may include
regions that are indicated as places where the user may tap to
select the displayed result. For example, the displayed result may
include a button graphic (e.g., the button including the string
"Navigate (Car)" of FIG. 5B) that indicates where the user can tap
to select the displayed result. In some examples, the displayed
result may include text and/or images that indicate the action that
will be taken when the user interacts with the displayed result.
For example, the displayed result may indicate a native application
that will be launched on a performing device, a web location that
will be accessed using a web browser of the performing device, or
an expanded view that will be shown on the performing device.
[0048] As described above, the searching device may transmit an
indication of a user's selection of a displayed result (i.e., an
indication of a selected result) to one of a plurality of different
a performing devices. In some examples, the searching device may
automatically select the performing device. For example, if the
searching device is tethered to the performing device, the
searching device may automatically transmit the indication to the
performing device in response to the user's selection of the
displayed result. In other examples, the searching device may
prompt the user to select the performing device. For example, after
the user selects the displayed result, the searching device may
display indications (e.g., names or descriptions) of one or more
different possible performing devices from which the user may
select the performing device. The user may then select the
performing device from the one or more different possible
performing devices. In response to the user's selection of the
performing device, the searching device may transmit the indication
to the selected performing device.
[0049] In some scenarios, there may be multiple possible performing
devices that the user may wish to use to perform a function
indicated by the selected result. In some examples, the searching
device may detect the multiple possible performing devices. For
example, the searching device may detect a performing device based
on a wired connection (e.g., USB) or a wireless connection (e.g., a
Bluetooth.RTM. connection) with the performing device. In some
examples, the searching device may maintain a list of possible
performing devices that the user may use (e.g., based on a previous
connection to the searching device). For example, the list may
include a mobile device (e.g., a smartphone or a tablet), a laptop,
or a desktop computing device. The searching device may display one
or more of the possible performing devices from the list to the
user. In some examples, the searching device may maintain a history
of performing devices to which the searching device has transmitted
indications of selected results in the past.
[0050] In some examples, a performing device may be determined by
the searching device and/or the search system based on a relative
geo-location of the searching device and the performing device. For
example, the searching device may determine which computing devices
are near (e.g., in the same location, or within a short distance
from) the searching device (e.g., based on geo-location, such as
geographic coordinates obtained from a GPS module) and then
transmit an indication of a selected result to the performing
device(s) that are near the searching device. In some examples, the
search system may facilitate the above-described geo-location
determination made by the searching device. For example, the search
system may determine the geo-location of the searching device based
on geo-location data included in the query wrapper received from
the searching device. The search system may also maintain
communication with one or more possible performing devices to
determine the geo-location of the possible performing device(s).
For example, the possible performing device(s) may include software
that communicates their positions to the search system. Using the
geo-location of the searching device and the possible performing
device(s), the search system may determine which of the possible
performing device(s) are near the searching device and transmit an
indication of this determination to the searching device.
Alternatively, the search system may transmit the geo-location of
the possible performing device(s) to the searching device so that
the searching device may make this determination.
[0051] FIG. 1 illustrates an example environment that includes a
search system 100, user devices 102, one or more data sources 104,
and a network 106. In the example environment of FIG. 1, the search
system 100 includes a data store 108 and a search module 110. Also
in this example, the user devices 102 include a searching device
112 and multiple performing devices 114. The data source(s) 104 are
described in greater detail below with reference to FIG. 3.
According to the techniques disclosed herein, a user device 102
(e.g., the searching device 112) receives a search query from a
user of the user device 102 (e.g., via a user interface of the user
device 102) and transmits the search query to the search system
100. In some implementations, the user device 102 includes the
search query in a query wrapper. The search system 100 receives the
search query from the user device 102 and generates one or more
search results (e.g., one or more result objects) in response to
receiving the search query. The search system 100 transmits the
search results (e.g., the result objects) to the user device 102
that provided the search query. The data store 108 and the search
module 110 included in the search system 100 are used to generate
the result objects, as described herein. Operation of an example
search system 100 including the data store 108 and the search
module 110 is now described.
[0052] In some implementations, the searching device 112 may
transmit additional data along with the search query. In these
implementations, the searching device 112 may include the
additional data and the search query in a query wrapper. The query
wrapper may include the search query as well as data associated
with the search query. Examples of the additional data can include,
but are not limited to, geo-location data (e.g., data indicating
the location of the searching device 112), platform data (e.g., a
version of an OS of the searching device 112, a device type of the
searching device 112, such as a smart watch, a smart phone, or a
tablet, and a version of a web browser of the searching device
112), an identity of a user of the searching device 112 (e.g., a
username), partner specific data, and other data. The searching
device 112 transmits the query wrapper to the search system 100.
The search system 100 can use the search query and/or the
additional data included in the query wrapper to generate the
search results.
[0053] In some examples described herein, the searching device 112
can transmit the query wrapper to one of the performing devices
114. This may be the case if the searching device 112 connects to
the Internet, thereby connecting to the search system 100, via the
performing device 114. In examples where the performing device 114
receives the query wrapper from the searching device 112, the
performing device 114 may modify the query wrapper generated by the
searching device 112 and transmit the modified query wrapper to the
search system 100. For example, the performing device 114 may add,
remove, or otherwise modify data included in the query wrapper
received from the searching device 112. In some examples, the
performing device 114 may add data to the query wrapper indicating
information related to the performing device 114. For example, the
performing device 114 may add data to the query wrapper such as
geo-location data (e.g., indicating the location of the performing
device 114), platform data (e.g., indicating a version of an OS of
the performing device 114, a device type of the performing device
114, and a version of a web browser of the performing device 114),
and an identity of a user of the performing device 114 (e.g., a
username). In these examples, the query wrapper received by the
search system 100 from the performing device 114 may include data
related to both the searching device 112 and the performing device
114. Accordingly, the search system 100 may determine specific
information for each of the computing devices, such as an OS of
each device, a geo-location of each device, and a device type of
each device. For example, the search system 100 may determine
whether the searching device 112 and the performing device 114
include a wearable computing device (e.g., a smart watch, a
head-mounted display, such as so-called "smart glasses," or
so-called "smart contact lenses"), a smart phone, a tablet
computing device, a laptop computing device, or a desktop computing
device. As described herein, in some examples, the search system
100 may format the search results (e.g., the result objects)
transmitted by the search system 100 to the searching device 112
based on the device type, or any other properties, of the searching
device 112 and/or the performing device 114 indicated by the data
included in the query wrapper. As one example, the search system
100 may use the device type of the searching device 112 indicated
by the query wrapper to generate formatting data to be included in
the search results. The formatting data may define how the search
results will be displayed on the searching device 112, as described
herein. As another example, the search system 100 may use the
device type of the performing device 114 indicated by the query
wrapper to include one or more access mechanisms (e.g., an AAM, a
WAM, and/or an application download address) that are compatible
with the performing device 114 in the search results, as also
described herein.
[0054] The search system 100 includes the data store 108 that the
search system 100 uses to generate the search results. The data
store 108 includes one or more different function records (e.g.,
the function record 400 of FIG. 4). Each function record may
include data related to a function of a native application and/or a
state of the native application resulting from performance of the
function. As described herein, a function record may include a
function ID, application state information (ASI), one or more
access mechanisms, and other result object data described above.
The access mechanisms can include, but are not limited to, one or
more AAMs, one or more WAMs, and/or one or more application
download addresses. The function records described herein may
include additional data in some examples. In other examples, the
function records may include less data than that illustrated in
FIG. 4. For example, a function record may include an AAM, but not
include a WAM. In another example, a function record may include a
WAM, but not include an AAM. In some examples, a function record
may include multiple different AAMs.
[0055] An AAM may be a string that includes a reference to a native
application and indicates one or more operations for a user device
102 (e.g., one of the performing devices 114) to perform. In
response to selection of the AAM by a user on the searching device
112, the performing device 114 may launch the native application
referenced in the AAM and perform the one or more operations
indicated by the AAM. For example, the performing device 114 may
perform the one or more operations to set the native application
into a particular state.
[0056] Native applications can perform a variety of different
functions for a user. For example, a restaurant reservation
application can make reservations for restaurants. As another
example, an internet media player application can stream media
(e.g., a song, or a movie) from the Internet. In some examples, a
single native application can perform more than one function. For
example, a restaurant reservation application may allow a user to
retrieve information about a restaurant, read user reviews for the
restaurant, and view a menu of the restaurant. As another example,
an internet media player application may allow a user to perform
searches for digital media, purchase digital media, stream digital
media, and generate digital media playlists.
[0057] An AAM includes data which a user device 102 (e.g., one of
the performing devices 114) can use to access functionality
provided by a native application. For example, an AAM can include
data that causes a performing device 114 to launch a native
application installed on the performing device 114 and perform a
function associated with the native application. Performance of a
function according to an AAM may set a native application into a
specified state. Accordingly, the process of launching a native
application and performing a function according to an AAM may be
referred to herein as launching the native application and setting
the native application into a state that is specified by the AAM.
In one example, an AAM for a restaurant reservation application can
include data that causes a performing device 114 to launch the
restaurant reservation application and make a reservation at a
restaurant or indicate available reservation times. In this
example, the restaurant reservation application may be set in a
state that displays reservation information to a user, such as a
reservation time, a description of the restaurant, and user
reviews. In another example, an AAM for an internet media player
application can include data that causes a performing device 114 to
launch the interment media player application and stream media from
the Internet. In this example, the internet media player
application may be set in a state that displays information
regarding the media (e.g., music) being streamed, such as a song
name, an artist name, or an album name.
[0058] AAMs may have various different formats and content. The
format and content of an AAM may depend on the native application
with which the AAM is associated and the operations that are to be
performed by the native application in response to selection of the
AAM. For example, an AAM for an internet music player application
may differ from an AAM for a shopping application. The AAM for the
internet music player application may include references to musical
artists, songs, and albums, for example. The AAM for the internet
music player application may also reference operations, such as
randomizing a list of songs and playing a song or album. The AAM
for the shopping application may include references to different
products that are for sale. The AAM for the shopping application
may also include references to one or more operations, such as
adding products to a shopping cart and proceeding to a
checkout.
[0059] A user may select a displayed result on the searching device
112 to cause one of the performing devices 114 to launch the native
application identified in the displayed result and perform one or
more operations according to the AAM associated with the displayed
result. Put another way, when a user selects a displayed result on
the searching device 112, the performing device 114 launches a
native application installed on the performing device 114 and sets
the native application into a state defined by the AAM associated
with the displayed result. In general, a state of a native
application may refer to one or more operations and/or the
resulting outcome of the native application performing the
operations in response to a user selection of a displayed result. A
state of a native application may also be referred to herein as an
"application state."
[0060] An application state of a native application specified by an
AAM may depend on the functionality provided by the native
application. For example, if a native application is configured to
retrieve and display information from an external resource (e.g., a
web server) via the Internet, the native application can be set
into a state in which the native application retrieves information
from the external source via the Internet and displays the
information to the user. In another example, if a native
application is configured to play media from an external resource
via the Internet (e.g., music and/or video), the native application
can be set into a state in which the native application is playing
a song or a movie from the external resource via the Internet. In
another example, if a native application is configured to make
restaurant reservations, the native application can be set into a
state in which the native application displays available restaurant
reservations to the user.
[0061] An AAM included in a function record includes data that
causes a user device 102 (e.g., one of the performing devices 114)
to launch a native application and perform a function associated
with the native application. For example, an AAM included in a
function record may be a string that includes a reference to a
native application and indicates one or more operations for a
performing device 114 (e.g., the native application) to perform. An
AAM may include an application resource identifier (ARI) and/or one
or more operations for a performing device 114 to perform. An ARI
may be a string having an application specific scheme in some
examples. The ARI may include a reference to a native application
and indicate one or more operations for a performing device 114
(e.g., the native application installed on the performing device
114) to perform. For example, the ARI may include a reference to
the native application, a domain name, and a path to be used by the
native application to retrieve and display information to the user.
An example ARI is described with reference to the function record
400 of FIG. 4.
[0062] In some examples, an AAM may include operations for a
performing device 114 to perform in addition to one or more
operations indicated by an ARI of the AAM. For example, a native
application installed on a performing device 114 and/or an OS of
the performing device 114 may perform these additional operations
included in the AAM. In some examples, the operations may be
included in a script. Examples of the operations may include, but
are not limited to, launching a native application, creating and
sending a search request to an application server, setting a
current geographic location in a native application, making a
restaurant reservation, sending a text message, and adding an
appointment to a calendar.
[0063] In some examples, an AAM may not include an ARI. Instead,
the AAM can include one or more operations that reference a native
application and indicate one or more operations for a performing
device 114 to perform. The one or more operations may include
instructions for the native application and/or an OS of the
performing device 114. In response to selection of the AAM, the
performing device 114 may perform the operations included in the
AAM.
[0064] A function ID included in a function record may be a string
that uniquely identifies the function record among other function
records included in the data store 108. In some examples, the
function ID may describe a function and/or an application state in
human-readable form. For example, the function ID may be a
human-readable string that describes a function performed according
to an AAM and/or an application state resulting from performance of
the function according to the AAM. In a more specific example, a
function ID of a function record that describes a song within an
internet music player application may include a name of the
internet music player application along with a name of the song
that will be played when the internet music player application is
set into an application state defined by an AAM included in the
function record. An example function ID is described with reference
to the function record 400 of FIG. 4.
[0065] A function record includes ASI. The ASI includes data that
describes an application state into which a native application is
set according to an AAM included in the function record. In some
examples, the ASI may include data that describes a function
performed according to the AAM included in the function record. The
ASI can include text, numbers, and symbols that describe the
application state or function. The types of data included in the
ASI may depend on the type of information associated with the
application state and the functionality specified by the AAM.
[0066] In some examples, the ASI includes data that is presented to
the user when the native application is in the application state
defined by the AAM. For example, a function record associated with
a shopping application can include ASI that describes products
(e.g., names and prices) that are shown when the shopping
application is set into an application state defined by an AAM of
the function record. As another example, a function record
associated with a music player application can include ASI that
describes a song (e.g., name and artist) that is played when the
music player application is set into an application state defined
by an AAM of the function record.
[0067] The ASI included in a function record may be generated in a
variety of different ways. In one example, data to be included in
the ASI may be retrieved via partnerships with database owners and
developers of native applications. For example, the data may be
automatically retrieved from online databases that include, but are
not limited to, data related to movies, television programs, music,
and restaurants. In some examples, some data included in the ASI
may be manually generated by a human operator. The data included in
the ASI may be updated over time so that the search system 100
provides up-to-date search results.
[0068] The search system 100 generates one or more search results
including one or more result objects using the function records
included in the data store 108. Initially, the search system 100
analyzes a search query received from the searching device 112. The
search system 100 then identifies a set of function records
included in the data store 108 based on the received search query.
The identified set of function records may be referred to herein as
a "consideration set." For example, the search system 100 may
identify the consideration set based on one or more matches (e.g.,
text matches) between one or more terms of the search query and one
or more terms of the ASI included in the function records of the
consideration set.
[0069] The search system 100 processes (e.g., scores) the
consideration set. For example, the search system 100 may determine
how well the function records of the consideration set match the
received search query. In a specific example, the search system 100
may determine how well terms of the search query match terms of ASI
of the identified function records of the consideration set using
Lucene.RTM. information retrieval software developed by the Apache
Software Foundation. The search system 100 may then select one or
more function records that best match the received search query
(e.g., the highest-scoring function records) from the consideration
set to use in generating the result objects. The search system 100
then generates the result objects based on the selected function
records. For example, the search system 100 may select access
mechanisms (e.g., AAMs, WAMs, and application download addresses)
from the selected function records to include in the result
objects. The search system 100 then transmits the result objects to
the searching device 112 that generated the search query. The
searching device 112 receives the search results including the
result objects, displays the search results to a user, detects a
user selection of one of the displayed results, selects one of the
performing devices 114, and transmits an indication of the user
selection to the selected performing device 114. The selected
performing device 114 performs a function associated with the
selected result in response to receiving the indication, as
described herein.
[0070] As described above, the function records of the present
disclosure are not required to have the format shown in FIG. 4. For
example, the function records may include additional information in
addition to that included in the function record of FIG. 4. In some
examples, the function records may include less data than that
included in the function record of FIG. 4. For example, a function
record may include a single AAM and no WAM. In other examples, a
function record may include multiple AAMs and no WAM. In still
other examples, a function record may include a WAM but not an
AAM.
[0071] FIG. 2 is a flow diagram that illustrates an example method
200 for performing a search using a searching device 112 and
selecting a separate performing device 114 to access results of the
search. In block 202, the searching device 112 receives a search
query from a user. The search query may include text, numbers,
and/or symbols (e.g., punctuation) entered into the searching
device 112 by the user. For example, the user may have entered the
search query into a search field (e.g., a search box) of a search
application running on the searching device 112. The user may have
entered the search query using a touchscreen keypad, a mechanical
keypad, and/or via speech recognition. As described herein, in some
examples, the search application may be a native application
dedicated to search, or a more general application, such as a web
browser application.
[0072] The searching device 112 can be any computing device that is
capable of providing search queries to the search system 100. The
searching device 112 can be, but is not limited to, a wearable
computing device (e.g., a smart watch), a smart phone, a tablet
computer, a laptop computer, or a desktop computer. The searching
device 112 may also be another computing device having another form
factor, such as a computing device included in a vehicle, a gaming
device, a television, or other appliance (e.g., a networked home
automation device, or a home appliance).
[0073] The searching device 112 may use a variety of different
operating systems. In an example where the searching device 112 is
a mobile device, the searching device 112 may run an OS including,
but not limited to, ANDROID.RTM. developed by Google Inc., IOS.RTM.
developed by Apple Inc., WINDOWS PHONE.RTM. developed by Microsoft
Corporation, or TIZEN.RTM. developed by the Linux Foundation. In an
example where the searching device 112 is a laptop or desktop
computing device, the searching device 112 may run an OS including,
but not limited to, MICROSOFT WINDOWS.RTM. developed by Microsoft
Corporation, MAC OS.RTM. developed by Apple Inc., or LINUX.RTM.
(LINUX.RTM. is the registered trademark of Linus Torvalds in the
U.S. and other countries). The searching device 112 may also access
the search system 100 while running operating systems other than
those operating systems described above, whether presently
available or developed in the future.
[0074] The searching device 112 can communicate with the search
system 100 via a computer network (e.g., the network 106), such as
the Internet. In some examples, the searching device 112 may
communicate with the search system 100 using a native application
installed on the searching device 112 (e.g., a search application).
In general, the searching device 112 may communicate with the
search system 100 using any application that can transmit search
queries to the search system 100. In some examples, the searching
device 112 may run an application that is dedicated to interfacing
with the search system 100, such as an application dedicated to
searches (e.g., a search application). In other examples, the
searching device 112 may communicate with the search system 100
using a more general application, such as a web browser
application. The application run by the searching device 112 to
communicate with the search system 100 may display a search field
(e.g., the search field 506 of FIG. 5A) within a GUI into which the
user may enter search queries. The user may enter a search query
using a touchscreen or physical keyboard, a speech-to-text program,
or another form of user input.
[0075] In general, a search query may be a request for information
retrieval (e.g., search results) from the search system 100. For
example, a search query may be directed to retrieving a list of one
or more displayed results that indicate native application
functionality or application states in examples where the search
system 100 is configured to generate a list of AAMs as search
results. A search query directed to retrieving a list of search
results related to native applications may indicate a user's desire
to access functionality of one or more native applications
described by the search query.
[0076] In block 204, the searching device 112 transmits the search
query to the search system 100. The search system 100 generates
search results that are responsive to (i.e., based on) the search
query and transmits the search results to the searching device 112.
In block 206, the searching device 112 receives the search results
(e.g., result objects) from the search system 100. The searching
device 112 generates displayed results based on the received search
results (i.e., the result objects). In other words, the searching
device 112 renders the result objects of the search results into
displayed results. The searching device 112 outputs the displayed
results to the user via the search application running on the
searching device 112 (e.g., as a search engine results page, or
"SERP," within a GUI of the search application). The user may
interact with the searching device 112 (e.g., swipe a touchscreen,
or use a physical button) in order to browse through the displayed
results.
[0077] In block 208, the searching device 112 detects, or receives,
the user's selection of one of the displayed results (i.e., a user
selection of one of the search results). The user may select a
displayed result by interacting in some way with the displayed
result. The searching device 112 may detect the user's selection by
detecting the user interaction. In some examples, the user may tap
the displayed result to select the displayed result. In this
example, the searching device 112 may detect the tapping of the
displayed result. In some examples, the entire displayed result may
be tapped by the user to select the displayed result. In other
examples, a displayed result may include a region (e.g., a
graphical button) in which the user should tap in order to select
the displayed result. The user may select a displayed result in any
suitable manner. For instance, the user may use voice controls to
select a displayed result.
[0078] In block 210, the searching device 112 selects one of a
plurality of performing devices 114. For example, the searching
device 112 may select the one of the plurality of performing
devices 114 based on one or more of a user input, location data,
availability data, compatibility data, connectivity data, and
historical connectivity data associated with the selected
performing device 114, as described herein. In some examples, the
searching device 112 may detect, or receive, the user's selection
of one of the plurality of performing devices 114 (e.g., after
displaying an indication of each of one or more of the plurality of
performing devices 114 to the user on the searching device 112).
The searching device 112 may then select the performing device 114
selected by the user.
[0079] In other examples, the searching device 112 may determine or
receive from another computing device location data that indicates
a location of each of one or more of the plurality of performing
devices 114 (e.g., geographic coordinate data obtained from a GPS
module of each such performing device 114). The searching device
112 may then identify one of the plurality of performing devices
114 that is located most proximate to the searching device 112
using the location data and select the performing device 114. In
still other examples, the searching device 112 may determine or
receive from another computing device availability data that
indicates whether each of one or more of the plurality of
performing devices 114 is available to perform a function indicated
by the selected result. For example, the availability data may
indicate whether the searching device 112, or another computing
device, has recently transmitted an indication of a user's
selection of a displayed result to each such performing device 114,
thereby rendering the performing device 114 unavailable to accept
and perform a function according to another indication. The
searching device 112 may then select one of the plurality of
performing devices 114 that is available to accept another
indication. In still other examples, the searching device 112 may
determine or receive from another computing device compatibility
data that indicates whether each of one or more of the plurality of
performing devices 114 is compatible with an access mechanism
(e.g., an AAM or a WAM) that specifies the function indicated by
the selected result. For example, a performing device 114 may be
compatible with the access mechanism if the performing device 114
includes an OS, a native application, and/or a web browser
application that can accept and process the access mechanism as
described herein. The searching device 112 may then select one of
the plurality of performing devices 114 that is compatible with the
access mechanism. In other examples, the searching device 112 may
determine or receive from another computing device connectivity
data and/or historical connectivity data that indicate whether each
of one or more of the plurality of performing devices 114 is
connected, or has been previously connected, respectively, to the
searching device 112 via a communication interface. The searching
device 112 may then select one of the plurality of performing
devices 114 that is connected, or has been previously connected, to
the searching device 112 via a communication interface. In these
examples, current and/or previous connectivity of a performing
device 114 to the searching device 112 may indicate one or more of
user preference to select the performing device 114 to perform a
function indicated by a selected result, proximity of the
performing device 114 to the searching device 112, availability of
the performing device 114 to perform a function indicated by a
selected result, and/or compatibility of the performing device 114
with access mechanisms that specify functions indicated by selected
results on the searching device 112.
[0080] In block 212, the searching device 112 transmits an
indication of the user selection to the selected performing device
114, as described above. In some examples, the indication may
include one or more instructions or commands for the performing
device 114. In these examples, the selected performing device 114
may perform a function specified by the selected result in response
to receiving the indication, as described below. For example, the
performing device 114 may perform the function using the one or
more instructions or commands included in the indication. In one
specific example, to transmit the indication to the selected
performing device 114, the searching device 112 may broadcast an
"intent" (e.g., in the case of the ANDROID.RTM. OS) to the
performing device 114 that causes the performing device 114 to
perform the function. In another specific example, the searching
device 112 may transmit data to the selected performing device 114
that causes the performing device 114 to broadcast the intent,
thereby causing the performing device 114 to perform the function.
Accordingly, as described herein, the searching device 112 may
include at least one of an OS, one or more native applications, and
a web browser application that are configured to communicate with
the search system 100, receive a search query from a user, provide
a query wrapper including the search query to the search system
100, receive search results from the search system 100, generate
displayed results, receive a user input indicating a selected
result, select the performing device 114, and transmit an
indication of the selected result to the selected performing device
114.
[0081] In block 214, the selected performing device 114 performs a
function indicated by the selected result. For example, the
selected performing device 114 may perform a function according to
an AAM or a WAM associated with the selected result. As described
above, in some examples, the selected performing device 114 may
perform the function using one or more instructions or commands
included in the indication of the user selection received by the
performing device 114 from the searching device 112. The selected
performing device 114 can be any computing device that is capable
of receiving an indication of a user selection of a search result
from the searching device 112 and performing a function according
to the selected result. The selected performing device 114 can be,
but is not limited to, a wearable computing device (e.g., a smart
watch), a smart phone, a tablet computer, a laptop computer, and a
desktop computer. The selected performing device 114 may also be
another computing device having another form factor, such as
computing device included in a vehicle, a gaming device, a
television, or other appliance (e.g., a networked home automation
device, or a home appliance). The selected performing device 114
may use a variety of different operating systems, as described
herein with respect to the searching device 112.
[0082] The selected performing device 114 can communicate with the
search system 100 via a computer network, such as the Internet. For
instance, the selected performing device 114 may communicate with
the search system 100 in examples where the searching device 112
communicates with the search system 100 via the selected performing
device 114 (e.g., by being tethered to the selected performing
device 114). In some examples, the selected performing device 114
may communicate with the search system 100 using a native
application installed on the selected performing device 114. In
other examples, the selected performing device 114 may communicate
with the search system 100 using a more general application, such
as a web browser application. Accordingly, as described herein, the
selected performing device 114 may include at least one of an OS,
one or more native applications, and a web browser application that
are configured to communicate with the searching device 112 and the
search system 100 and perform the functions indicated by the
selected result.
[0083] FIGS. 3-4 show examples of the search module 110 and the
data store 108 of FIG. 1 and an example function record 400 that
may be included in the search system 100 of the present disclosure.
The search system 100 (e.g., the search module 110) of FIG. 3 may
be configured to communicate with searching devices 112 and
performing devices 114 via a network (e.g., the network 106). In
some examples, the searching devices 112 and the performing devices
114 may communicate with the search system 100 via a partner
computing system (an intermediate computing device; not
illustrated). The partner computing system may be a computing
system of a third party that may leverage the search functionality
of the search system 100. The partner computing system may belong
to a company or organization other than that which operates the
search system 100. Example third parties which may leverage the
functionality of the search system 100 may include, but are not
limited to, internet search providers and wireless communications
service providers. The searching devices 112 and the performing
devices 114 may send search queries 300 to the search system 100
and receive search results 308 via the partner computing system.
The partner computing system may provide a user interface to the
searching devices 112 and the performing devices 114 in some
examples and/or modify the search experience provided on the
searching devices 112 and the performing devices 114.
[0084] As shown in FIG. 3, the search system 100 is configured to
receive a search query 300 from a searching device 112 and perform
a search for function records included in the data store 108 based
on the received search query 300. As described herein, the search
system 100 may receive the search query 300 generated by the
searching device 112 via a performing device 114 in some examples
(e.g., as described with reference to FIG. 11A).
[0085] As also shown in FIG. 3, the search system 100 generates
search results 308 including one or more result objects based on
the received search query 300. For example, the search system 100
may generate the result objects based on data included in function
records identified during the search. For instance, the search
system 100 may generate a single result object based on data
included in a single identified function record. The data store 108
may include one or more function records some or all of which may
be identified during the search of the data store 108. Information
that may be included in a function record is described with respect
to FIG. 4. The data store 108 may include one or more databases,
indices (e.g., inverted indices), tables, files, or other data
structures which may be used to implement the techniques of the
present disclosure. For example, the data included in the function
records may be included in one or more databases, indices (e.g.,
inverted indices), tables, files, or other data structures. The
search module 110 receives the search query 300 and generates the
search results 308 (e.g., the result objects) based on data
included in the data store 108 and the received search query
300.
[0086] The search system 100 performs a search for function records
included in the data store 108 in response to the received search
query 300 and/or additional data included in a query wrapper that
includes the search query 300. The search system 100 generates the
search results 308 (e.g., the result objects) based on the function
records identified during the search. In some examples, the search
system 100 generates result scores for the result objects, which
may be used to rank the result objects and the search results 308
(e.g., the displayed results). The search system 100 may transmit
the result scores to the searching device 112 with the result
objects so that the searching device 112 may rank the displayed
results using the result scores.
[0087] The search system 100 transmits the result objects to the
searching device 112. The searching device 112 generates displayed
results based on data included in the result objects. For example,
the searching device 112 may generate a single displayed result for
each received result object. In some examples, the searching device
112 may display only a single displayed result. For example, if the
searching device 112 has a limited amount of display space, the
searching device 112 may generate a displayed result such that it
fills the display of the searching device 112. In other examples,
the searching device 112 may generate a list of displayed results
on the display such that the user can view more than one displayed
result at a time.
[0088] The searching device 112 may receive the search results 308
from the search system 100 that are responsive to the search query
300 transmitted to the search system 100. The searching device 112
may be running a search application including a GUI that displays
the search results 308 received from the search system 100. For
example, the search application used to transmit the search query
300 to the search system 100 may also display the received search
results 308 to the user.
[0089] The GUI of the search application running on the searching
device 112 may display the search results 308 to the user in a
variety of different ways, depending on what information is
transmitted to the searching device 112. In some examples, the GUI
may display the search results 308 to the user as a list of
displayed results that are ranked based on result scores. The
displayed results may be arranged under the search field into which
the user entered the search query 300. The searching device 112 may
arrange the displayed results in order by result scores associated
with the displayed results. In some examples, the searching device
112 may group the displayed results together if they are related to
the same native application.
[0090] The search system 100 may communicate with one or more
different data sources (not illustrated), such as the data
source(s) 104 of FIG. 1. With reference to the environment of FIG.
1, the data source(s) 104 may be sources of data which the search
system 100 may use to generate and update the data store 108. For
example, the search system 100 may use the data to update one or
more databases, indices, tables, files, or other data structures
included in the data store 108. The search system 100 may generate
new function records and update existing function records based on
data retrieved from the data source(s) 104. Although not
illustrated, the search system 100 may include modules that
generate new function records and update existing function records
based on the data retrieved from the data source(s) 104. In some
examples, data included in the data store 108 may be manually
generated by a human operator.
[0091] The data source(s) 104 may include a variety of different
data providers. The data source(s) 104 may include data from
application developers, such as application developers' websites
and data feeds provided by developers. The data source(s) 104 may
include operators of digital distribution platforms configured to
distribute applications to searching devices 112 and performing
devices 114. The data source(s) 104 may also include other
websites, such as websites that include web logs (i.e., blogs),
application review websites, or other websites including data
related to applications. Additionally, the data source(s) 104 may
include social networking sites, such as FACEBOOK.RTM. by Facebook
Inc. (e.g., Facebook posts) and TWITTER.RTM. by Twitter Inc. (e.g.,
text from tweets). The data source(s) 104 may also include online
databases that include data related to movies, television programs,
music, and restaurants. The data source(s) 104 may also include
additional types of data sources in addition to the data sources
described above. Different data sources may have their own content
and update rate.
[0092] The search system 100 retrieves data from one or more of the
data source(s) 104. The data retrieved from the data source(s) 104
can include any type of data related to application functionality
and/or application states. The search system 100 generates function
records based on the data retrieved from the data source(s) 104. In
some examples, some data included in the function records (e.g.,
ASI) may be manually generated by a human operator. The data
included in the function records may be updated over time so that
the search system 100 provides up-to-date search results 308.
[0093] As described above, the searching device 112, the performing
devices 114, the intermediate computing devices (e.g.,
"intermediate devices"), the search system 100, and the data
source(s) 104 may be in communication with one another via a
network (e.g., the network 106). The network may include various
types of networks, such as a wide area network (WAN) and/or the
Internet. Although the network may include a long range network
(e.g., the Internet or WAN), in some implementations, the network
may include a shorter range network, such as a local area network
(a LAN, or a WLAN). In one embodiment, the network uses standard
communications technologies and/or protocols. Thus, the network can
include links using technologies such as Ethernet, Wireless
Fidelity (Wi-Fi.RTM.) (e.g., 802.11), worldwide interoperability
for microwave access (WiMAX), 3G, Long Term Evolution (LTE),
digital subscriber line (DSL), asynchronous transfer mode (ATM),
InfiniBand, PCI Express Advanced Switching, etc. Similarly, the
networking protocols used on the network can include multiprotocol
label switching (MPLS), the transmission control protocol/Internet
protocol (TCP/IP), the User Datagram Protocol (UDP), the hypertext
transport protocol (HTTP), the simple mail transfer protocol
(SMTP), the file transfer protocol (FTP), etc. The data exchanged
over the network can be represented using technologies and/or
formats including the hypertext markup language (HTML), the
extensible markup language (XML), etc. In addition, all or some of
the links can be encrypted using conventional encryption
technologies such as secure sockets layer (SSL), transport layer
security (TLS), virtual private networks (VPNs), Internet Protocol
security (IPsec), etc. In other examples, the network can use
custom and/or dedicated data communications technologies instead
of, or in addition to, the ones described above.
[0094] The search module 110 includes a query analysis module 302,
a consideration set generation module 304 (hereinafter, "set
generation module 304"), and a consideration set processing module
306 (hereinafter, "set processing module 306"). The query analysis
module 302, the set generation module 304, and the set processing
module 306 may be embodied in computer-executable instructions
stored in one or more memory components of the search system 100
and executed by one or more processing units of the search system
100. The query analysis module 302 receives a query wrapper
including the search query 300. The query analysis module 302
analyzes the received search query 300. The set generation module
304 identifies a set of function records included in the data store
108 based on the received search query 300. The identified set of
function records may be referred to herein as a "consideration
set." The set processing module 306 processes (e.g., scores) the
consideration set to generate a set of the search results 308 that
include result objects generated based on selected function records
of the consideration set.
[0095] Referring now to FIG. 4, the example function record 400
includes a function ID 402, ASI 404, one or more access mechanisms
406, and result object data 408. The access mechanism(s) 406 may
include one or more native AAMs (hereinafter, "AAMs"), one or more
WAMs, and/or one or more application download addresses. The set
processing module 306 may generate a result object based on the
result object data 408, the access mechanism(s) 406, and, in some
examples, the function ID 402. The function record 400 may include
data related to a function of a native application and/or a state
of the native application resulting from performance of the
function. The data store 108 may include one or more function
records each having a structure that is similar to that of the
function record 400.
[0096] In some implementations, a function record may include
multiple different AAMs. For example, the different AAMs may be
associated with different editions of a native application. A
native application edition (hereinafter, "application edition")
refers to a particular implementation or variation of a native
application. For example, an application edition may refer to a
version of a native application, such as a version 1.0 of the
native application, or a version 2.0 of the native application. In
another example, an application edition may refer to an
implementation of a native application for a specific platform,
such as a specific OS.
[0097] The different AAMs included in the function record may cause
the corresponding application editions to launch and perform
similar functions. Accordingly, the different AAMs included in the
function record may cause the corresponding application editions to
be set into similar application states. In one example, if the
different AAMs reference different editions of an information
retrieval application, the different AAMs may cause the
corresponding application editions to retrieve similar information.
In another example, if the different AAMs reference different
editions of an internet music player application, the different
AAMs may cause the corresponding application editions to play the
same song.
[0098] In a specific example, a function record for a native
application that retrieves restaurant information may include
multiple different AAMs for multiple different application
editions. Assuming that the function record is associated with a
specific Mexican restaurant, the AAMs for the different application
editions may cause each application edition to retrieve information
for the same specific Mexican restaurant. For example, a first AAM
may cause a first application edition (e.g., for a first OS) to
retrieve information for the specific Mexican restaurant. A second
AAM may cause a second application edition (e.g., for a second OS)
to retrieve information for the specific Mexican restaurant. During
some searches, the search system 100 may identify one or more
function records that include multiple AAMs.
[0099] In some implementations, a function record may include a
WAM. The WAM may be a resource identifier that can be processed by
a wide variety of performing devices 114 running different
operating systems. In some examples, the WAM may include a uniform
resource locator (URL) (i.e., a web address) used with HTTP.
[0100] A WAM (e.g., a URL) included in a function record may be
used by a web browser to access a web resource that includes
similar information and/or performs similar functions as would be
performed by a native application that receives an AAM of the
function record. In one specific example, a WAM of a function
record may direct a web browser of a performing device 114 to a web
version of a native application referenced in one or more AAMs of
the function record. For example, if one or more AAMs included in a
function record for a specific Mexican restaurant cause each
corresponding native application edition to retrieve information
for the specific Mexican restaurant, a WAM included in the function
record may direct a web browser of the performing device 114 to a
web page entry for the specific Mexican restaurant. During some
searches, the search system 100 may identify one or more function
records that include one or more AAMs and a WAM.
[0101] In some examples, a function record may include one or more
application download addresses. An application download address of
a function record can be used by a user device 102 (e.g., a
searching device 112 and/or a performing device 114) to download a
native application referenced in one or more AAMs of the function
record in the event that the native application is not installed on
the user device 102. In some examples, the application download
address may include a web address (e.g., a URL) at which the native
application can be previewed and downloaded. For example, the
application download address may direct a web browser of the user
device 102 to a digital distribution platform that is configured to
distribute native applications. Example digital distribution
platforms include, but are not limited to, GOOGLE PLAY.RTM.
developed by Google Inc., the APP STORE.RTM. developed by Apple
Inc., and the WINDOWS PHONE STORE.RTM. developed by Microsoft
Corporation. If the user device 102 includes a native download
application for accessing a digital distribution platform, the
application download address may direct the installed native
download application to a site where the native application
referenced in the AAM(s) of the function record can be
downloaded.
[0102] The function ID 402 may be used to identify the function
record 400 among the other function records included in the data
store 108. The function ID 402 may be a string of alphabetic,
numeric, and/or symbolic characters (e.g., punctuation marks) that
uniquely identify the function record 400 in which the function ID
402 is included. In some examples, the function ID 402 may describe
a function and/or an application state in human-readable form. For
example, the function ID 402 may include a name of a native
application referenced in an AAM included in the access
mechanism(s) 406. Additionally, or alternatively, the function ID
402 may be a human-readable string that describes a function
performed according to the access mechanism(s) 406 and/or an
application state resulting from performance of the function
according to the access mechanism(s) 406. In some examples, the
function ID 402 may include a string in the format of a URL of a
WAM for the function record 400, which may uniquely identify the
function record 400.
[0103] In a more specific example, if the function record 400
describes a function of a native application YELP.RTM. by Yelp Inc.
(hereinafter, "Yelp"), the function ID 402 may include the name
"Yelp" along with a description of an application state
corresponding to the function, e.g., as described in the ASI 404.
In an example where the function record 400 describes an entry
within Yelp for the restaurant THE FRENCH LAUNDRY.RTM., the
function ID 402 may be "Yelp--The French Laundry." In an example
where the function ID 402 includes a string in the format of a URL,
the function ID 402 may include the string
"www.yelp.com/biz/the-french-laundry-yountville-2?ob=1" to uniquely
identify the function record 400.
[0104] The ASI 404 may include data that describes an application
state into which a native application is set according to an AAM
included in the function record 400 (e.g., in the access
mechanism(s) 406). Additionally, or alternatively, the ASI 404 may
include data that describes a function performed according to the
access mechanism(s) 406. The ASI 404 may include a variety of
different types of data. For example, the ASI 404 may include
structured, semi-structured, and/or unstructured data. The ASI 404
may be extracted or inferred from documents retrieved from the data
source(s) 104 described above. In some examples, the ASI 404 may
include data that is manually generated. The ASI 404 may also be
updated so that up-to-date search results 308 can be provided in
response to a user's search query 300.
[0105] In some examples, the ASI 404 may include data that may be
presented to a user when a native application referenced by an AAM
included in the function record 400 (e.g., included in the access
mechanism(s) 406) is in an application state defined by the AAM.
For example, the ASI 404 may include data that describes the
application state of the native application after a performing
device 114 has performed one or more operations indicated by the
AAM to set the native application into the application state. In
one example, if the function record 400 is associated with a
shopping application, the ASI 404 may include data that describes
products (e.g., names and prices) that are shown when the shopping
application is set into an application state defined by the access
mechanism(s) 406 of the function record 400. In another example, if
the function record 400 is associated with a music player
application, the ASI 404 may include data that describes a song
(e.g., a song name and an artist name) that is played when the
music player application is set into an application state defined
by the access mechanism(s) 406 of the function record 400.
[0106] The types of data included in the ASI 404 may depend on the
type of information associated with the application state and the
functionality defined by the access mechanism(s) 406. In one
example, if the function record 400 is for a native application
that provides reviews of restaurants, the ASI 404 may include
information (e.g., text and numbers) related to a restaurant, such
as a category of the restaurant, reviews of the restaurant, and a
menu for the restaurant. In this example, the access mechanism(s)
406 may cause the native application to launch and retrieve
information for the restaurant. As another example, if the function
record 400 is for a native application that plays music, the ASI
404 may include information related to a song, such as a name of
the song, an artist name, lyrics, and listener reviews for the
song. In this example, the access mechanism(s) 406 may cause the
native application to launch and play the song described in the ASI
404.
[0107] An AAM (e.g., included in the access mechanism(s) 406) may
include an ARI and/or one or more operations for a performing
device 114 to perform. For example, the ARI may be a string having
an application specific scheme. The ARI may include a reference to
a native application and indicate one or more operations for a
performing device 114 (e.g., the native application) to perform.
For example, the ARI may include the reference to the native
application, a domain name, and a path to be used by the native
application to retrieve and display information to a user.
[0108] An example ARI for the native application OPENTABLE.RTM. by
OpenTable Inc. (hereinafter, "OpenTable") on the ANDROID.RTM. OS is
"vnd.opentable.deeplink://opentable.com/restaurant/profile?rid=88333&refi-
d=1." A portion of the example ARI references OpenTable. For
example, the substring "vnd.opentable.deeplink" of the ARI
references OpenTable. The example ARI also indicates one or more
operations for OpenTable to perform. For example, OpenTable may
retrieve and display the information included in the ARI domain and
path defined by the substring
"opentable.com/restaurant/profile?rid=88333&refid=1." In
response to receiving the ARI, a performing device may launch
OpenTable and display information retrieved from the location
indicated by the ARI. The ARI may be provided by the developer of
OpenTable in some examples.
[0109] In some examples, the AAM may include operations for the
performing device to perform in addition to the one or more
operations indicated by the ARI. For example, an OS of the
performing device 114 and/or a native application installed on the
performing device 114 may perform these additional operations
included in the AAM in order to set a native application into an
application state specified by the AAM. In some examples, the
operations may be included in a script. Examples of the operations
may include, but are not limited to, launching a native
application, waiting for the native application to start, creating
and sending a search request to a server, setting a current
geo-location in a native application, making a restaurant
reservation, sending a text message, and adding an appointment to a
calendar. In some examples, an AAM may not include an ARI. Instead,
the AAM can include other operations that reference a native
application. The operations may be performed by a performing device
114. In some examples, the operations may be included in a
script.
[0110] Referring back to FIG. 3, the search query 300 received by
the search module 110 is used to perform a search of the data store
108. The query analysis module 302 receives the search query 300.
The query analysis module 302 may perform various analysis
operations on the received search query 300. For example, the
analysis operations performed by the query analysis module 302 may
include, but are not limited to, tokenization of the search query
300, filtering of the search query 300, stemming, synonymization,
and stop word removal.
[0111] The set generation module 304 identifies a set of function
records (i.e., the consideration set) based on the search query
300. In some examples, the set generation module 304 may identify
the set of function records based on one or more matches between
one or more terms of the search query 300 and one or more terms
included in the function records. For example, the set generation
module 304 may identify the set of function records in the data
store 108 based on one or more matches between one or more tokens
generated by the query analysis module 302 and one or more words
included in the function records of the set, such as words included
in the ASI and/or function IDs of the function records. In some
examples, the consideration set may include one or more function
IDs of the identified function records used to identify the
function records, rather than the function records themselves. As a
result, the consideration set may include less data and/or require
fewer processing and/or storage resources compared to techniques
where the consideration set includes one or more function
records.
[0112] The set processing module 306 processes the consideration
set to generate a set of search results 308 that includes one or
more result objects. Each result object may include any of the data
described above as being included in a result object. In some
examples, the set processing module 306 scores the functions
records included in the consideration set. The scores associated
with the function records of the consideration set may be referred
to as "result scores." Accordingly, in some examples, each of the
function records included in the consideration set may have a
corresponding result score. The set processing module 306 may then
select one or more function records from the consideration set
based on the result scores associated with the function records.
For example, the set processing module 306 may select one or more
highest-scoring function records of the consideration set.
[0113] The set processing module 306 then generates one or more
result objects based on the selected function records. For example,
the set processing module 306 may generate a single result object
based on a single function record. The set processing module 306
transmits the result objects to the searching device 112 that
generated the search query 300. The set processing module 306 may
also transmit the result scores associated with the result objects
(i.e., with the function records used to generate the result
objects) to the searching device 112.
[0114] The information conveyed by the search results 308 may
depend on how the result scores are calculated by the set
processing module 306. For example, the result scores may indicate
the relevance of an application function or application state to
the search query 300, the popularity of an application function or
application state, or other properties of the application function
or application state, depending on what parameters the set
processing module 306 uses to score the function records of the
consideration set.
[0115] The set processing module 306 may generate result scores for
function records in a variety of different ways. In some
implementations, the set processing module 306 generates a result
score for a function record based on one or more scoring features.
The scoring features may be associated with the function record
and/or the search query 300. A function record scoring feature
(hereinafter, a "record scoring feature") may be based on any data
associated with a function record. For example, record scoring
features may be based on any data included in ASI of a function
record. A query scoring feature may include any data associated
with the search query 300. For example, query scoring features may
include, but are not limited to, a number of words in the search
query 300, the popularity of the search query 300, and the expected
frequency of the words in the search query 300. A record-query
scoring feature may include any data which may be generated based
on data associated with both a function record and the search query
300 that resulted in identification of the function record by the
set processing module 306. For example, record-query scoring
features may include, but are not limited to, parameters that
indicate how well terms of the search query 300 match terms of ASI
of an identified function record. In some examples, determining
such record-query scoring features, i.e., parameters that indicate
how well terms of a search query 300 match terms of ASI of an
identified function record, may be performed using Lucene.RTM.
information retrieval software developed by the Apache Software
Foundation. The set processing module 306 may generate a result
score for a function record based on at least one of the record
scoring features, the query scoring features, and the record-query
scoring features.
[0116] The set processing module 306 may determine a result score
for a function record included in the consideration set based on
one or more of the scoring features listed herein and/or additional
scoring features not explicitly listed. In some examples, the set
processing module 306 may include one or more machine-learned
models (e.g., a supervised learning model) configured to receive
one or more scoring features. The one or more machine-learned
models may generate result scores for function records included in
the consideration set based on at least one of the record scoring
features, the query scoring features, and the record-query scoring
features. For example, the set processing module 306 may pair the
search query 300 with each function record included in the
consideration set and calculate a vector of features for each
(query, record) pair. The vector of features may include one or
more record scoring features, one or more query scoring features,
and one or more record-query scoring features. The set processing
module 306 may then input the vector of features into a
machine-learned regression model to calculate a result score for
the corresponding function record. In some examples, the
machine-learned regression model may include a set of decision
trees (e.g., gradient boosted decision trees). In other examples,
the machine-learned regression model may include a logistic
probability formula. In some examples, the machine-learned task
described above can be framed as a semi-supervised learning task,
where a minority of the training data is labeled with human-curated
scores, and the rest of the training data is used without human
labels. The result scores associated with the function records of
the consideration set may be used in a variety of different ways
described herein.
[0117] FIGS. 5A-5D show example GUIs displayed on a searching
device 500. The searching device 500 illustrated in FIGS. 5A-5D is
a wrist watch computing device (e.g., a smart watch) including
watch straps 502. Example wrist watch computing devices include the
SAMSUNG GALAXY GEAR.RTM., the SAMSUNG GALAXY GEAR.RTM. 2, the
SAMSUNG GEAR.RTM. 2 Neo, and the SAMSUNG GEAR FIT.RTM. developed by
Samsung Electronics Co., Ltd., as well as the APPLE WATCH.RTM.
developed by Apple Inc.
[0118] Referring now to FIG. 5A, the searching device 500 executes
a search application including a GUI 504 that displays a search
field 506 for receiving search queries 300 from a user. Since the
searching device 500 has a small form factor (e.g., a small
screen), the searching device 500 may not include a full keyboard
in some examples. Accordingly, the searching device 500 may receive
search queries 300 in a different manner, such as using voice
input. For example, the user may tap the search field 506 and speak
into the searching device 500 in order to enter a search query 300
into the search field 506. The searching device 500 may then
transmit the entered search query 300 to the search system 100. In
some examples, the searching device 500 may automatically transmit
the search query 300 after it has been received by the searching
device 500. In other examples, the user may press a search button
508 also displayed by the GUI 504 in order to transmit the search
query 300 to the search system 100.
[0119] In the example of FIG. 5A, the user has entered the search
query "Steak" 300 into the search field 506 displayed by the GUI
504 of the searching device 500. The searching device 500 has
subsequently transmitted the search query 300 to the search system
100. The search system 100 has generated search results 308 in
response to the search query "Steak" 300. As illustrated in FIGS.
5B-5D, respectively, the search results 308 are associated with a
mapping native application, a phone native application, and the
OpenTable native application. Each of the search results 308 (e.g.,
each of the result objects included in the search results 308) may
be transmitted to the searching device 500 at the same time.
Accordingly, although only a single displayed result is shown at
one time on the searching device 500 in each of FIGS. 5B-5D, the
search results 308 that are not displayed may be stored in the
memory of the searching device 500. The user may interact with the
searching device 500 (e.g., swipe a screen of the searching device
500, or use a physical button on the searching device 500) in order
to browse through the different displayed results. For example, the
user may swipe from left to right to advance through the displayed
results. The user may then swipe from right to left to back up, or
move in an opposite direction, through the displayed results.
[0120] FIG. 5B shows an example displayed result 510 for a mapping
native application. The displayed result 510 indicates to the user
that selecting the displayed result 510 will result in a performing
device 114 (e.g., a vehicle navigation system) opening the mapping
native application and navigating the user to the restaurant
ALEXANDER'S STEAKHOUSE.RTM. by Alexander's Steakhouse Inc.
(hereinafter, "Alexander's Steakhouse") that is located 5 miles
away from the user's current location. The user may tap the
displayed result 510 shown in FIG. 5B in order to select the
displayed result 510. For example, the user may tap the user input
graphic that includes the string "Navigate (Car)" in order to
select the displayed result 510. In some examples, the displayed
result 510 may be selected by tapping anywhere on the display of
the searching device 500. In still other examples, the displayed
result 510 may be selected by using a mechanical button of the
searching device 500. The user may interact with (e.g., swipe the
display of) the searching device 500 to introduce another displayed
result to the display and remove the displayed result 510 of FIG.
5B from the display.
[0121] FIG. 5C shows an example displayed result 512 for a phone
native application. The displayed result 512 indicates to the user
that selecting the displayed result 512 will result in a performing
device 114 (e.g., a smartphone, or a car phone located near the
user) opening the phone native application and setting it into a
state for calling Alexander's Steakhouse. The user may tap the
displayed result 512 shown in FIG. 5C in order to select the
displayed result 512. For example, the user may tap the user input
graphic that includes the string "Call (Phone)" in order to select
the displayed result 512. In some examples, the displayed result
512 may be selected by tapping anywhere on the display of the
searching device 500 or using a mechanical button of the searching
device 500. The user may interact with (e.g., swipe the display of)
the searching device 500 to introduce another displayed result to
the display and remove the displayed result 512 of FIG. 5C from the
display. The user may also swipe the display to bring the displayed
result 510 of FIG. 5B back on the display.
[0122] FIG. 5D shows an example displayed result 514 for OpenTable,
which is a restaurant reservation application. The displayed result
514 indicates to the user that selecting the displayed result 514
will result in a performing device 114 (e.g. a tablet) opening the
OpenTable application (e.g., the native application edition or a
web-based application edition of the OpenTable application) to an
entry for reserving a table at the "Osso Steakhouse." The user may
tap the displayed result 514 shown in FIG. 5D in order to select
the displayed result 514. For example, the user may tap the user
input graphic that includes the string "Reserve Table (Tablet)" in
order to select the displayed result 514. In some examples, the
displayed result 514 may be selected by tapping anywhere on the
display of the searching device 500 or using a mechanical button of
the searching device 500. The user may interact with (e.g., swipe
the display of) the searching device 500 to introduce another
displayed result to the display and remove the displayed result 514
of FIG. 5D from the display. The user may also swipe the display
one or more times to bring the displayed results 510, 512 of FIGS.
5B and 5C back on the display. As shown in FIGS. 5B-5D, in some
examples, the searching device 500 may indicate to the user which
computing device (e.g., a vehicle navigation system, a smartphone,
or a tablet) will be used as a performing device 114 to perform a
function indicated by a displayed result when the user selects the
displayed result.
[0123] FIGS. 6A-7D illustrate example GUIs that may be generated on
a searching device 600, 700 and different first and second
performing devices 612, 614, 712, 714 according to the present
disclosure. In the examples of FIGS. 6A-6B, the searching device
600 is a wrist watch computing device (e.g., a smart watch)
including watch straps 602. FIG. 6A shows that a user has entered a
search query "Steak" 300 into a search field 606 of a GUI 604
displayed on the searching device 600 in order to find search
results 308 related to restaurants that include steak on their
menu. In this example, the user may have pressed a search button
608 of the GUI 604 to transmit the search query 300 to the search
system 100. A single displayed result 610 generated using the
search results 308 received from the search system 100 in response
to the search query 300 is illustrated in FIG. 6B. The displayed
result 610 references Alexander's Steakhouse. The displayed result
610 of FIG. 6B illustrates that displayed results may include
multiple different user inputs (e.g., "Navigate (Car)" and
"Navigate (Phone)" buttons or GUI elements) for selecting a similar
outcome at one or more performing devices 114 from the searching
device 600. For example, the user selecting the "Navigate (Car)"
button may cause the first performing device 612 installed in the
user's car (i.e., a vehicle navigation system) to open a navigation
native application and set the native application into a state that
generates a route to Alexander's Steakhouse. The user selecting the
"Navigate (Phone)" button may cause the second performing device
614 (i.e., the user's smartphone) to launch a phone native
application and set the native application into a state that also
generates a route to Alexander's Steakhouse.
[0124] The displayed result 610 of FIG. 6B also illustrates how
displayed results may generate an indication of which performing
device 114 will be performing a particular function associated with
a given displayed result (e.g., a function associated with a
specific button of the displayed result). For example, the
displayed result 610 of FIG. 6B indicates that the first performing
device 612 (i.e., the vehicle navigation system) will perform the
above-described navigation function. The displayed result 610 also
indicates that the second performing device 614 (i.e., the
smartphone), different from the first performing device 612, will
perform the same navigation function.
[0125] As described herein, in some examples, the searching device
600 may automatically pick a performing device 114 for performing a
function associated with a displayed result on the searching device
600 (e.g., upon the user selecting the displayed result). In other
examples (e.g., FIGS. 5B-5D), the searching device 600 may also
indicate to the user which computing device will be used as the
performing device 114 to perform the function. In still other
examples (e.g., FIG. 6B), the searching device 600 may prompt the
user to select which computing device will be used as the
performing device 114 to perform the function.
[0126] In other examples, selection of the performing device 114 by
the searching device 600 may be done in a different manner. In some
examples, as described below with reference to FIGS. 8A-8C, a
displayed result on the searching device 600 may not include an
indication of a performing device 114 that will perform a function
associated with the displayed result upon a user of the searching
device 600 selecting the displayed result. In these examples, a GUI
on the searching device 600 may display to the user a selection of
multiple performing devices 114 each of which may perform the
function after the user has selected the displayed result. For
example, the user may first select the displayed result, which may
not indicate the performing device 114 that will perform the
function. Then, the searching device 600 may update its display to
a GUI that allows the user to select the performing device 114 from
among multiple different performing devices 114. For example, the
searching device 600 may update its display to show a list of
multiple different performing devices 114 (e.g., a car-based
device, a phone device, a laptop device, and/or a desktop device)
each of which the user may select by tapping. After the user has
selected the performing device 114 that will perform the function
from the multiple different performing devices 114, the searching
device 600 may indicate to the user-selected performing device 114
that the displayed result was selected as described herein.
[0127] In some examples, a name of a native application (e.g.,
"OpenTable") that will be launched when the user selects the
displayed result may be displayed in the displayed result. In other
examples, the displayed result may not include names of one or more
specific native applications, but may instead refer to
functionality (e.g., "call," "navigate," etc.) of the displayed
result in a more general manner.
[0128] FIG. 6C shows an example performing device 612 that has
received an indication from the searching device 600 that the user
has selected the "Navigate (Car)" button of the displayed result
610 shown in FIG. 6B. The performing device 612 illustrated in FIG.
6C is a vehicle navigation system. As illustrated in FIG. 6C, the
vehicle navigation system (i.e., the performing device 612) has
launched a navigation native application in response to receiving
the indication from the searching device 600. As depicted in FIG.
6C, the navigation native application is providing directions to
Alexander's Steakhouse.
[0129] FIG. 6D shows another example of the second performing
device 614 that has received an indication from the searching
device 600 that the user has selected the "Navigate (Phone)" button
of the displayed result 610 shown in FIG. 6B. The second performing
device 614 illustrated in FIG. 6D is a smartphone. As illustrated
in FIG. 6D, the smartphone (i.e., the second performing device 614)
has also launched a navigation native application in response to
receiving the indication from the searching device 600 and is
providing directions to Alexander's Steakhouse.
[0130] In the examples of FIGS. 7A-7D, the searching device 700 is
a wrist watch computing device (e.g., a smart watch) including
watch straps 702. FIG. 7A shows that a user has entered a search
query 300 "Papa Johns" into a search field 706 of a GUI 704
displayed on the searching device 700 in order to find search
results 308 related to Papa John's.RTM. restaurants by Papa John's
International. Inc. In this example, the user may have pressed a
search button 708 of the GUI 704 to transmit the search query 300
to the search system 100. A single displayed result 710 generated
using the search results 308 received from the search system 100 in
response to the search query 300 is illustrated in FIG. 7B. The
displayed result 710 of FIG. 7B illustrates that displayed results
may include multiple different user inputs (e.g., "Navigate" and
"Call" buttons) for selecting multiple different outcomes at one or
more performing devices 114 from the searching device 700. For
example, the user selecting the "Navigate (Car)" button may cause
the first performing device 712 installed in the user's car (e.g.,
a vehicle navigation system) to open a navigation native
application and generate a route to the nearest "Papa John's.RTM."
restaurant. The user selecting the "Call (Phone)" button may cause
the second performing device 714 (e.g., the user's smart phone) to
launch a phone native application and set the application into a
state that includes and/or dials the number for the nearest "Papa
John's.RTM." restaurant. The user selecting the "Call (Car)" button
may cause a different performing device 114 not shown in FIGS.
7A-7D (e.g., the user's car phone or a cellular radio of a vehicle
navigation system) to launch a phone native application and set the
application into a state that includes and/or dials the number for
the nearest "Papa John's.RTM." restaurant.
[0131] The displayed result 710 in FIG. 7B also illustrates how
displayed results may generate an indication of which performing
device 114 will be performing a particular function associated with
a given displayed result (e.g., a function associated with a
specific button of the displayed result). For example, the
displayed result 710 of FIG. 7B indicates that the first performing
device 712 (e.g., a computing device installed in the user's car)
will perform the above-described navigation function. The displayed
result 710 also indicates that the second performing device 714
(e.g., a smart phone), different from the first performing device
712, will perform the "Call" function also described above. The
displayed result 710 further indicates that another performing
device 114 (e.g., a car phone, or a cellular radio of a vehicle
navigation system), different from the first and second performing
devices 712, 714 may perform a similar "Call" function also
described above.
[0132] FIG. 7C shows an example of the first performing device 712
that has received an indication from the searching device 700 that
the user has selected the "Navigate (Car)" button of the displayed
result 710 shown in FIG. 7B. The first performing device 712
illustrated in FIG. 7C is a vehicle navigation system. As
illustrated in FIG. 7C, the vehicle navigation system (i.e., the
first performing device 712) has launched a navigation native
application in response to receiving the indication from the
searching device 700. As depicted in FIG. 7C, the navigation native
application is providing directions to a nearby "Papa John's.RTM."
restaurant.
[0133] FIG. 7D shows an example of the second performing device 714
that has received an indication from the searching device 700 that
the user has selected the "Call (Phone)" button of the displayed
result 710 shown in FIG. 7B. The second performing device 714
illustrated in FIG. 7D is a smartphone. As illustrated in FIG. 7D,
the smartphone (i.e., the second performing device 714) has
launched a phone native application in response to receiving the
indication from the searching device 700. As depicted in FIG. 7D,
the phone native application is in a state that includes and/or
dials the number for the nearest "Papa John's.RTM." restaurant.
[0134] FIGS. 8A-8C illustrate other example GUIs that may be
generated on a searching device 800 according to the present
disclosure. FIG. 8A shows the example searching device 800 (i.e., a
smart watch including watch straps 802) that receives a search
query 300 ("Flights") from a user of the searching device 800
(e.g., via a search field 806 of a GUI 804 of the searching device
800). The searching device 800 transmits the search query 300 to
the search system 100 (e.g., upon the user selecting a search
button 808 of the GUI 804) and receives search results 308 that are
responsive to the search query 300 from the search system 100. FIG.
8B shows an example displayed result 810 on the searching device
800 that was received from the search system 100 in response to the
search query 300. The user selects the displayed result 810 (i.e.,
an entry in Hipmunk for finding flights) shown on the searching
device 800 in FIG. 8B.
[0135] As described herein, in some examples, the searching device
800 may prompt the user to select a performing device 114. For
example, after the user selects the displayed result 810 shown in
FIG. 8B, the searching device 800 may display a GUI 812 that
includes indications of one or more different possible performing
devices 114, as illustrated in FIG. 8C. Specifically, as shown in
FIG. 8C, the searching device 800 displays indications for three
possible performing devices 114 within the GUI 812 for the user to
choose. The three possible performing devices 114 indicated by the
GUI 812 include a "Phone" (e.g., a smartphone), a "Tablet," and a
"Laptop." The user may then select from the three possible
performing devices 114 by interacting with the GUI 812 (e.g., by
selecting a button or GUI element corresponding to each performing
device 114). In response to the user's selection of a particular
one of the three possible performing devices 114 (e.g., the
"Phone"), the searching device 800 may transmit an indication of
the user's selection of the displayed result 810 on the searching
device 800 (as shown in FIG. 8B) to the selected performing device
114.
[0136] As shown in FIG. 8C, the GUI 812 includes a Bluetooth.RTM.
logo 814 within the button or GUI element corresponding to the
"Phone" performing device 114. The Bluetooth.RTM. logo 814 may
indicate that the searching device 800 is currently connected via
Bluetooth.RTM. to a smartphone that can be used as a performing
device 114 to perform a function associated with the selected
result (i.e., the displayed result 810). Accordingly, in some
examples, the searching device 800 can include graphical indicators
that indicate whether any of the possible performing devices 114
are currently connected to the searching device 800.
[0137] FIG. 9 illustrates an example GUI of a search application
running on a searching device 900. In FIG. 9, a user has entered a
search query 300 ("Late night diners by me") into the GUI of the
search application (i.e., into a search field 902 of the GUI). The
user has interacted with the GUI in order to transmit a query
wrapper including the search query 300 to the search system 100.
For example, the user may have caused the searching device 900 to
transmit the query wrapper to the search system 100 by selecting
(e.g., touching, or clicking) a search button 904 of the GUI. The
search system 100 has identified function records and has generated
result objects including AAMs, WAMs, and application download
addresses selected from the identified function records, as
described above. In the example of FIG. 9, the search system 100
has identified function records including references to the native
applications Yelp, TRIPADVISOR.RTM. by TripAdvisor, LLC
(hereinafter, "TripAdvisor"), OpenTable, and URBANSPOON.RTM. by
Wanderspot LLC (hereinafter, "Urbanspoon").
[0138] The GUI of FIG. 9 illustrates different types of displayed
results 908-1, 908-2, 910, 912, and 914 for the function records
identified for Yelp, TripAdvisor, OpenTable, and Urbanspoon. The
search system 100 has identified function records that correspond
to entries in Yelp for "IHOP" and "Denny's," the displayed results
for which are included in the GUI. Specifically, the displayed
results 908-1 and 908-2 of the GUI include AAMs that launch Yelp
and retrieve the entries in Yelp for "IHOP" and "Denny's,"
respectively, on a performing device 114 (not illustrated). As
shown in the GUI of FIG. 9, the displayed results 908-1 and 908-2
are grouped together under a Yelp header 906 also included in the
GUI. In other examples, displayed results for different native
applications may be mixed instead of grouped.
[0139] The displayed results 910 and 914 may be associated with
AAMs for TripAdvisor and Urbanspoon, respectively. For example, an
AAM included in the displayed result 910 may cause a performing
device 114 to launch TripAdvisor into a default state. Similarly,
an AAM included in the displayed result 914 may cause a performing
device 114 to launch Urbanspoon into a default state.
[0140] The displayed result 912 may include a WAM for a web-based
application version of OpenTable. For example, the WAM may direct a
web browser of a performing device 114 to one or more late night
diners on the OpenTable web-based application. Accordingly, in
response to selection of the displayed result 912, the performing
device 114 may launch the web browser and retrieve information at a
web address included in the WAM.
[0141] FIGS. 10A-11B are functional block diagrams that illustrate
different arrangements of searching devices 112, performing devices
114, and the search system 100. The different arrangements are now
described herein.
[0142] FIGS. 10A-10B show examples in which a single searching
device 1000, 1006 and multiple different performing devices 1002,
1004, 1008, 1010 each have independent network access (i.e., via
the network 106) to the search system 100. Put another way, the
searching device 1000, 1006 is not tethered to any of the
performing devices 1002, 1004, 1008, 1010 in FIGS. 10A-10B. For
example, with reference to FIG. 10A, the searching device 1000 may
communicate with the search system 100 using a Wi-Fi.RTM.
connection, a cellular network connection, or other communication
technology. Each of the performing devices 1002, 1004 may also
communicate with the search system 100 using a Wi-Fi.RTM.
connection, a cellular network connection, or other communication
technology. In some examples, the searching device 1000 and one or
more of the performing devices 1002, 1004 may communicate with the
search system 100 using different communication technologies. In
other examples, the searching device 1000 and one or more of the
performing devices 1002, 1004 may communicate with the search
system 100 using the same communication technology. In some
examples, the searching device 1000 and one or more of the
performing devices 1002, 1004 may be connected to the search system
100 through the same computing network (e.g., a home network, or a
business network).
[0143] In some examples, the searching device 1000 may transmit an
indication to one or more of the performing devices 1002, 1004 via
the network 106, as shown in in the example of FIG. 10A. In other
examples, the searching device 1000 and one or more of the
performing devices 1002, 1004 may communicate directly with one
another, such as through a Bluetooth.RTM. connection, or other
direct connection. In these examples, the searching device 1000 may
transmit an indication (e.g., an indication that a user has
selected a displayed result) to one or more of the performing
devices 1002, 1004 via the direct connection.
[0144] FIG. 10B illustrates an example searching device 1006 and
example performing devices 1008, 1010. The searching device 1006 is
a wrist watch computing device (e.g., a smart watch). The
performing devices 1008, 1010 are a smart phone computing device
and a vehicle navigation system, respectively. The searching device
1006 and one or more of the performing devices 1008, 1010 may
independently communicate with the search system 100. In some
examples, the searching device 1006 may directly communicate with
one or more of the performing devices 1008, 1010 (e.g., via a
Bluetooth.RTM. connection).
[0145] FIGS. 11A-11B show example arrangements of computing devices
in which a searching device 1100 or a first performing device 1108
is tethered to another computing device (e.g., a first performing
device 1102 or a searching device 1106) in order to communicate
with the search system 100 (i.e., via the network 106). In FIG.
11A, the searching device 1100 is tethered to the first performing
device 1102. In this example, the searching device 1100 may
transmit search queries 300 to the search system 100 and receive
search results 308 from the search system 100 via the first
performing device 1102. The searching device 1100 may be tethered
to the first performing device 1102 because the searching device
1100 may not have sufficient communication technology for
communicating via the Internet with the search system 100. For
example, the searching device 1100 may have a communication
technology (e.g., Bluetooth.RTM.) that cannot connect to the
Internet at the searching device's 1100 current location. In FIG.
11A, the searching device 1100 may communicate directly with the
first performing device 1102 via the tether. For example, if the
searching device 1100 is connected to the first performing device
1102 via a Bluetooth.RTM. connection, the searching device 1100 may
transmit an indication of a user selection of a displayed result to
the first performing device 1102 using the Bluetooth.RTM.
connection. In the example of FIG. 11A, the first and second
performing devices 1102, 1104 may each have independent network
access (i.e., via the network 106) to the search system 100. In
other examples, the searching device 1100 may be tethered to the
second performing device 1104 in a similar manner as described
above with reference to the first performing device 1102.
[0146] In FIG. 11B, the first performing device 1108 is tethered to
the searching device 1106. In this example, the searching device
1106 may transmit search queries 300 to the search system 100 and
receive search results 308 from the search system 100. In some
examples, the first performing device 1108 may receive the search
results 308 from the search system 100 via the searching device
1106. The first performing device 1108 may be tethered to the
searching device 1106 because the first performing device 1108 may
not have sufficient communication technology for communicating via
the Internet with the search system 100. For example, the first
performing device 1108 may have a communication technology (e.g.,
Bluetooth.RTM.) that cannot connect to the Internet at the
searching device's 1100 current location. In FIG. 11B, the
searching device 1106 may also communicate directly with the first
performing device 1108 via the tether. For example, if the
searching device 1106 is connected to the first performing device
1108 via a Bluetooth.RTM. connection, the searching device 1106 may
transmit an indication of a user selection of a displayed result to
the first performing device 1108 using the Bluetooth.RTM.
connection. In the example of FIG. 11B, the searching device 1106
and the second performing device 1110 may each have independent
network access (i.e., via the network 106) to the search system
100. In other examples, the second performing device 1110 may be
tethered to the searching device 1106 in a similar manner as
described above with reference to the first performing device
1108.
[0147] FIGS. 12A-12B are functional block diagrams that illustrate
other example arrangements of computing devices in which a
searching device 1200, 1208 is tethered to another computing device
1206, 1214, referred to herein as an "intermediate computing
device," or an "intermediate device" 1206, 1214, in order to
communicate with the search system 100. Accordingly, the searching
device 1200, 1208 may communicate with the search system 100 via
the intermediate device 1206, 1214. As described herein, the
searching device 1200, 1208 indicates selected results to one or
more of a first performing device 1202, 1210 and a second
performing device 1204, 1212, each of which is a different
computing device than the intermediate device 1206, 1214. The
searching device 1200, 1208 may indicate a selected result to one
or more of the first and second performing devices 1202, 1204,
1210, 1212 via a direct connection in some examples (e.g., the
direct connection between the searching device 1208 and the first
performing device 1210 shown in FIG. 12B). In other examples, the
searching device 1200, 1208 may communicate with one or more of the
first and second performing devices 1202, 1204, 1210, 1212 via the
Internet.
[0148] As such, FIGS. 12A-12B also illustrate how the searching
device 1200, 1208 may transmit indications of selected results to
more than one performing device 1202, 1204, 1210, 1212. For
example, the searching device 1200, 1208 may transmit a single
indication of a selected result to a particular one of the
performing devices 1202, 1204, 1210, 1212, e.g., based on user
input or other considerations. With respect to FIG. 12A, the
searching device 1200 may indicate a selected result to the first
performing device 1202 and/or the second performing device 1204.
The performing device(s) (i.e., the one or more of the performing
devices 1202, 1204) that receive the indication may then perform
one or more functions indicated by, or associated with, the
indication. The connections between the searching device 1200 and
the first and second performing devices 1202, 1204 may be direct
connections and/or connections through a network (e.g., the network
106), such as the Internet. In the example of FIG. 12A, the
intermediate device 1206 and the first and second performing
devices 1202, 1204 may each have independent network access (i.e.,
via the network 106) to the search system 100. With respect to FIG.
12B, the searching device 1208 is tethered to the intermediate
device 1214 in order to communicate with the search system 100
(i.e., via the network 106). The searching device 1208 may indicate
a selected result to the first performing device 1210 and/or the
second performing device 1212. The performing device(s) (i.e., the
one or more of the performing devices 1210, 1212) that receive the
indication may then perform one or more functions indicated by the
indication. The connections between the searching device 1208 and
the first and second performing devices 1210, 1212 may be direct
connections (e.g., the direct connection between the searching
device 1208 and the first performing device 1210) and/or
connections through a network, e.g., the network 106 (via the
intermediate device 1214), such as the Internet. In the example of
FIG. 12B, the intermediate device 1214 and the second performing
device 1212 may each have independent network access (i.e., via the
network 106) to the search system 100. In other examples, the
searching device 1208 may be tethered to one of the first and
second performing devices 1210, 1212, which may in turn be tethered
to the intermediate device 1214. In these examples, the
intermediate device 1214 may communicate with the search system 100
in the manner described above. Additional arrangements of searching
devices, performing devices, and intermediate devices are also
contemplated herein view of the above-described examples.
[0149] FIG. 13 is a flow diagram that illustrates an example method
1300 for generating search results 308 based on a received search
query 300. The method 1300 is described with respect to the search
module 110 of FIG. 3. In block 1302, the query analysis module 302
receives a search query 300 from (e.g., generated by) a searching
device 112. For example, the searching device 112 may have received
the search query 300 from a user of the searching device 112 (e.g.,
via a GUI of a search application executing on the searching device
112) and transmitted the search query 300 to the query analysis
module 302 (i.e., to the search system 100). In block 1304, the
query analysis module 302 performs an analysis of the search query
300. For example, the query analysis module 302 may perform any of
tokenization, filtering, stemming, synonymization, and stop word
removal with respect to the search query 300. In block 1306, the
set generation module 304 identifies a consideration set of one or
more function records included in the data store 108 using the
search query 300 (e.g., based on an output from the query analysis
module 302). For example, the set generation module 304 may
identify the function records of the consideration set based on one
or more matches between one or more terms of the search query 300
and one or more terms included in ASI and/or a function ID of each
function record.
[0150] In blocks 1308-1310, the set processing module 306 processes
the consideration set of function records. For example, in block
1308, the set processing module 306 generates result scores for the
function records included in the consideration set. In block 1310,
the set processing module 306 selects one or more function records
from the consideration set based on the result scores associated
with the function records. For example, the set processing module
306 may select one or more function records having the highest
(e.g., largest) result scores. In block 1312, the set processing
module 306 generates result objects based on the selected function
records. In block 1314, the set processing module 306 transmits the
result objects to the searching device 112 (i.e., as the search
results 308).
[0151] FIG. 14 is a flow diagram that illustrates an example method
1400 describing operation of a searching device 112 according to
the present disclosure. In block 1402, the searching device 112
receives a search query 300 from a user of the searching device
112. For example, the searching device 112 may have received the
search query 300 from the user via a GUI of a search application
executing on the searching device 112. In block 1404, the searching
device 112 transmits the received search query 300 to the search
system 100. In block 1406, the searching device 112 waits to
receive search results 308 from the search system 100 in response
to transmitting the search query 300. In block 1408, upon receiving
the search results 308 from the search system 100, the searching
device 112 displays (e.g., via the search application) the received
search results 308 (e.g., generates displayed results based on the
received search results 308) to the user. In block 1410, the
searching device 112 waits for the user to select one of the
displayed results. In block 1412, upon detecting (e.g., via the
search application) a selection of a displayed result by the user,
the searching device 112 selects one of a plurality of performing
devices 114. For example, the searching device 112 may select the
one of the plurality of performing devices 114 based on one or more
of location data, availability data, compatibility data,
connectivity data, and historical connectivity data associated with
the selected performing device 114, as described herein. In block
1414, the searching device 112 transmits an indication of the
selected result to the selected one of the plurality of performing
devices 114. As described herein, in some examples, the indication
may include or reference one or more AAMs, WAMs, and/or application
download addresses. As also described herein, in other examples,
the indication may include one or more instructions or commands for
the performing device 114.
[0152] FIG. 15 is a flow diagram that illustrates another example
method 1500 describing operation of a searching device 112
according to the present disclosure. Blocks 1502-1510 of the
example method 1500 correspond to blocks 1402-1410 of the example
method 1400 described above with reference to FIG. 14. In block
1512, the searching device 112 waits for the user to select one of
a plurality of performing devices 114. In block 1514, upon
detecting (e.g., via a search application executing on the
searching device 112) a selection of a performing device 114 by the
user, the searching device 112 transmits an indication of the
selected result to the selected one of the plurality of performing
devices 114. As described herein, in some examples, the indication
may include or reference one or more AAMs, WAMs, and/or application
download addresses. As also described herein, in other examples,
the indication may include one or more instructions or commands for
the performing device 114.
[0153] FIG. 16 is a flow diagram that illustrates an example method
1600 describing operation of a performing device 114 according to
the present disclosure. In block 1602, the performing device 114
receives an indication of a selected result from a searching device
112. In other words, the performing device 114 receives an
indication of a search result 308 that has been displayed on the
searching device 112 and selected by a user of the searching device
112. In this example, the user and/or the searching device 112 may
have selected the performing device 114 from among multiple
different performing devices 114 in the manner previously
described. The indication may include a variety of different types
of data. For example, the indication may include one or more access
mechanisms. In some examples, the indication may include on or more
AAMs. Additionally, or alternatively, the indication may include a
WAM. In some examples, the indication may include an application
download address, e.g., along with the AAM(s) in cases where a
native application referenced by the AAM(s) is not available on the
performing device 114. In other examples, the indication may
reference, rather than include, one or more of the AAM(s), WAM, and
application download address described above. In still other
examples, the indication may include one or more instructions or
commands for the performing device 114, as described herein.
[0154] In block 1604, the performing device 114 selects an access
mechanism using the indication received from the searching device
112. For example, the performing device 114 may select an AAM
(e.g., from the indication itself, or using the indication as a
reference) if the performing device 114 has a native application
that is referenced by the AAM installed on the performing device
114. In another example, the performing device 114 may select a WAM
(e.g., from the indication itself, or using the indication as a
reference) if the performing device 114 does not have a native
application that will handle an AAM included in, or referenced by,
the indication installed on the performing device 114. In still
other examples, if the indication includes, or references, an
application download address, the performing device 114 may be
directed to a download site or other location (e.g., a digital
distribution platform) where the performing device 114 can download
a native application. In these examples, the native application may
be referenced by an AAM also included in, or referenced by, the
indication.
[0155] In block 1606, the performing device 114 performs a function
according to the selected access mechanism. For example, if the
selected access mechanism is an AAM, the performing device 114 may
launch a native application referenced by the AAM and set the
native application into a state specified by the AAM. If the
selected access mechanism is a WAM, the performing device 114 may
launch a web browser application and perform a function specified
by the WAM (e.g., access a web resource using a URL included in the
WAM).
[0156] As described herein, in some examples, upon receiving an
indication of a selected result, instead of launching a native
application and setting the application into a particular state, or
launching a web browser and accessing a web resource, the
performing device 114 can show an expanded view of the selected
result (e.g., a view that includes more image/text content, or
detail and/or GUI input/output options). This may be beneficial in
scenarios where the user would like to view the selected result on
a larger screen, assuming that the searching device 112 (e.g., a
smart watch) has a relatively limited display screen size and that
the performing device 114 (e.g., a smart phone, or a tablet) has a
relatively larger display screen size. The user may then interact
with the expanded view in order to cause the performing device 114
to launch a native application and set the application into a
particular state, or launch a web browser and access a web
resource.
[0157] In some examples, the searching device 112 may automatically
(e.g., without additional user input) indicate to the performing
device 114 that an expanded view of a selected result should be
shown on the performing device 114. In other examples, the
searching device 112 may prompt the user to select whether an
expanded view of a selected result should be shown on the
performing device 114, or whether a native application referenced
by the selected result should be launched by the performing device
114 using the selected result. For example, after the user selects
a displayed result on the searching device 112, the searching
device 112 may display a button or another GUI input element that
includes the string "Show expanded view" or "Launch app." In this
manner, the button or GUI input element may enable the user to
select whether the performing device 114 should display an expanded
view of the selected result, or launch a native application
referenced by the selected result. If the user selects the button
or GUI input element that includes the string "Show expanded view,"
the searching device 112 may transmit an indication to the
performing device 114 to show an expanded view of the selected
result. If the user selects the button or GUI input element that
includes the string "Launch app," the searching device 112 may
transmit an indication to the performing device 114 to launch the
native application according to the selected result. In this
example, the performing device 114 may launch the native
application and set the native application into an application
state specified by the selected result, as described herein.
[0158] In some examples, the searching device 112 may store search
results 308 for later use (e.g., based on user input or other
considerations). For example, at a later time following performing
a search using the searching device 112, the user may recall a
stored search result 308 and select the stored search result 308 to
cause a performing device 114 to perform a function indicated by
the stored search result 308. In one example in which the searching
device 112 is a wrist watch computing device (e.g., a smart watch),
the searching device 112 may store search results 308 so that the
user can easily retrieve the stored search results 308 at a later
time for selection, as described above. Storing search results 308
on the searching device 112 in this manner may save the user time
that would otherwise be spent performing a new search for the
search results 308. In some examples, the searching device 112 may
store some of the search results 308. For example, the searching
device 112 may maintain a history of (i.e., store) previously
selected search results 308. A stored search result 308 may include
some or all of the result object data associated with a search
result 308 such that, upon selection of the stored search result
308, a searching device 112 can indicate to a performing device 114
to perform a function associated with the stored search result 308
and the performing device 114 is able to perform the function. In
some examples, stored search results 308 may be stored on computing
devices other than the searching device 112 (e.g., a performing
device 114). In other examples, the searching device 112 can
transfer the stored search results 308 to one or more other
computing devices (e.g., a performing device 114, or another
computing device).
[0159] As described herein, in some scenarios, there may be
multiple possible performing devices 114 that may be used to
perform a function indicated by a selected result. In some
examples, the searching device 112 may rank the possible performing
devices 114 for consideration. For example, the searching device
112 may rank the possible performing devices 114 based on a variety
of different considerations. Example ranking considerations may
include, but are not limited to, physical proximity of the
searching device 112 and a possible performing device 114, whether
and/or how often a possible performing device 114 has been selected
in the past, whether a possible performing device 114 has a native
application capable of providing access to the chosen function
(e.g., the selected result), whether the searching device 112 has
just sent (e.g., within seconds) an indication to a possible
performing device 114, and whether a possible performing device 114
is currently executing an application. In some examples, the
searching device 112 can automatically select a performing device
114 from the possible performing devices 114 based on the ranking
(e.g., select a highest-ranked performing device 114). In other
examples, the searching device 112 can show a user a menu that
includes a list of the possible performing devices 114 that are
arranged based on the ranking. In this example, the user can select
a performing device 114 from the list.
[0160] FIG. 17 is a functional block diagram of an example
searching device 112 and an example performing device 114 in
communication with the search system 100 according to the
techniques of the present disclosure. As shown in FIG. 17, the
searching device 112 includes one or more processing units 216, one
or more memory components 218, one or more input/output (I/O)
components 220, and one or more interconnect components 222. The
memory component(s) 218 store an OS 224, a search application 226,
a web browser application 228, a performing device selection module
230, a user selection indication module 232, and one or more native
applications 234 (e.g., native applications installed on the
searching device 112). As also shown in FIG. 17, the performing
device 114 includes one or more processing units 236, one or more
memory components 238, one or more I/O components 240, and one or
more interconnect components 242. The memory component(s) 238 store
an OS 244, one or more native applications 246 (e.g., native
applications installed on the performing device 114), a web browser
application 248, and a user selection indication module 250.
[0161] Each of the processing unit(s) 216, 236 may be configured to
execute instructions stored in the corresponding ones of the memory
component(s) 218, 238 and communicate with the corresponding ones
of the memory component(s) 218, 238 and the I/O component(s) 220,
240 (e.g., via the corresponding ones of the interconnect
component(s) 222, 242). Each of the OS 224, 244, search application
226, web browser application 228, 248, performing device selection
module 230, user selection indication module 232, 250, and native
application(s) 234, 246 may be embodied in computer-executable
instructions and executed by the corresponding one of the
processing unit(s) 216, 236. The memory component(s) 218, 238 may
be configured to store executable instructions, system parameters,
and other data in addition to the contents described above. Each of
the I/O component(s) 220, 240 may be configured to (e.g., at the
direction of the corresponding ones of the processing unit(s) 216,
236) receive inputs to the corresponding one of the searching and
performing devices 112, 114 and transmit outputs from corresponding
one of the devices 112, 114. The interconnect component(s) 222, 242
(e.g., a bus) may be configured to provide communication between
the corresponding ones of the processing unit(s) 216, 236, the
memory component(s) 218, 238, and the I/O component(s) 220, 240, as
well as among other devices.
[0162] The units, components, and modules of the searching and
performing devices 112, 114 described above may enable each of the
devices 112, 114, to perform the techniques attributed to the
device according to this disclosure. For example, the searching
device 112 (e.g., the processing unit(s) 216 executing instructions
stored in the memory component(s) 218) may be configured to receive
(e.g., via the I/O component(s) 220) a search query 300 from a
user, transmit (e.g., via the I/O component(s) 220) the search
query 300 to the search system 100, and receive (e.g., via the I/O
component(s) 220) search results 308 that are responsive to the
search query 300 from the search system 100. The searching device
112 may be further configured to display (e.g., via the I/O
component(s) 220) the search results 308 to a user of the searching
device 112. The searching device 112 may also be configured to
receive (e.g., via the I/O component(s) 220) a selection of one of
the search results 308 from the user, select (e.g., based on a user
input or other data received via the I/O component(s) 220) the
performing device 114 from among a plurality of performing devices
114, and transmit (e.g., via the I/O component(s) 220) an
indication of the selection to the performing device 114.
[0163] To perform one or more of receiving the search query 300,
transmitting the search query 300, receiving the search results
308, displaying the search results 308, receiving the selection of
one of the search results 308, selecting the performing device 114,
and transmitting the indication of the selection to the performing
device 114, the processing unit(s) 216 may execute one or more
instructions included in the memory component(s) 218. For example,
the processing unit(s) 216 may execute instructions associated with
one or more of the OS 224, the search application 226, the web
browser application 228, the performing device selection module
230, the user selection indication module 232, and the native
application(s) 234. In a specific example, the processing unit(s)
216 may execute instructions that cause the searching device 112 to
run the OS 224. To receive the search query 300, transmit the
search query 300, receive the search results 308, display the
search results 308, receive the selection of one of the search
results 308, select the performing device 114, and transmit the
indication of the selection to the performing device 114, the
processing unit(s) 216 may further execute instructions that cause
the searching device 112 to run the search application 226 or the
web browser application 228 within the OS 224. In some examples, to
select the performing device 114, the processing unit(s) 216 may
execute instructions that cause the searching device 112 to run the
performing device selection module 230. The performing device
selection module 230 may be a dedicated software module configured
to select a performing device 114 from among a plurality of
performing devices 114 based on user input or other data, as
described herein. In some examples, to transmit the indication, the
processing unit(s) 216 may execute instructions that cause the
searching device 112 to run the user selection indication module
232. The user selection indication module 232 may be a dedicated
software module configured to transmit indications of user
selections of search results 308 on the searching device 112 to a
selected performing device 114.
[0164] The performing device 114 (e.g., the processing unit(s) 236
executing instructions stored in the memory component(s) 238) may
be configured to receive (e.g., via the I/O component(s) 240) the
indication and perform a function indicated by the one of the
search results 308 in response to receiving the indication. To
perform one or more of receiving the indication and performing the
function, the processing unit(s) 236 may execute one or more
instructions included in the memory component(s) 238. For example,
the processing unit(s) 236 may execute instructions associated with
one or more of the OS 244, the native application(s) 246, the web
browser application 248, and the user selection indication module
250. In a specific example, the processing unit(s) 236 may execute
instructions that cause the performing device 114 to run the OS
244. To receive the indication, the processing unit(s) 236 may
further execute instructions that cause the performing device 114
to run the user selection indication module 250 within the OS 244.
The user selection indication module 250 may be a dedicated
software module configured to receive indications of user
selections of search results 308 on the searching device 112 at the
performing device 114. To perform the function, the processing
unit(s) 236 may execute instructions that cause the performing
device 114 to run the native application(s) 246 or the web browser
application 248 within the OS 244.
[0165] The modules and data stores included in the search system
100 represent features that may be included in the search system
100 of the present disclosure. For example, the search module 110,
the query analysis module 302, the set generation module 304, the
set processing module 306, and the data store 108 may represent
features included in the search system 100. The modules and data
stores described herein may be embodied by electronic hardware,
software, firmware, or any combination thereof. Depiction of
different features as separate modules and data stores does not
necessarily imply whether the modules and data stores are embodied
by common or separate electronic hardware or software components.
In some implementations, the features associated with the one or
more modules and data stores depicted herein may be realized by
common electronic hardware and software components. In some
implementations, the features associated with the one or more
modules and data stores depicted herein may be realized by separate
electronic hardware and software components.
[0166] The modules and data stores may be embodied by electronic
hardware and software components including, but not limited to, one
or more processing units, one or more memory components, one or
more input/output (I/O) components, and interconnect components.
The interconnect components may be configured to provide
communication between the one or more processing units, the one or
more memory components, and the one or more I/O components. For
example, the interconnect components may include one or more buses
that are configured to transfer data between electronic components.
The interconnect components may also include control circuits
(e.g., a memory controller and/or an I/O controller) that are
configured to control communication between electronic
components.
[0167] The one or more processing units may include one or more
central processing units (CPUs), graphics processing units (GPUs),
digital signal processing units (DSPs), or other processing units.
The one or more processing units may be configured to communicate
with the one or more memory components and the one or more I/O
components. For example, the one or more processing units may be
configured to communicate with the one or more memory components
and the one or more I/O components via the interconnect
components.
[0168] A memory component, or memory, of the present disclosure may
include any volatile or non-volatile media. For example, the memory
may include, but is not limited to, electrical media, magnetic
media, and/or optical media, such as a random access memory (RAM),
read-only memory (ROM), non-volatile RAM (NVRAM),
electrically-erasable programmable ROM (EEPROM), Flash memory, hard
disk drives (HDD), magnetic tape drives, optical storage technology
(e.g., compact disc (CD), digital versatile disc (DVD.RTM.), and/or
Blu-ray Disco), or any other memory components.
[0169] The one or more memory components may include (e.g., store)
data described herein. For example, the one or more memory
components may include the data included in the function records of
the data store 108. The one or more memory components may also
include instructions that may be executed by the one or more
processing units. For example, the one or more memory components
may include computer-readable instructions that, when executed by
the one or more processing units, cause the one or more processing
units to perform the various functions attributed to the modules
and data stores described herein.
[0170] The one or more I/O components may refer to electronic
hardware and software that provides communication with a variety of
different devices. For example, the one or more I/O components may
provide communication between other devices and the one or more
processing units and the one or more memory components. In some
examples, the one or more I/O components may be configured to
communicate with a computer network. For example, the one or more
I/O components may be configured to exchange data over a computer
network using a variety of different physical connections, wireless
connections, and protocols. The one or more I/O components may
include, but are not limited to, network interface components
(e.g., a network interface controller), repeaters, network bridges,
network switches, routers, and firewalls. In some examples, the one
or more I/O components may include hardware and software that is
configured to communicate with various human interface devices,
including, but not limited to, display screens, keyboards, pointer
devices (e.g., a mouse), touchscreens, speakers, and microphones.
In some examples, the one or more I/O components may include
hardware and software that is configured to communicate with
additional devices, such as external memory (e.g., external
HDDs).
[0171] In some implementations, the search system 100 may be a
system of one or more computing devices (e.g., a computer search
system) that are configured to implement the techniques described
herein. Put another way, the features attributed to the modules and
data stores described herein may be implemented by one or more
computing devices. Each of the one or more computing devices may
include any combination of electronic hardware, software, and/or
firmware described above. For example, each of the one or more
computing devices may include any combination of the processing
units, memory components, I/O components, and interconnect
components described above. The one or more computing devices of
the search system 100 may also include various human interface
devices, including, but not limited to, display screens, keyboards,
pointing devices (e.g., a mouse), touchscreens, speakers, and
microphones. The one or more computing devices may also be
configured to communicate with additional devices, such as external
memory (e.g., external HDDs).
[0172] The one or more computing devices of the search system 100
may be configured to communicate with the network 106. The one or
more computing devices may also be configured to communicate with
one another via a computer network. In some examples, the one or
more computing devices may include one or more server computing
devices configured to communicate with user devices (e.g., receive
search queries 300 and transmit search results 308), gather data
from data sources, index the data, store the data, and/or store
other documents. The one or more computing devices may reside
within a single machine at a single geographic location in some
examples. In other examples, the one or more computing devices may
reside within multiple machines at a single geographic location. In
still other examples, the one or more computing devices may be
distributed across a number of geographic locations.
[0173] Additionally, the various implementations of the search
system 100 described above (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 searching device 112 and the
performing devices 114 described herein.
* * * * *