U.S. patent application number 14/575213 was filed with the patent office on 2015-09-10 for selecting and accessing search results using 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 | 20150254351 14/575213 |
Document ID | / |
Family ID | 54017345 |
Filed Date | 2015-09-10 |
United States Patent
Application |
20150254351 |
Kind Code |
A1 |
Kagan; Tomer ; et
al. |
September 10, 2015 |
Selecting And Accessing Search Results Using Different Devices
Abstract
Techniques include transmitting, using a first computing device,
a search query to a search system configured to generate search
results in response to a received search query. The techniques
further include displaying search results received from the search
system in response to the search query on a second computing
device. In this example, each search result indicates a function
for a computing device to perform. For example, a user selecting
each search result may cause a computing device to set a software
application into a particular application state. The techniques
also include detecting a user selection of one of the search
results at the second computing device, transmitting, using the
second computing device, an indication of the user selection to the
first computing device, and performing, using the first computing
device, the function indicated by the one of the search results 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/575213 |
Filed: |
December 18, 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/951 20190101;
G06F 16/957 20190101; G06F 3/04883 20130101; G06F 3/0482 20130101;
G06F 16/9537 20190101; G06F 3/04842 20130101; G06F 16/248 20190101;
G06F 1/163 20130101; H04L 67/025 20130101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method comprising: transmitting, using a first computing
device, a search query to a search system configured to generate
search results in response to a received search query; displaying
search results received from the search system in response to the
search query on a second computing device, wherein each search
result indicates a function for a computing device to perform;
detecting a user selection of one of the search results at the
second computing device; transmitting, using the second computing
device, an indication of the user selection to the first computing
device; and performing, using the first computing device, the
function indicated by the one of the search results in response to
receiving the indication.
2. The method of claim 1, further comprising: receiving the search
results from the search system at the first computing device in
response to the search query; and transmitting, using the first
computing device, the search results to the second computing
device.
3. The method of claim 1, further comprising receiving the search
results from the search system at the second computing device in
response to the search query.
4. 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 first computing
device is configured to set an application into a state of the
application using the access mechanism.
5. The method of claim 4, wherein the application comprises a
native application, wherein the access mechanism references the
native application and indicates one or more operations for the
native application to perform, and wherein to set the native
application into the state of the native application using the
access mechanism, the first computing device is configured to
launch the native application on the first computing device and
cause the native application to perform the one or more
operations.
6. The method of claim 5, wherein the one of the search results
further includes an application download address, and wherein to
set the native application into the state of the native application
using the access mechanism, the first computing device is further
configured to install the native application on the first computing
device using the application download address prior to launching
the native application and causing the native application to
perform the one or more operations.
7. The method of claim 4, wherein the application comprises a
web-based application, wherein the access mechanism includes a
uniform resource locator (URL), and wherein to set the web-based
application into the state of the web-based application using the
access mechanism, the first computing device is configured to
launch a web browser application on the first computing device and
access the state of the web-based application using the URL.
8. The method of claim 1, wherein to perform the function indicated
by he one of search results, the first computing device is
configured to: display an expanded version of the one of the search
results to the user; receive a selection of the expanded version of
the one of the search results from the user; and perform the
function indicated by the one of the search results in response to
receiving the selection of the expanded version of the one of the
search results.
9. The method of claim 1, wherein each of one or more of the first
computing device and the second computing device comprises one of:
a user wearable computing device having attachments to affix to a
user's body; a smart phone computing device; a tablet computing
device; and a computing device that is installed in a vehicle.
10. The method of claim 1, wherein the first computing device is
connected to the second computing device via a tethered connection
comprising at least one of a short-range wired connection and a
short-range wireless connection.
11. The method of claim 10, wherein transmitting the search query
to the search system comprises transmitting the search query via
the tethered connection.
12. The method of claim 10, wherein transmitting the indication of
the user selection to the first computing device comprises
transmitting the indication via the tethered connection.
13. The method of claim 10, further comprising receiving the search
results from the search system at the second computing device via
the tethered connection.
14. The method of claim 1, wherein transmitting the search query to
the search system comprises transmitting the search query via a
first network connection, and wherein transmitting the indication
of the user selection to the first computing device comprises
transmitting the indication via a second network connection that is
different than the first network connection.
15. The method of claim 1, wherein transmitting the search query to
the search system comprises transmitting the search query via a
network connection, and wherein transmitting the indication of the
user selection to the first computing device comprises transmitting
the indication via the same network connection.
16. The method of claim 1, wherein transmitting the search query to
the search system comprises transmitting the search query via an
intermediate computing device that is different than the second
computing device.
17. The method of claim 1, further comprising receiving the search
results from the search system at the second computing device via
an intermediate computing device that is different than the first
computing device.
18. The method of claim 1, wherein the one of the search results
includes an access mechanism, wherein transmitting the indication
of the user selection to the first computing device comprises
transmitting the access mechanism, and wherein to perform the
function indicated by the one of the search results in response to
receiving the indication, the first computing device is configured
to set an application into a state of the application using the
access mechanism.
19. The method of claim 1, wherein the one of the search results
includes an access mechanism, wherein transmitting the indication
of the user selection to the first computing device comprises
transmitting an identifier that indicates the one of the search
results, and wherein to perform the function indicated by the one
of the search results in response to receiving the indication, the
first computing device is configured to: retrieve the one of the
search results using the identifier; select the access mechanism
from the one of the search results; and set an application into a
state of the application using the access mechanism.
20. The method of claim 1, wherein transmitting the indication of
the user selection to the first computing device comprises
transmitting an identifier that indicates a function record used to
generate the one of the search results, wherein the function record
includes an access mechanism, and wherein to perform the function
indicated by the one of the search results in response to receiving
the indication, the first computing device is configured to: access
the function record using the identifier; select the access
mechanism from the function record; and set an application into a
state of the application using the access mechanism.
21. A system comprising: a first computing device; a second
computing device; and a search system, wherein the search system is
configured to receive a search query from the first computing
device and generate search results that are responsive to the
search query, wherein the second computing device is configured to
display the search results to a user, receive a selection of one of
the search results from the user, and transmit an indication of the
selection to the first computing device, and wherein the first
computing device is configured to perform a function indicated by
the one of the search results in response to receiving the
indication.
22. The system of claim 21, wherein the search system is further
configured to transmit the search results to the first computing
device in response to the search query, and wherein the first
computing device is further configured to transmit the search
results to the second computing device.
23. The system of claim 21, wherein the search system is further
configured to transmit the search results to the second computing
device in response to the search query.
24. The system of claim 21, 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 first computing
device is configured to set an application into a state of the
application using the access mechanism.
25. The system of claim 24, wherein the application comprises a
native application, wherein the access mechanism references the
native application and indicates one or more operations for the
native application to perform, and wherein to set the native
application into the state of the native application using the
access mechanism, the first computing device is configured to
launch the native application on the first computing device and
cause the native application to perform the one or more
operations.
26. The system of claim 24, wherein the application comprises a
web-based application, wherein the access mechanism includes a
uniform resource locator (URL), and wherein to set the web-based
application into the state of the web-based application using the
access mechanism, the first computing device is configured to
launch a web browser application on the first computing device and
access the state of the web-based application using the URL.
27. The system of claim 21, wherein to perform the function
indicated by the one of the search results, the first computing
device is configured to: display an expanded version of the one of
the search results to the user; receive a selection of the expanded
version of the one of the search results from the user; and perform
the function indicated by the one of the search results in response
to receiving the selection of the expanded version of the one of
the search results.
28. The system of claim 21, wherein each of one or more of the
first computing device and the second computing device comprises
one of: a user wearable computing device having attachments to
affix to a user's body; a smart phone computing device; a tablet
computing device; and a computing device that is installed in a
vehicle.
29. The system of claim 22, wherein the first computing device is
connected to the second computing device via a tethered connection
comprising at least one of a short-range wired connection and a
short-range wireless connection.
30. The system of claim 22, wherein the one of the search results
includes an access mechanism, wherein to transmit the indication of
the user selection to the first computing device, the second
computing device is configured to transmit the access mechanism,
and wherein to perform the function indicated by the one of the
search results in response to receiving the indication, the first
computing device is configured to set an application into a state
of the application using the access mechanism.
31. The system of claim 22, wherein the one of the search results
includes an access mechanism, wherein to transmit the indication of
the user selection to the first computing device, the second
computing device is configured to transmit an identifier that
indicates the one of the search results, and wherein to perform the
function indicated by the one of the search results in response to
receiving the indication, the first computing device is configured
to: retrieve the one of the search results using the identifier;
select the access mechanism from the one of the search results; and
set an application into a state of the application using the access
mechanism.
32. The system of claim 22, wherein to transmit the indication of
the user selection to the first computing device, the second
computing device is configured to transmit an identifier that
indicates a function record used to generate the one of the search
results, wherein the function record includes an access mechanism,
and wherein to perform the function indicated by the one of the
search results in response to receiving the indication, the first
computing device is configured to: access the function record using
the identifier; select the access mechanism from the function
record; and set an application into a state of the application
using the access mechanism.
33. A non-transitory, computer-readable storage medium comprising
instructions that cause one or more computing devices to: transmit,
using a first computing device, a search query to a search system
configured to generate search results in response to a received
search query; display search results received from the search
system in response to the search query on a second computing
device, wherein each search result indicates a function for a
computing device to perform; detect a user selection of one of the
search results at the second computing device; transmit, using the
second computing device, an indication of the user selection to the
first computing device; and perform, using the first computing
device, the function indicated by the one of the search results in
response to receiving the indication.
Description
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This 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 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] In one example, a method includes transmitting, using a
first computing device, a search query to a search system
configured to generate search results in response to a received
search query. The method further includes displaying search results
received from the search system in response to the search query on
a second computing device. In this example, each search result
indicates a function for a computing device to perform. The method
also includes detecting a user selection of one of the search
results at the second computing device, transmitting, using the
second computing device, an indication of the user selection to the
first computing device, and performing, using the first computing
device, the function indicated by the one of the search results in
response to receiving the indication.
[0005] In another example, a system includes a first computing
device, a second computing device, and a search system. The search
system is configured to receive a search query from the first
computing device and generate search results that are responsive to
the search query. The second computing device is configured to
display the search results to a user, receive a selection of one of
the search results from the user, and transmit an indication of the
selection to the first computing device. The first computing device
is configured to perform a function indicated by the one of the
search results in response to receiving the indication.
[0006] In another example, a non-transitory computer-readable
storage medium includes instructions that cause one or more
computing devices to transmit, using a first computing 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 display search
results received from the search system in response to the search
query on a second computing device. In this example, each search
result indicates a function for a computing device to perform. The
instructions also cause the one or more computing devices to detect
a user selection of one of the search results at the second
computing device, transmit, using the second computing device, an
indication of the user selection to the first computing device, and
perform, using the first computing device, the function indicated
by the one of the search results in response to receiving the
indication.
[0007] The details of one or more implementations of the disclosure
are set forth in the accompanying drawings and the description
below. Other aspects, features, and advantages will be apparent
from the description and drawings, and from the claims.
BRIEF DESCRIPTION OF DRAWINGS
[0008] FIG. 1 illustrates an example environment that includes a
first computing device, a second computing device, and a search
system.
[0009] FIG. 2 is a flow diagram that illustrates an example method
for generating, displaying, and selecting search results and
accessing the functionality of the selected search results using
different computing devices.
[0010] FIG. 3 is a functional block diagram of an example search
module of a search system.
[0011] FIG. 4 illustrates an example function record of a search
system.
[0012] FIGS. 5A-5D illustrate example graphical user interfaces
(GUIs) that may be generated on computing devices according to the
present disclosure.
[0013] FIGS. 6A-6C illustrate other example GUIs that may be
generated on computing devices according to the present
disclosure.
[0014] FIGS. 7A-7B illustrate example GUIs that include one or more
user selectable links.
[0015] FIGS. 8A-9D illustrate example arrangements of first and
second computing devices in communication with a search system via
a network.
[0016] FIGS. 10A-10B illustrate example arrangements of first and
second computing devices and an intermediate device in
communication with a search system via a network.
[0017] FIGS. 11-12 are flow diagrams that each illustrate an
example method for performing a search and accessing search results
using tethered first and second computing devices.
[0018] FIGS. 13-14 are flow diagrams that each illustrate an
example method for performing a search and accessing search results
using a computing device tethered to an intermediate device.
[0019] FIG. 15 is a flow diagram that illustrates an example method
for performing a search for function records based on a received
search query.
[0020] FIGS. 16-17 are flow diagrams that each illustrate an
example method describing operation of a computing device according
to the present disclosure.
[0021] FIGS. 18A-18C illustrate other example GUIs that may be
generated on computing devices according to the present
disclosure.
[0022] FIG. 19 is a data flow diagram that illustrates an example
flow of data among a user, a first computing device, a second
computing device, and a search system.
[0023] FIG. 20 is a data flow diagram that illustrates a specific
example of the flow of data illustrated in FIG. 19.
[0024] FIG. 21 is a functional block diagram of example first and
second computing devices in communication with a search system.
DETAILED DESCRIPTION
[0025] The present disclosure generally relates to the field of
search, and, more particularly, to techniques for generating,
displaying, selecting, and accessing search results on different
computing devices. According to the techniques disclosed herein, a
first computing 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 first computing device may
receive the search query from a user of the first computing device.
The search system may generate search results in response to
receiving the search query from the first computing device. In this
example, each search result may indicate a function for a computing
device (e.g., the first computing 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 search system may transmit the
search results to the first computing device. The first computing
device may then transmit the search results to a second computing
device. Alternatively, the search system may transmit the search
results to the second computing device. In any case, the second
computing device may display the search results transmitted by the
search system to the user. The second computing device may further
detect a user selection of one of the search results and transmit
an indication of the user selection to the first computing device.
The indication may include one or more instructions or commands for
the first computing device. The first computing device may perform
the function indicated by the one of the search results in response
to receiving the indication. For example, the first computing
device may set a software application included on the first
computing device into a particular application state using an
access mechanism included in the one of the search results, as
described above.
[0026] 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.
[0027] 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.
[0028] 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.
[0029] As explained above, the present disclosure is directed to
techniques for generating search results, displaying the search
results, detecting user selections of the displayed search results,
and performing functions indicated by selected search results using
different computing devices. In some examples described herein, a
user may enter a search query into a first computing device (e.g.,
a vehicle navigation system) and a second computing device (e.g., a
smart watch) may display search results that are responsive to the
search query. In these examples, the user may select one of the
displayed search results on the second computing device that then
causes the first computing device to perform one or more
operations, or functions, indicated by the selected search result.
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 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 this example,
the second computing device may be a wearable computing device
(e.g., a smart watch on the user's wrist). In other examples, the
first computing device may be a wearable computing device (e.g., a
smart watch, so-called "smart glasses," or so-called "smart contact
lenses"), and the second computing device may be a mobile computing
device, such as a smart phone, or a tablet, or another computing
device, such as a vehicle navigation system, a television, or a
personal computer.
[0030] According to the techniques disclosed herein, a user enters
a search query into a first computing device. The first computing
device transmits the search query to a search system. In one
example, the first computing device may transmit the search query
to the search system via another user computing device (e.g., a
"second computing device," and/or another intermediate computing
device, which are described below) to which the first computing
device is tethered. The first computing device being tethered to
another user computing device, as described herein, may refer to
the first computing 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 first
computing device to the search system via the Internet. In another
example, the first computing device may not be tethered to another
user computing device, but instead the first computing 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 a second computing device that is different than the
first computing device, e.g., via the first computing device and/or
another intermediate computing device. The second computing 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."
[0031] The user can select a displayed result on the second
computing device. In response to selection of the displayed result,
the second computing device indicates to the first computing device
that the displayed result has been selected. The displayed result
that is selected by the user on the second computing device may be
referred to herein as a "selected search result," or a "selected
result," The first computing device performs one or more
operations, or functions, according to the selected result in
response to receiving the indication from the second computing
device. For example, the first computing device can launch a native
application included on the first computing device and set the
native application into a state indicated by the selected result.
The user that entered the search query into the first computing
device can then view and interact with the launched native
application on the first computing device. In another example,
instead of launching a native application, the first computing
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
second computing device e.g., a smart watch) has a relatively
limited display screen size and that the first computing device
(e.g., a smart phone, or a tablet) has a relatively larger display
screen size.
[0032] The techniques of the present disclosure may be implemented
for various different network topology arrangements of the first
computing device, the second computing device, and the search
system. In some examples (e.g., FIG. 9A), the first computing
device may be tethered to the second computing device such that the
first computing device communicates with the search system (e.g.,
to transmit search queries) via the second computing device. For
example, the first computing device may communicate with the second
computing device via a short-range wired connection (e.g., USB) or
a short-range wireless connection (e.g., Bluetooth.RTM.), and the
second computing device may communicate with the search system via
the Internet (e.g., via a cellular network, or a home router).
Alternatively (e.g., FIG. 9C), the second computing device may be
tethered to the first computing device such that the second
computing device communicates with the search system (e.g., to
receive search results) via the first computing device. For
example, the second computing device may communicate with the first
computing device via a short-range wired connection (e.g., USB) or
a short-range wireless connection (e.g., Bluetooth.RTM.), and the
first computing 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. 8A), the first computing device and the
second computing device may independently communicate with the
search system. For example, the first computing device and the
second computing device may have their own separate wireless
interact 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 first computing device and the second
computing device. For example, the first computing device may be
configured to communicate with the Internet via a cellular radio,
or network, connection and the second computing device may be
configured to communicate with the Internet via a Wi-Fi.RTM.
connection.
[0033] 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 and the second computing device
receives the result objects (e.g., directly, via the first
computing device, and/or via an intermediate computing device). The
second computing device then generates one or more displayed
results using the result objects. For example, the second computing
device may generate one displayed result for each result object
transmitted by the search system. In some implementations, the
second computing device may display only a single displayed result
at a time (e.g., as shown in FIGS. 5B-5D and 7A). For example, if
the second computing 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 second computing device with a single displayed result. In
this example, a user may use a gesture (e.g., a swipe) on a
touchscreen of the second computing device, or interact with a
physical button of the second computing 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
second computing device may be configured to show only a single
displayed result, in other examples, the second computing device
maybe configured to display multiple different displayed results at
a time (e.g., as shown in FIG. 7B). For example, the second
computing 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 second
computing device, or interact with a physical button of the second
computing device.
[0034] 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 sonic 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 second computing 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 the first computing device and
the song that will be played by the application when the user
selects the displayed result on the second computing device.
Example displayed results are illustrated in FIGS. 5A-7B.
[0035] A result object may also include data (e.g., instructions)
that defines how to render a displayed result. The second computing
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 second computing device. For example, if the second computing
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 second
computing 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 second
computing device may receive a result object that does not include
formatting and arrangement data. In these examples, the second
computing device (e.g., a native application, a web browser, and/or
an operating system (OS) of the second computing device) may
determine how to format a displayed result corresponding to the
received result object.
[0036] 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 second computing 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.
[0037] A result object can further include data (e.g.,
instructions) that defines how the second computing device
indicates selection of the displayed result to the first computing
device. In examples where the second computing device is directly
connected (e.g., wirelessly via Bluetooth.RTM.) to the first
computing device, the second computing device can indicate a
selection of a displayed result to the first computing device via
the direct connection, as illustrated in FIGS. 9A, 9C, 10A, and
10B. In examples where the second computing device is not directly
connected (e.g., via a wireless connection, or a wired connection)
to the first computing device (FIG. 8A), the second computing
device can indicate a selection of a displayed result to the first
computing device by transmitting an indication of the selection to
the first computing device via the Internet, or a more local
network, such as a home or business network (e.g., LAN or
WLAN).
[0038] The indication of the selected result sent from the second
computing device to the first computing 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
second computing device may transmit one or more AAMs of the
selected result to the first computing device so that the first
computing device can access a state of a native application
installed on the first computing device. In this example, the
second computing device may transmit an application download
address also included in the selected result to the first computing
device so that the first computing device can download and install
the native application. In another example, the second computing
device may transmit a WAM of the selected result to the first
computing device so that the first computing device can access a
web address (e.g., a URL) using a web browser installed on the
first computing device. In examples where the second computing
device receives the search results via the first computing device
(e.g., via the tethered connection of FIGS. 9C), the second
computing device may not need to transmit an access mechanism, but
instead may indicate to the first computing device which search
result (e.g., via a rank number) has been selected by the user. In
these examples, since the first computing device relays the search
results to the second computing device, the first computing device
may already have one or more access mechanisms included in the
search results stored in the first computing device. This may allow
the second computing 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 second computing device may transmit a function identifier (ID)
to the first computing device. In this example, the first computing
device may use the function ID to access a function record used by
the search system to generate the selected result. The first
computing device may then select one or more access mechanism
associated with the search result from the identified function
record.
[0039] The indication transmitted by the second computing device to
the first computing device may indicate one or more operations for
the first computing 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 first
computing 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 first computing device to a web resource. An
application download address may include data used by the first
computing 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.
[0040] Transmission of the indication of the selected result from
the second computing device to the first computing device may
involve a variety of different network paths. In examples where the
second computing device is directly connected to the first
computing device via a wired connection (e.g., USB) or a wireless
connection a short-range wireless connection such as
Bluetooth.RTM.), the second computing device may transmit the
indication to the first computing device via the direct connection
via the wired connection or short-range wireless connection). In
examples where the second computing device is not directly
connected to the first computing device, the second computing
device may transmit the indication to the first computing device
via a network. For example, the second computing device may
transmit the indication to the first computing device via the
Internet. As another example, the second computing device may
transmit the indication to the first computing device through a
more local network (e.g., a home network, such as a LAN or WLAN).
In still other examples, the second computing device may transmit
the indication to the search system and the search system may then
transmit the indication to the first computing device.
[0041] In examples where the second computing device indicates a
function ID to the first computing device, the second computing
device may transmit the function ID directly to the first computing
device, which may then retrieve one or more access mechanisms
included in the corresponding function record from the search
system. In another example, the second computing device may
transmit the function ID to the first computing device via the
Internet or a more short-range network (e.g., a business or home
network), and the first computing device can send the function ID
to the search system to retrieve the access mechanisms from the
search system. In another example, the second computing device may
transmit the function ID to the search system, which may then
transmit the access mechanisms to the first computing device.
[0042] The second computing device generates displayed results
based on data included in result objects transmitted by the search
system and received by the second computing device. In some
examples (e.g., FIGS. 5B-5D and 7A), the second computing device
may generate a single displayed result based on data included in a
single result object received by the second computing device. In
other examples (e.g., FIG. 7B), the second computing device may
generate multiple displayed results on the display of the second
computing device at one time. For example, as shown in FIG. 7B,
multiple different displayed results are viewable by the user on
the display of a second computing device at one time.
[0043] In some examples, the second computing 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 second computing device. Put another way, in some examples,
the second computing device may be configured to display only one
displayed result at a time. The second computing device may be
configured to display only a single displayed result in scenarios
where the second computing device has limited display area. For
example, if the second computing device is a wearable computing
device (e.g., a wrist watch computing device, such as a smart
watch), then the display of the second computing 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.
[0044] The way in which a user selects a displayed result may vary
depending on the format of the displayed result, hi 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
second computing device including the displayed result. In examples
where the second computing 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" 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 images that indicate the
action that will be taken when the user interacts with the
displayed result on the second computing device. For example, the
displayed result may indicate a native application that will be
launched on the first computing device, a web location that will be
accessed using a web browser of the first computing device, or an
expanded view that will be shown on the first computing device.
[0045] 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 first computing
device 112 and a second computing device 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 first computing 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 another user device
102 (e.g., the second computing device 114). For example, the
search system 100 may transmit the search results to the first
computing device 112 that generated the query wrapper. The first
computing device 112 may then transmit (or forward) the search
results to the second computing device 114. Alternatively, the
search system 100 may transmit the search results directly to the
second computing device 114. In any case, the second computing
device 114 may display the search results to a user. 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.
[0046] In some implementations, the first computing device 112 may
transmit additional data along with the search query. In these
implementations, the first computing 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 first computing device 112), platform data
(e.g., a version of an OS of the first computing device 112, a
device type of the first computing device 112, such as a smart
watch, a smart phone, or a tablet, and a version of a web browser
of the first computing device 112), an identity of a user of the
first computing device 112 (e.g., a username), partner specific
data, and other data. The first computing 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.
[0047] In some examples described herein, the first computing
device 112 can transmit the query wrapper to the second computing
device 114. This may be the case if the first computing device 112
connects to the 1.nternet, thereby connecting to the search system
100, via the second computing device 114. In examples where the
second computing device 114 receives the query wrapper from the
first computing device 112, the second computing device 114 may
modify the query wrapper generated by the first computing device
112 and transmit the modified query wrapper to the search system
100. For example, the second computing device 114 may add, remove,
or otherwise modify data included in the query wrapper received
from the first computing device 112. In some examples, the second
computing device 114 may add data to the query wrapper indicating
information related to the second computing device 114. For
example, the second computing device 114 may add data to the query
wrapper such as geo-location data (e.g., indicating the location of
the second computing device 114), platform data (e.g., indicating a
version of an OS of the second computing device 114, a device type
of the second computing device 114, and a version of a web browser
of the second computing device 114), and an identity of a user of
the second computing device 114 (e.g., a username). In these
examples, the query wrapper received by the search system 100 from
the first computing device 112 may include data related to both the
first computing device 112 and the second computing 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 first computing device 112 and/or the second computing
device 114 include a wearable computing device (e.g., a smart
watch, ahead-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 and received by the second
computing device 114 based on the device type, or any other
properties, of the first computing device 112 and/or the second
computing 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 second computing device 114 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 second computing device 114, as described
herein. As another example, the search system 100 may use the
device type of the first computing device 112 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 first computing device 112 in the search
results, as also described herein.
[0048] 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.
[0049] 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., the first computing device 112) to perform. In response
to selection of the AAM by a user on the second computing device
114, the first computing device 112 may launch the native
application referenced in the AAM and perform the one or more
operations indicated by the AAM. For example, the first computing
device 112 may perform the one or more operations to set the native
application into a particular state.
[0050] 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.
[0051] An AAM includes data which a user device 102 (e.g., the
first computing device 112) can use to access functionality
provided by a native application. For example, an AAM can include
data that causes the first computing device 112 to launch a native
application installed on the first computing device 112 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 the first computing device 112 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 the first computing device
112 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.
[0052] 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
interact 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.
[0053] A user may select a displayed result on the second computing
device 114 to cause the first computing device 112 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 second computing device 114, the first computing
device 112 launches a native application installed on the first
computing device 112 and sets the native application into astute
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."
[0054] 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 resource 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.
[0055] An AAM included in a function record includes data that
causes a user device 102. (e.g., the first computing device 112) 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 the first
computing device 112 (e.g., the native application) to perform. An
AAM may include an application resource identifier (ARI) and/or one
or more operations fur the first computing device 112 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 the first
computing device 112 (e.g., the native application installed on the
first computing device 112) 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.
[0056] In some examples, an AAM may include operations for the
first computing device 112 to perform in addition to one or more
operations indicated by an ARI of the AAM. For example, a native
application installed on the first computing device 112 and/or an
OS of the first computing device 112 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.
[0057] 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 the first
computing device 112 to perform. The one or more operations may
include instructions for the native application and/or an OS of the
first computing device 112. In response to selection of the AAM,
the first computing device 112 may perform the operations included
in the AAM.
[0058] 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.
[0059] 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.
[0060] 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.
[0061] The ASI included in a function record may be generated in a
variety of different ways. On 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.
[0062] 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 first computing 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.
[0063] 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.
For example, the search system 100 may transmit the search results
to the first computing device 112 that generated the search query.
The first computing device 112 may then transmit (or forward) the
search results to the second computing device 114. Alternatively,
the search system 100 may transmit the search results directly to
the second computing device 114. In any case, the second computing
device 114 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, and transmits an
indication of the user selection to the first computing device 112.
The first computing device 112 performs a function associated with
the selected result in response to receiving the indication, as
described herein.
[0064] 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.
[0065] FIG. 2 is a flow diagram that illustrates an example method
200 for generating and displaying search results, detecting
selections of the search results, and accessing the functionality
of the selected search results using different computing devices.
In block 202, a first computing 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 first computing 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 first computing 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.
[0066] The first computing device 112 can be any computing device
that is capable of receiving search queries from users and
providing the search queries to the search system 100. The first
computing device 112 can also be any computing device that is
capable of receiving indications of user selections of search
results from a second computing device 114 and performing functions
according to selected results, as described below. The first
computing 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 first
computing 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).
[0067] The first computing device 112 may use a variety of
different operating systems. In an example where the first
computing device 112 is a mobile device, the first computing 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 first
computing device 112 is a laptop or desktop computing device, the
first computing 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 LIN (LINUX.RTM. is the
registered trademark of Linus Torvalds in the U.S. and other
countries). The first computing 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.
[0068] The first computing 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 first computing device
112 may communicate with the search system 100 using a native
application installed on the first computing device 112 (e.g., a
search application). In general, the first computing 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 first computing 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 first computing 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 first computing device 112 to communicate with the search
system 100 may display a search field (e.g., the search field 502
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.
[0069] 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.
[0070] In block 204, the first computing 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. For example, the
search system 100 may transmit the search results to the first
computing device 112. The first computing device 112 may then
transmit (or forward) the search results to a second computing
device 114 that is different than the first computing device 112.
Alternatively, the search system 100 may transmit the search
results directly to the second computing device 114. In any case,
in block 206, the second computing device 114 receives the search
results (e.g., result objects) transmitted by the search system
100. The second computing device 114 generates displayed results
based on the received search results (i.e., the result objects). In
other words, the second computing device 114 renders the result
objects of the search results into displayed results. The second
computing device 114 outputs the displayed results to the user via
an application finning on the second computing device 114 (e.g., as
a search engine results page, or "SERP," within a GUI of the
application). The user may interact with the second computing
device 114 (e.g., swipe a touchscreen, or use a physical button) in
order to browse through the displayed results.
[0071] The second computing device 114 can be any computing device
that is capable of receiving search results transmitted by the
search system 100 in response to a search query, generating
displayed results using the search results, receiving a user input
indicating a selected result of the displayed results, and
transmitting an indication of the selected result to the first
computing device 112. The second computing 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 second computing 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 second computing device 114 may
use a variety of different operating systems, as described herein
with respect to the first computing device 112.
[0072] The second computing device 114 may also communicate with
the search system 100 via a computer network, such as the Internet.
For instance, the second computing device 114 may communicate with
the search system 100 via the first computing device 112 (e.g., by
being tethered to the first computing device 112). In some
examples, the second computing device 114 may communicate with the
search system 100 using a native application installed on the
second computing device 114. In other examples, the second
computing device 114 may communicate with the search system 100
using a more general application, such as a web browser
application.
[0073] In block 208, the second computing device 114 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 second computing device 114 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 second computing device 11.4
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.
[0074] In block 210, the second computing device 114 transmits an
indication of the user selection to the first computing device 112,
as described above. In some examples, the indication may include
one or more instructions or commands for the first computing device
112. In these examples, the first computing device 112 may perform
a function specified by the selected result in response to
receiving the indication, as described below. For example, the
first computing device 112 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 first computing
device 112, the second computing device 114 may broadcast an
"intent" (e.g., in the case of the ANDROID.RTM. OS) to the first
computing device 112 that causes the first computing device 112 to
perform the function. In another specific example, the second
computing device 114 may transmit data to the first computing
device 112 that causes the first computing device 112 to broadcast
the intent, thereby causing the first computing device 112 to
perform the function. In block 212, the first computing device 112
performs a function indicated by the selected result. For example,
the first computing device 112 may perform a function according to
an AAM or a WAM associated with the selected result. As described
above, in some examples, the first computing device 112 may perform
the function using one or more instructions or commands included in
the indication of the user selection received by the first
computing device 112 from the second computing device 114.
[0075] Accordingly, as described herein, the first computing 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 a user, the search system 100, and the second
computing device 114 to receive a search query from the user,
provide a query wrapper including the search query to the search
system 100, receive an indication of a selected result from the
second computing device 114, and perform a function indicated by
the selected result. The second computing device 114, in turn, may
include at least one of an OS, one or more native applications, and
a web browser application that are configured to receive search
results transmitted by search system 100 in response to the search
query, generate displayed results using the search results, receive
a user input indicating a selected result of the displayed results,
and transmit an indication of the selected result to the first
computing device 112.
[0076] 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 user devices 102 (e.g., the first
computing device 112 and, in some cases, the second computing
device 114) via a network (e.g., the network 106). In some
examples, the user devices 102 may communicate with the search
system 100 via a partner computing system e.g., 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 user devices 102 may
send search queries to the search system 100 and/or receive search
results via the partner computing system. The partner computing
system may provide a user interface to the user devices 102 in some
examples and/or modify the search experience provided on the user
devices 102.
[0077] As shown in FIG. 3, the search system 100 is configured to
receive a search query 300 from a first computing 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 first computing device 112 via a second computing device 114 in
some examples (e.g., as described with reference to FIG. 9A).
[0078] 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.
[0079] 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 second computing device 114 with the
result objects so that the second computing device 114 may rank the
displayed results using the scores.
[0080] The search system 100 transmits the result objects to the
second computing device 114 (e.g., via the first computing device
112 and/or an intermediate computing device). The second computing
device 114 generates displayed results based on data included in
the result objects. For example, the second computing device 114
may generate a single displayed result for each received result
object. In some examples, the second computing device 114 may
display only a single displayed result. For example, if the second
computing device 114 has a limited amount of display space, the
second computing device 114 may generate a displayed result such
that it fills the display of the second computing device 114. In
other examples, the second computing device 114 may generate a list
of displayed results on the display such that the user can view
more than one displayed result at a time.
[0081] The second computing device 114 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 second
computing device 114 may be running an application including a GUI
that displays the search results 308 received from the search
system 100.
[0082] The GUI of the application running on the second computing
device 114 may display the search results 308 to the user in a
variety of different ways, depending on what information is
transmitted to the second computing device 114. 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
second computing device 114 may arrange the displayed results in
order by result scores associated with the displayed results. In
some examples, the second computing device 114 may group the
displayed results together if they are related to the same native
application.
[0083] 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.
[0084] 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 computing devices. 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.
[0085] 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.
[0086] As described above, the first computing device 112, the
second computing device 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),
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.
[0087] 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.
[0088] 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.
[0089] 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.
[0090] 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 un 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.
[0091] 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.
[0092] 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 user devices 102 (e.g., the first computing
device 112) running different operating systems. In some examples,
the WAM may include a uniform resource locator (URL) (i.e., a web
address) used with HTTP.
[0093] A WAM (e.g., a URI) 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, WAM of a function record
may direct a web browser of a user device 102 (e.g., the first
computing device 112) 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 first computing device 112 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.
[0094] 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., the first
computing device 112 and/or the second computing 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.
[0095] 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 URI, of a
WAM for the function record 400, which may uniquely identify the
function record 400.
[0096] 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.
[0097] 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.
[0098] 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 user device 102
(e.g., the first computing device 112) 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.
[0099] 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.
[0100] An AAM (e.g., included in the access mechanism(s) 406) may
include an ARI and/or one or more operations for a user device 102
(e.g., the first computing device 112) 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 the user device 102 (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.
[0101] 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/profil?rid=88333&refid-
=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 computing 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.
[0102] In some examples, the AAM may include operations for the
user device 102 to perform in addition to the one or more
operations indicated by the ARI. For example, an OS of the user
device 102 and/or a native application installed on the user device
102 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 goo-location in a native
application, making a restaurant reservation, sending a text
message, and adding an appointment to a calendar. In some examples,
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 user device 102 (e.g., the first computing device
112). In some examples, the operations may be included in a
script.
[0103] 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.
[0104] 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.
[0105] 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.
[0106] 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 a second computing device 114
(e.g., via the first computing 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 second
computing device 114.
[0107] 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.
[0108] 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 generation 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.
[0109] 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.
[0110] FIGS. 5A-5D show example GUIs that may be displayed on a
first computing device 500 and a second computing device 506
according to the present disclosure. The first computing device 500
illustrated in FIG. 5A is a vehicle navigation system. The second
computing device 506 illustrated in FIGS. 5B-5D is a wrist watch
computing device (e.g., a smart watch) including watch straps 508.
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 welt as the APPLE WATCH.RTM. developed by Apple
Inc.
[0111] Referring now to FIG. 5A, the first computing device 500
executes a search application including a GUI that displays a
search field 502 for receiving search queries 300 from a user. In
some examples, the first computing device 500 may not include a
full keyboard. In these examples, the first computing 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 502 (or
push a button of the first computing device 500) and speak into the
first computing device 500 in order to enter a search query 300
into the search field 502. The first computing device 500 may then
transmit the entered search query 300 to the search system 100. In
some examples, the first computing device 500 may automatically
transmit the search query 300 after it has been received by the
first computing device 500. In other examples, the user may press a
search button 504 also displayed by the GUI in order to transmit
the search query 300 to the search system 100.
[0112] In the example of FIG. 5A, the user has entered a search
query "Steak" 300 into the search field 502. The first computing
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 second computing
device 506 (e.g., via the first computing device 500, or an
intermediate device) at the same time. Accordingly, although only a
single displayed result is shown at one time on the second
computing device 506 in each of FIGS. 5B-5D, the search results 308
that are not displayed may be stored in the memory of the second
computing device 506, or another computing device. The user may
interact with the second computing device 506 (e.g., swipe a screen
of the second computing device 506, or use a physical button on the
second computing device 506) 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.
[0113] FIG. 5B shows an example displayed result 510 on the second
computing device 506 for a mapping native application. The
displayed result 510 indicates to the user that selecting the
displayed result 510 will result in the first computing device 500
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" 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 second computing device 506. In still other examples, the
displayed result 510 may be selected by using a mechanical button
of the second computing device 506. The user may interact with
(e.g., swipe the display of) the second computing device 506 to
introduce another displayed result to the display and remove the
displayed result 510 of FIG. 5B from the display.
[0114] FIG. 5C shows an example displayed result 512 on the second
computing device 506 for a phone native application. The displayed
result 512 indicates to the user that selecting the displayed
result 512 will result in the first computing device 500 opening
the phone native application and setting it into a state for
calling Alexander's Steakhouse (e.g., in examples where the first
computing device 500 includes a cellular radio). 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" 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 second
computing device 506 or using a mechanical button of the second
computing device 506. The user may interact with (e.g., swipe the
display of) the second computing device 506 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.
[0115] FIG. 5D shows an example displayed result 514 on the second
computing device 506 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 the
first computing device 500 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" (e.g., in examples where the first computing
device 500 is capable of launching native and/or web-based
applications and connecting to the Internet). 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" 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
second computing device 506 or using a mechanical button of the
second computing device 506. The user may interact with (e.g.,
swipe the display of) the second computing device 506 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 and
512 of FIGS. 5B and 5C back on the display.
[0116] FIGS. 6A-6C show other example GUIs that may be displayed on
a first computing device 600 and a second computing device 606
according to the present disclosure. In the examples of FIGS.
6A-6C, the first computing device 600 is a vehicle navigation
system and the second computing device 606 is a wrist watch
computing device (e.g., a smart watch) including watch straps 608.
FIG. 6A shows that a user has entered a search query "Papa johns"
300 into a search field 602 of a GUI displayed on the first
computing device 600 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 604 of the
GUI to transmit the search query 300 to the search system 100. A
single displayed result 610 generated using 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 of FIG. 6B
illustrates that displayed results may include multiple different
user inputs (e.g., "Navigate (Car)" and "Call (Phone)" buttons) for
selecting multiple different outcomes at the first computing device
600. For example, the user selecting the "Navigate (Car)" button
may cause the first computing device 600 (i.e., the 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 first
computing device 600 (e.g., in cases where the first computing
device 600 includes a cellular radio) 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 displayed result 610 of FIG. 6B also illustrates
how displayed results may generate an indication of which component
or aspect of the first computing device 600 will be performing a
particular function associated with a given displayed result (e.g.,
a function associated with a specific button or GUI element of the
displayed result). For example, the displayed result 610 of FIG. 6B
indicates that a vehicle navigation feature of the first computing
device 600 will perform the above-described navigation function.
The displayed result 610 also indicates that a cellular radio
feature of the first computing device 600 will perform the
above-described calling function.
[0117] In some examples, the name of the native application (e.g.,
"OpenTable") that will be launched when the user selects a
displayed result may be displayed in the displayed result. In other
examples, the displayed results may not include names of one or
more specific native applications, but may instead refer to
functionality (e.g., "call, " "navigate," etc.) of each displayed
result in a more general manner.
[0118] FIG. 6C shows an example in which the first computing device
600 has received an indication from the second computing device 606
that the user has selected the "Navigate (Car)" button of the
displayed result 610 shown in FIG. 6B. As illustrated in FIG. 6C,
the vehicle navigation system (i.e., the first computing device
600) has launched a navigation native application in response to
receiving the indication from the second computing device 606. As
depicted in FIG. 6C, the navigation native application is providing
directions to a nearby "Papa John's.RTM." restaurant.
[0119] FIGS. 7A-7B illustrate example GUIs that include one or more
displayed results n the form of user selectable links. In each of
FIGS. 7A-7B, a user has entered a search query (e.g., "Late night
diners by me") 300 into a GUI of a search application (i.e., into a
search field of the GUI) of a first computing device 112. 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 first computing device 112 to
transmit the query wrapper to the search system 100 by selecting
(e.g., touching, or clicking) a search button 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 FIGS. 7A-7B, 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").
[0120] FIG. 7A illustrates a single displayed result 708 included
in a GUI 704 of a second computing device 700 (i.e., a wrist watch
computing device including watch straps 702). The displayed result
708 is for a function record identified for Yelp. In this example,
the search system 100 has identified a function record that
corresponds to an entry in Yelp for "IHOP," the displayed result
708 for which is included in the GUI 704. Specifically, the
displayed result 708 includes an AAM that launches Yelp and opens
the entry in Yelp for "IHOP" on the first computing device 112. As
shown in FIG. 7A, the displayed result 708 is displayed under a
Yelp header 706 also included in the GM 704. In some examples, the
header 706 may include an AAM that (e.g., upon selection of the
header 706 by a user of the second computing device 700) causes the
first computing device 112 to launch Yelp and set Yelp into a
default state. In other examples, the second computing device 700
may not display search results 308 along with headers.
[0121] In a similar manner as described below with reference to
FIG. 7B, in some examples, the displayed result 708 may further
include an application download address that enables the first
computing device 112 to download and install Yelp prior to
launching Yelp and opening the entry in Yelp for "IHOP" (e.g., in
cases where the first computing device 112 does not have Yelp
installed). Alternatively, as also described below, the displayed
result 708 may include a WAM for a web-based application version of
Yelp. The WAM may direct a web browser of the first computing
device 112 to one or more late night diners on the Yelp web-based
application. For example, in response to selection of the displayed
result 708, the first computing device 112 may launch the web
browser and retrieve information at a web address included in the
WAM.
[0122] FIG. 7B illustrates different types of displayed results
716-1, 716-2, 718, 720, and 722 included in a GUI 712 of a
different second computing device 710 (i.e., a smart phone). The
displayed results 716-1, 716-2, 718, 720, and 722 are for function
records identified for Yelp, TripAdvisor, OpenTable, and
Urbanspoon. In this example, the search system 100 has identified
function records that correspond to entries in Yelp for "IHOP" and
"Denny's," the displayed results 716-1 and 716-2 for which are
included in the GUI 712. Specifically, the displayed results 716-1
and 716-2 of the GUI. 712 include AAMs that launch Yelp and
retrieve the entries in Yelp for "IHOP" and "Denny's,"
respectively, on the first computing device 112. As shown in the
GUI 712, the displayed results 716-1 and 716-2 are grouped together
under a Yelp header 714 also included in the 712. In other
examples, displayed results for different native applications may
be mixed instead of grouped. In some examples, the header 714 may
include an AAM that, upon selection of the header 714, causes the
first computing device 112 to launch Yelp and set Yelp into a
default state.
[0123] The displayed results 718 and 722 also included in the GUI
712 may be associated with AAMs for TripAdvisor and Urbanspoon,
respectively. For example, an AAM included in the displayed result
718 may cause the first computing device 112 to launch TripAdvisor
into a default state. Similarly, AAM included in the displayed
result 722 may cause the first computing device 112 to launch
Urbanspoon into a default state.
[0124] The displayed result 720 also included in the GUI 712 may
include a WAM for a web-based application version of OpenTable. For
example, the WAM may direct a web browser of the first computing
device 112 to one or more late night diners on the OpenTable
web-based application. Accordingly, in response to selection of the
displayed result 720, the first computing device 112 may launch the
web browser and retrieve information at a web address included in
the WAM.
[0125] FIGS. 8A-10B are functional block diagrams that illustrate
different arrangements of first computing devices 112, second
computing devices 114, intermediate devices, and the search system
100. The different arrangements are now described herein.
[0126] FIGS. 8A-8B show examples in which a first computing device
800, 804 and a second computing device 802, 806 each have
independent network access (i.e., via the network 106) to the
search system 100. Put another way, the first computing device 800,
804 and the second computing device 802, 806 are not tethered in
the examples of FIGS. 8A-8B. For example, with reference to FIG.
8A, the first computing device 800 may communicate with the search
system 100 using a Wi-Fi.RTM. connection, a cellular network
connection, or other communication technology. The second computing
device 802 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 first computing
device 800 and the second computing device 802 may communicate with
the search system 100 using different communication technologies.
In other examples, the first computing device 800 and the second
computing device 802 may communicate with the search system 100
using the same communication technology. In some examples, the
first computing device 800 and the second computing device 802 may
be connected to the search system 100 through the same computing
network (e.g., a home network, or a business network).
[0127] In some examples, the second computing device 802 may
transmit an indication (e.g., an indication that a user has
selected a displayed result) to the first computing device 800 via
the network 106, as shown in in the example of FIG. 8A. In other
examples, the first computing device 800 and the second computing
device 802 may communicate directly with one another, such as
through a Bluetooth.RTM. connection, or other direct connection. In
these examples, the second computing device 802 may transmit an
indication of a selected result to the first computing device 800
via the direct connection.
[0128] FIG. 8B illustrates an example first computing device 804
and an example second computing device 806. The first computing
device 804 is a vehicle navigation system. The second computing
device 806 is a wrist watch computing device (e.g., a smart watch).
The first computing device 804 and the second computing device 806
may independently communicate with the search system 100. In some
examples, the first computing device 804 may directly communicate
with the second computing device 806 (e.g., via a Bluetooth.RTM.
connection).
[0129] FIGS. 9A-10B show example arrangements of computing devices
in which a computing device is tethered to another computing device
in order to communicate with the search system 100 (i.e., via the
network 106). In FIG. 9A, a first computing device 900 is tethered
to a second computing device 902. In this example, the first
computing device 900 may transmit search queries 300 to the search
system 100 (and, in some cases, receive search results 308 from the
search system 100) via the second computing device 902. The first
computing device 900 may be tethered to the second computing device
902 because the first computing device 900 may not have sufficient
communication technology for communicating via the Internet with
the search system 100. For example, the first computing device 900
may have a communication technology (e.g., Bluetooth.RTM.) that
cannot connect to the Internet at the first computing device's 900
current location. In FIG. 9A, the first computing device 900 may
also communicate directly with the second computing device 902 via
the tether. For example, if the first computing device 900 is
connected to the second computing device 902 via a Bluetooth.RTM.
connection, the second computing device 902 may transmit an
indication of a user selection of a displayed result to the first
computing device 900 using the Bluetooth.RTM. connection.
[0130] FIG. 9B illustrates an example first computing device 904
and an example second computing device 906. The example first
computing device 904 is a vehicle navigation system. The example
second computing device 906 is a wrist watch computing device
(e.g., a smart watch). In the example of FIG. 9B, the vehicle
navigation system (i.e., the first computing device 904) is
tethered to the wrist watch computing device (i.e., the second
computing device 906). Accordingly, the vehicle navigation system
communicates with the search system 100 via the wrist watch
computing device.
[0131] In FIG. 9C, a second computing device 910 is tethered to a
first computing device 908. In this example, the second computing
device 910 may receive search results 308 from the search system
100 via the first computing device 908. The second computing device
910 may be tethered to the first computing device 908 because the
second computing device 910 may not have sufficient communication
technology for communicating via the Internet with the search
system 100. For example, the second computing device 910 may have a
communication technology (e.g., Bluetooth.RTM.) that cannot connect
to the Internet at the second computing device's 910 current
location. In FIG. 9C, the second computing device 910 may also
communicate directly with the first computing device 908 via the
tether. For example, if the second computing device 910 is
connected to the first computing device 908 via a Bluetooth.RTM.
connection, the second computing device 910 may transmit an
indication of a user selection of a displayed result to the first
computing device 908 using the Bluetooth.RTM. connection.
[0132] FIG. 9D illustrates an example first computing device 912
and an example second computing device 914. The example first
computing device 912 is a vehicle navigation system. The example
second computing device 914 is a wrist watch computing device e.g.,
a smart watch). In the example of FIG. 9D, the wrist watch
computing device the second computing device 914) is tethered to
the vehicle navigation system (i.e., the first computing device
912). Accordingly, the wrist watch computing device communicates
with the search system 100 via the vehicle navigation system. In
the above-described examples, the vehicle navigation system may
transmit search queries 300 received from users to the search
system 100 and perform functions indicated by displayed results
that have been selected by users on the wrist watch computing
device. The wrist watch computing device may be used by users to
view and select search results 308 (i.e., displayed results)
generated in response to search queries 300 submitted by users
using the vehicle navigation system.
[0133] FIGS. 10A-10B show other example arrangements of computing
devices in which a computing device is tethered to another
computing device, referred to herein as an "intermediate device,"
in order to communicate with the search system 100. As shown in
FIG. 10A, a first computing device 1000 may communicate with the
search system 100 via an in device 1004 to transmit search queries
300 received from users to the search system 100. The search system
100 may transmit search results 308 responsive to the search
queries 300 to a second computing device 1002 (e.g., directly, or
via one or more of the intermediate device 1004 and the first
computing device 1000). The second computing device 1002 may
indicate a selected result to the first computing device 1000 via a
direct connection in some examples (e.g., via the tethered
connection shown in FIG. 10A). In other examples, the second
computing device 1002 may communicate with the first computing
device 1000 via the Internet (e.g., in examples where the second
computing device 1002 is not tethered to the first computing device
1000).
[0134] As shown in FIG. 1013, a first computing device 1006 may
communicate with the search system 100 via a second computing
device 1008 and an intermediate device 1010 to transmit search
queries 300 received from users to the search system 100. The
search system 100 may transmit search results 308 responsive to the
search queries 300 to the second computing device 1008 (e.g.,
directly, or via the intermediate device 1010). The second
computing device 1008 may indicate a selected result to the first
computing device 1006 via the above-described direct connection, or
via the Internet.
[0135] FIG. 11 is a flow diagram that illustrates an example method
1100 for performing a search and accessing search results 308 using
tethered first and second computing devices 112, 114. In the method
1100 of FIG. 11, it may be assumed that the first computing device
112 is tethered to the second computing device 114 such that the
first computing device 112 communicates with the search system 100
via the second computing device 114 (e.g., as illustrated in FIG.
9A). In block 1102, the first computing device 112 receives a
search query 300 from a user, in block 1104, the first computing
device 112 transmits the search query 300 to the second computing
device 114. In some examples, the search query 300 may be included
in a query wrapper that may be used by the search system 100 to
generate search results 308. In block 1106, the second computing
device 114 transmits the search query 300 to the search system 100.
The search system 100 generates the search results 308 based on the
received search query 300 and transmits the search results 308 to
the second computing device 114.
[0136] In block 1108, the second computing device 114 receives the
search results 308 from the search system 100. In block 1110, the
second computing device 114 displays one or more of the search
results 308 to the user (i.e., generates one or more displayed
results based on the search results 308) for the user to select. In
block 1112, the second computing device 114 detects, or receives, a
user selection of one of the displayed results. In block 1114, the
second computing device 114 transmits an indication of the user
selection to the first computing device 112 (e.g., via the tether
connection). In block 1116, the first computing device 112 performs
a function indicated by selected result.
[0137] FIG. 12 is a flow diagram that illustrates another example
method 1200 for performing a search and accessing search results
308 using tethered first and second computing devices 112, 114. In
the method 1200 of FIG. 12, it may be assumed that the second
computing device 114 is tethered to the first computing device 112
such that the second computing device 114 communicates with the
search system 100 via the first computing device 112 (e.g., as
illustrated in FIG. 9C). In block 1202, the first computing device
112 receives a search query 300 from a user. In some examples, the
search query 300 may be included in a query wrapper that may he
used by the search system 100 to generate search results 308. In
block 1204, the first computing device 112 transmits the search
query 300 to the search system 100. The search system 100 generates
the search results 308 based on the received search query 300 and
transmits the search results 308 to the first computing device 112.
Accordingly, in block 1206, the first computing device 112 receives
the search results 308 from the search system 100.
[0138] In block 1208, the first computing device 112 transmits the
search results 308 to the second computing device 114 (e.g., via
the tether connection). In block 1210, the second computing device
114 displays one or more of the search results 308 to the user
(i.e., generates one or more displayed results based on the search
results 308) for the user to select. In block 1212, the second
computing device 114 detects, or receives, a user selection of one
of the displayed results. In block 1214, the second computing
device 114 transmits an indication of the user selection to the
first computing device 112. (e.g., via the tether connection). In
block 1216, the first computing device 112 performs a function
indicated by selected result.
[0139] FIG. 13 is a flow diagram that illustrates an example method
1300 for performing a search and accessing search results 308 using
a computing device tethered to an intermediate device. In the
method 1300 of FIG. 13, it may be assumed that a first computing
device 112 is tethered to the intermediate device such that the
first computing device 112 communicates with the search system 100
via the intermediate device (e.g., as illustrated in FIG. 10A). In
block 1302, the first computing device 112 receives a search query
300 from a user. In block 1304, the first computing device 112
transmits the search query 300 to the intermediate device. In some
examples, the search query 300 may be included in a query wrapper
that may be used by the search system 100 to generate search
results 308. In block 1306, the intermediate device transmits the
search query 300 to the search system 100. The search system 100
generates the search results 308 based on the received search query
300 and transmits the search results 308. In some examples, the
search system 100 may transmit the search results 308 to the
intermediate device. The intermediate device may then transmit the
search results 308 to the first computing device 112, which may
then transmit the search results 308 to a second computing device
114. Alternatively, the intermediate device may transmit the search
results 308 directly to the second computing device 114. In other
examples, the search system 100 may transmit the search results 308
directly to the second computing device 114. In any case, in block
1308, the second computing device 114 receives the search results
308 transmitted by the search system 100. In block 1310, the second
computing device 114 displays one or more of the search results 308
to the user (i.e., generates one or more displayed results based on
the search results 308) for the user to select. In block 1312, the
second computing device 114 detects, or receives, a user selection
of one of the displayed results. In block 1314, the second
computing device 114 transmits an indication of the user selection
to the first computing device 112. In block 1316, the first
computing device 112 performs a function indicated by selected
result.
[0140] FIG. 14 is a flow diagram that illustrates another example
method 1400 for performing a search and accessing search results
308 using a computing device tethered to an intermediate device. In
the method 1400 of FIG. 14, it may be assumed that a first
computing device 112 is tethered to the intermediate device via a
second computing device 114, such that the first computing device
112 communicates with the search system 100 via the second
computing device 114 and the intermediate device (e.g., as
illustrated in FIG. 10B). In block 1402, the first computing device
112 receives a search query 300 from a user. In block 1404, the
first computing device 112 transmits the search query 300 to the
second computing device 114. In block 1406, the second computing
device 114 transmits the search query 300 to the intermediate
device. In some examples, the search query 300 may be included in a
query wrapper that may be used by the search system 100 to generate
search results 308. In block 1408, the intermediate device
transmits the search query 300 to the search system 100. The search
system 100 generates the search results 308 based on the received
search query 300 and transmits the search results 308. In some
examples, the search system 100 may transmit the search results 308
to the intermediate device. The intermediate device may then
transmit the search results 308 to the second computing device 114.
In other examples, the search system 100 may transmit the search
results 308 directly to the second computing device 114. In any
case, in block 1410, the second computing device 114 receives the
search results 308 transmitted by the search system 100. In block
1412, the second computing device 114 displays one or more of the
search results 308 to the user (i.e., generates one or more
displayed results based on the search results 308) for the user to
select. In block 1414, the second computing device 114 detects, or
receives, a user selection of one of the displayed results. In
block 1416, the second computing device 114 transmits an indication
of the user selection to the first computing device 112. In block
1418, the first computing device 112 performs a function indicated
by selected result.
[0141] FIG. 15 is a flow diagram that illustrates an example method
1500 for generating search results 308 based on a received search
query 300. The method 1500 is described with respect to the search
module 110 of FIG. 3. In block 1502, the query analysis module 302
receives a search query 300 generated by a first computing device
112. For example, the first computing device 112 may have received
the search query 300 from a user of the first computing device 112
(e.g., via a GUI of a search application executing on the first
computing device 112) and transmitted the search query 300 to the
query analysis module 302 (i.e., to the search system 100). In
block 1504, 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 1506, 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.
[0142] In blocks 1508-1510, the set processing module 306 processes
the consideration set of function records. For example, in block
1508, the set processing module 306 generates result scores for the
function records included in the consideration set. In block 1510,
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 1512, the set processing
module 306 generates result objects using the selected function
records. In block 1514, the set processing module 306 transmits the
result objects (i.e., as the search results 308). For example, as
described above with reference to FIGS. 11-14, the set processing
module 306 may transmit the result objects to the first computing
device 112, a second computing device 114, and/or an intermediate
device.
[0143] FIG. 16 is a flow diagram that illustrates an example method
1600 describing operation of a first computing device 112 according
to the present disclosure. In block 1602, the first computing
device 112 receives a search query 300 from a user of the first
computing device 112. For example, the first computing device 112
may have received the search query 300 from the user via a GUI of a
search application executing on the first computing device 112. In
block 1604, the first computing device 112 transmits the received
search query 300 to the search system 100. In block 1606, the first
computing device 112 waits for an indication of a search result
that has been selected by the user from a second computing device
114. 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
first computing device 112. In other examples, the indication may
reference, rather than include, one or more of the AAM(s), WAM, and
application download address described above.
[0144] In block 1608, the first computing device 112 selects an
access mechanism using the indication received from the second
computing device 114. For example, the first computing device 112
may select an AAM (e.g., from the indication itself, or using the
indication as a reference) if the first computing device 112 has a
native application that is referenced by the AAM installed on the
first computing device 112. In another example, the first computing
device 112 may select a WAM (e.g., from the indication itself, or
using the indication as a reference) if the first computing device
112 does not have a native application that will handle an AAM
included in, or referenced by, the indication installed on the
first computing device 112. In still other examples, if the
indication includes, or references, an application download
address, the first computing device 112 may be directed to a
download site or other location (e.g., a digital distribution
platform) where the first computing device 112 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.
[0145] In block 1610, the first computing device 112 performs a
function according to the selected access mechanism. For example,
if the selected access mechanism is an AAM, the first computing
device 112 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 first computing
device 112 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).
[0146] FIG. 17 is a flow diagram that illustrates an example method
1700 describing operation of a second computing device 114
according to the present disclosure. In block 1702, the second
computing device 114 waits to receive search results 308 from the
search system 100 in response to a search query 300 transmitted to
the search system 100 by a first computing device 112. In block
1704, upon receiving the search results 308 from the search system
100, the second computing device 114 displays the received search
results 308 (e.g., generates displayed results based on the
received search results 308) to a user (e.g., the user that
generated the search query 300 using the first computing device
112). In block 1706, the second computing device 114 waits for the
user to select one of the displayed results. In block 1708, upon
receiving, or detecting a selection of a displayed result by the
user, the second computing device 114 transmits an indication of
the selected result to the first computing device 112.
[0147] 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 first
computing device 112 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 second computing device 114
(e.g., a smart watch) has a relatively limited display screen size
and that the first computing device 112 (e.g., a smart phone, or a
tablet) has a relatively larger display screen size. FIGS. 18A-18C
show an example in which a user selects a displayed result 1804 on
a second computing device 1800, which is a wrist watch computing
device including watch straps 1802 (FIG. 18A) and a first computing
device 1806 shows an expanded view 1808 of the selected result 1804
(FIG. 18B). Specifically, with respect to FIG. 18A, the user
selects the displayed result 1804 (i.e., a search result 308 that
directs the first computing device 1806 to find hotels within the
native application HIPMUNK.RTM. by Hipmunk (hereinafter, "Hipmunk")
on the second computing device 1800. The second computing device
1800 indicates to the first computing device 1806 that the first
computing device 1806 should launch an expanded view of the
selected result 1804. As shown in FIG. 18B, in response to
receiving this indication from the second computing device 1800,
the first computing device 1806 displays an example expanded view
1808 of the selected result 1804 displayed on the second computing
device 1800 of FIG. 18A. It should be noted that the expanded view
1808 of the selected result 1804 depicted in FIG. 18B includes
additional content and details and GUI input options. Specifically,
the expanded view 1808 of FIG. 18B includes a field for entering an
address, a calendar date, a number of rooms, and a number of people
for the rooms, thereby enabling the user to specify these
parameters as part of the user's search for hotels using
Hipmunk.
[0148] The user may interact with the expanded view 1808 of FIG.
18B in order to launch Hipmunk on the first computing device 1806.
For example, the user may enter an address, a date, a number of
rooms, and a number of people into the GUI input fields provided in
the expanded view 1808. In the example of FIG. 18B, the user has
entered an address "278 Castro St., Mountain View, Calif. 94 . . .
," a date range of "February 19-February 20," a number of rooms
"1," and a number of people "2" into the GUI input fields. The user
may then tap the "Search Hotels" button on the expanded view 1808
of FIG. 18B. Tapping the "Search Hotels" button may cause the first
computing device 1806 to launch Hipmunk installed on the first
computing device 1806 and set Hipmunk into a state (e.g., a GUI)
1810 that shows one or more hotels located in Mountain View,
Calif., which are available for February 19-20 and that can
accommodate two persons in one room, as illustrated in FIG.
18C.
[0149] In some examples, the second computing device 1800 may
automatically (e.g., without additional user input) indicate to the
first computing device 1806 that an expanded view of a selected
result should be shown on the first computing device 1806. In other
examples (not illustrated in FIG. 18A), the second computing device
1800 may prompt the user to select whether an expanded view of a
selected result should be shown on the first computing device 1806,
or whether a native application (e.g., Hipmunk) should be launched
by the first computing device 1806 using the selected result. For
example, after the user selects a displayed result (e.g., the
search result 1804 shown in FIG. 18A) on the second computing
device 1800, the second computing device 1800 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 first
computing device 1806 should display an expanded view of the
selected result, or launch a native application referenced b the
selected result. If the user selects the button or GUI input
element that includes the string "Show expanded view," the second
computing device 1800 may transmit an indication to the first
computing device 1806 to show an expanded view (e.g., the expanded
view 1808 of FIG. 18B) of the selected result. If the user selects
the button or GUI input element that includes the string "Launch
app," the second computing device 1800 may transmit an indication
to the first computing device 1806 to launch the native application
according to the selected result, as shown in FIG. 18C. In this
example, the first computing device 1806 may launch the native
application (e.g., Hipmunk) and set the native application into an
application state specified by the selected result, as described
herein.
[0150] FIGS. 19-20 show another example in which different
computing devices are used for generating, displaying, and
selecting search results 308 and accessing the functionality of the
selected search results 308. In FIG. 19, a first computing device
1902 receives a search query 300 from a user 1900 (Step 1). The
first computing device 1902 transmits the search query 300 to the
search system 100 (Step 2). The search system 100 transmits search
results 308 responsive to the search query 300 to the first
computing device 1902 (Step 3). The first computing device 1902
transmits the search results 308 (e.g., result objects) to a second
computing device 1904 (Step 4). The second computing device 1904
displays the search results 308 to the user 1900. The user 1900 may
select one of the displayed search results 308 on the second
computing device 1904. The second computing device 1904 indicates
to the first computing device 1902 which search result 308 was
selected by the user 1900 (Step 5). The first computing device 1902
performs a function indicated by the selected search result
308.
[0151] FIG. 20 shows a more specific example of the topology
described with respect to FIG. 19. In FIG. 20, a first computing
device 2002 is a vehicle navigation system (e.g., an in-dash
computing device). The first computing device 2002 has an Internet
connection such that the first computing device 2002 can transmit a
search query 300 to the search system 100. In FIG. 20, a second
computing device 2004 is a wrist watch computing device (e.g., a
smart watch worn on the wrist of a user 2000). Accordingly, the
example of FIG. 20 may be applicable in situations in which the
user 2000 is wearing a wrist watch computing device that
communicates with a vehicle navigation system having a connection
to the Internet (e.g., a direct connection, or a tethered
connection using an intermediate device).
[0152] In FIG. 20, the first computing device 2002 receives a
search query 300 from the user 2000, e.g., using voice input
techniques (Step 1). The first computing device 2002 transmits the
search query 300 to the search system 100 (Step 2). The search
system 100 transmits search results 308 responsive to the search
query 300 to the first computing device 2002 (Step 3). The first
computing device 2002 transmits the search results 308 (e.g.,
result objects) to the second computing device 2004 (Step 4). The
second computing device 2004 displays the search results 308 to the
user 2000. The user 2000 may select one of the displayed search
results 308 on the second computing device 2004 (Step 5). The
second computing device 2004 indicates to the first computing
device 2002 which search result 308 was selected by the user 2000
(Step 6). The first computing device 2002 performs a function
indicated by the selected search result 308. For example, the
vehicle navigation system (i.e., the first computing device 2002)
may launch a navigation application referenced by the search result
308 selected by the user 2000 on the wrist watch computing device
(i.e., the second computing device 2004) and set the navigation
application into a state that navigates the user to a destination
described by the search result 308.
[0153] In some examples, the second computing device 114 may store
search results 308 for later use. For example, at a later time
following performing a search using the first and second computing
devices 112, 114, the user may recall a stored search result 308 on
the second computing device 114 and select the stored search result
308 to cause the first computing device 112 to perform a function
indicated by the stored search result 308. In one example in which
the second computing device 114 is a vehicle navigation system
computing device, the second computing device 114 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 second computing device 114 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 second computing device 114 may store some of the
search results 308. For example, the second computing device 114
may maintain a history of (i.e., store) previously selected search
results 308.
[0154] 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, the second
computing device 114 can indicate to the first computing device 112
to perform a function associated with the stored search result 308
and the first computing device 112 is able to perform the function.
In some examples, stored search results 308 may be stored on
computing devices other than the second computing device 114 (e.g.,
the first computing device 112). In other examples, the second
computing device 114 can transfer the stored search results 308 to
one or more other computing devices (e.g., the first computing
device 112, or another computing device).
[0155] FIG. 21 is a functional block diagram of example first and
second computing devices 112, 114 in communication with the search
system 100 according to the techniques of the present disclosure.
As shown in FIG. 21, the first computing device 112 includes one or
more processing units 214, one or more memory components 216, one
or more input/output (I/O) components 218, and one or more
interconnect components 220. The memory component(s) 216 store an
OS 222, a search application 224, a user selection indication
module 226, one or more native applications 228 (e.g., native
applications installed on the first computing device 112), and a
web browser application 230. As also shown in FIG. 21, the second
computing device 114 includes one or more processing units 232, one
or more memory components 234, one or more I/O components 236, and
one or more interconnect components 238. The memory component(s)
234 store an OS 240, one or more native applications 242 (e.g.,
native applications installed on the second computing device 114),
a web browser application 244, and a user selection indication
module 246.
[0156] Each of the processing unit(s) 214, 232 may be configured to
execute instructions stored in the corresponding ones of the memory
component(s) 216, 234 and communicate with the corresponding ones
of the memory component(s) 216, 234 and the I/O component(s) 218,
236 (e.g., via the corresponding ones of the interconnect
component(s) 220, 238). Each of the OS 222, 240, search application
224, web browser application 230, 244, user selection indication
module 226, 246, and native application(s) 228, 242 may be embodied
in computer-executable instructions and executed by the
corresponding one of the processing unit(s) 214, 232. The memory
component(s) 216, 234 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) 218, 236 may
be configured to (e.g., at the direction of the corresponding ones
of the processing unit(s) 214, 232) receive inputs to the
corresponding one of the first and second computing devices 112,
114 and transmit outputs from corresponding one of the computing
devices 112, 114. The interconnect component(s) 220, 238 (e.g., a
bus) may be configured to provide communication between the
corresponding ones of the processing unit(s) 214, 232, the memory
component(s) 216, 234, and the I/O component(s) 218, 236, as well
as among other devices.
[0157] The units, components, and modules of the first and second
computing devices 112, 114 described above may enable each of the
computing devices 112, 114 to perform the techniques attributed to
the device according to this disclosure. For example, the first
computing device 112 (e.g., the processing unit(s) 214 executing
instructions stored in the memory component(s) 216) may be
configured to receive (e.g., via the I/O component(s) 218) a search
query 300 from a user, transmit (e.g., via the I/O component(s)
218) the search query 300 to the search system 100, receive (e.g.,
via the I/O component(s) 218) an indication of a user selection of
a search result 308 responsive to the search query 300 on the
second computing device 114, and perform a function indicated by
the selected search result 308 in response to receiving the
indication.
[0158] To perform one or more of receiving the search query 300,
transmitting the search query 300, receiving the indication, and
perforating the function, the processing unit(s) 214 may execute
one or more instructions included in the memory component(s) 216.
For example, the processing unit(s) 214 may execute instructions
associated with one or more of the OS 222, the search application
224, the user selection indication module 226, the native
application(s) 228, and the web browser application 230. In a
specific example, the processing unit(s) 214 may execute
instructions that cause the first computing device 112 to run the
OS 222. To receive the search query 300 and transmit the search
query 300, the processing unit(s) 214 may further execute
instructions that cause the searching device 112 to run the search
application 224 or the web browser application 230 within the OS
222. In some examples, to receive the indication of the user
selection from the second computing device 114, the processing
unit(s) 214 may execute instructions that cause the first computing
device 112 to run the user selection indication module 226. The
user selection indication module 226 may be a dedicated software
module configured to receive indications of user selections of
search results 308 on the second computing device 114 at the first
computing device 112.
[0159] The second computing device 114 (e.g., the processing
unit(s) 232 executing instructions stored in the memory
component(s) 234) may be configured to receive (e.g., via the I/O
component(s) 236) search results 308 that are responsive to the
search query 300 from the search system 100. The second computing
device 114 may be further configured to display (e.g., via the I/O
component(s) 236) the search results 308 to the user. The second
computing device 114 may also be configured to receive (e.g., via
the I/O component(s) 236) a selection of one of the search results
308 from the user and transmit (e.g., via the I/O component(s) 236)
an indication of the selection to the first computing device
112.
[0160] To perform one or more of receiving the search results 308,
displaying the search results 308, receiving the selection of one
of the search results 308, and transmitting the indication of the
selection, the processing unit(s) 232 may execute one or more
instructions included in the memory component(s) 234. For example,
the processing unit(s) 232 may execute instructions associated with
one or more of the OS 240, the native application(s) 242, the web
browser application 244, and the user selection indication module
246. In a specific example, the processing unit(s) 232 may execute
instructions that cause the second computing device 114 to run the
OS 240. To receive the search results 308, display the search
results 308, receive the selection of one of the search results
308, and transmit the indication of the selection, the processing
unit(s) 232 may execute instructions that cause the second
computing device 114 to run one of the native application(s) 242 or
the web browser application 244 within the OS 240. In some
examples, to transmit the indication, the processing unit(s) 232
may further execute instructions that cause the second computing
device 114 to run the user selection indication module 246 within
the OS 240. The user selection indication module 246 may be a
dedicated software module configured to transmit indications of
user selections of search results 308 on the second computing
device 114 to the first computing device 112.
[0161] 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.
[0162] 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.
[0163] 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.
[0164] 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 Disc.RTM.), or any other memory components.
[0165] 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.
[0166] 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).
[0167] 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).
[0168] 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.
[0169] 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, components, and interconnect components) are equally
applicable to any of the first computing device 112 and the second
computing device 114 described herein.
* * * * *