U.S. patent application number 15/149117 was filed with the patent office on 2016-09-01 for generating search results containing state links to applications.
The applicant listed for this patent is Quixey, Inc.. Invention is credited to Jonathan BEN-TZUR, Matthew T. ELDER, Michael HARRIS, Tomer KAGAN, Jonathan K. LERNER, Liron SHAPIRA.
Application Number | 20160253430 15/149117 |
Document ID | / |
Family ID | 51421549 |
Filed Date | 2016-09-01 |
United States Patent
Application |
20160253430 |
Kind Code |
A1 |
SHAPIRA; Liron ; et
al. |
September 1, 2016 |
Generating Search Results Containing State Links To
Applications
Abstract
A method includes receiving, at a search server, a search query
from a remote computing device. The search query includes one or
more search terms. The method includes identifying, based on the
search terms of the search query, at least one native application
from a plurality of native applications specified in an index. The
index stores information related to the plurality of native
applications. Each native application includes code that is
executable at the remote computing device. The method includes
executing, at the search server, at least a portion of the code
associated with the identified native application. The method
includes generating a view of a particular state of the identified
native application upon executing the portion of the code. The view
includes a graphical user interface that provides access to the
particular state. The method includes transmitting the view to the
remote computing device as a search result.
Inventors: |
SHAPIRA; Liron; (Mountain
View, CA) ; KAGAN; Tomer; (Sunnyvale, CA) ;
ELDER; Matthew T.; (Los Altos, CA) ; HARRIS;
Michael; (Mountain View, CA) ; LERNER; Jonathan
K.; (San Jose, CA) ; BEN-TZUR; Jonathan;
(Sunnyvale, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Quixey, Inc. |
Mountain View |
CA |
US |
|
|
Family ID: |
51421549 |
Appl. No.: |
15/149117 |
Filed: |
May 7, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14195709 |
Mar 3, 2014 |
|
|
|
15149117 |
|
|
|
|
14195643 |
Mar 3, 2014 |
|
|
|
14195709 |
|
|
|
|
61924032 |
Jan 6, 2014 |
|
|
|
61771614 |
Mar 1, 2013 |
|
|
|
Current U.S.
Class: |
707/722 |
Current CPC
Class: |
G06F 3/04883 20130101;
G06F 3/0481 20130101; G06F 3/04847 20130101; G06F 16/951 20190101;
G06F 3/0482 20130101; G06F 16/9024 20190101; G06F 16/9537 20190101;
G06F 40/134 20200101; G06F 16/958 20190101; G06F 16/248 20190101;
G06F 16/9558 20190101; G06F 16/532 20190101; G06F 3/04842 20130101;
G06F 3/167 20130101; G06Q 10/02 20130101; H04L 67/02 20130101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A method comprising: receiving, at a search server, a search
query from a remote computing device, the search query comprises
one or more search terms; identifying, based on the search terms of
the search query, at least one native application from a plurality
of native applications specified in an index, the index stores
information related to the plurality of native applications, each
native application comprises code that is executable at the remote
computing device; executing, at the search server, at least a
portion of the code associated with the identified native
application; generating a view of a particular state of the
identified native application upon executing the portion of the
code, the view comprising a graphical user interface that provides
access to the particular state; and transmitting the view to the
remote computing device as a search result.
2. The method of claim 1, wherein the graphical user interface is
configured to be displayed at the remote computing device.
3. The method of claim 1, wherein the graphical user interface is
configured to receive user input via the remote computing
device.
4. The method of claim 1, wherein the graphical user interface is
configured to output information associated with the identified
native application.
5. The method of claim 1, wherein generating the view comprises
determining a screen of the identified native application.
6. The method of claim 1, wherein identifying the at least one
native application from the plurality of native applications
specified in the index comprises searching the index for native
applications that are relevant to the search query.
7. The method of claim 1, wherein the identified native application
is for making reservations; and wherein the graphical user
interface enables a user of the remote computing device to make a
reservation via the remote computing device.
8. The method of claim 1, wherein the search terms indicate a
location; and wherein the graphical user interface displays
information that is associated with the location indicated by the
search terms.
9. The method of claim 1, wherein the graphical user interface
comprises elements that accept data.
10. The method of claim 9, further comprising populating at least
one of the elements that accept data with one or more of the search
terms.
11. The method of claim 1, further comprising indexing content
associated with the plurality of native applications into the
index.
12. A search server comprising: a network interface device; a
processing device comprising one or more computing processors; and
a non-transitory memory comprising computer readable instructions,
that when executed by the processing device, cause the processing
device to: receive, via the network interface device, a search
query from a remote computing device, the search query comprises
one or more search terms; identify, based on the search terms of
the search query, at least one native application from a plurality
of native applications specified in an index, the index stores
information related to the plurality of native applications, each
native application comprises code that is executable at the remote
computing device; execute at least a portion of the code associated
with the identified native application; generate a view of a
particular state of the identified native application upon
executing the portion of the code, the view comprising a graphical
user interface that provides access to the particular state; and
transmit, via the network interface device, the view to the remote
computing device as a search result.
13. The search server of claim 12, wherein the graphical user
interface is configured to be displayed at the remote computing
device.
14. The search server of claim 12, wherein the graphical user
interface is configured to receive user input via the remote
computing device.
15. The search server of claim 12, wherein the graphical user
interface is configured to output information associated with the
identified native application.
16. The search server of claim 12, wherein generating the view
comprises determining a screen of the identified native
application.
17. The search server of claim 12, wherein identifying the at least
one native application from the plurality of native applications
specified in the index comprises searching the index for native
applications that are relevant to the search query.
18. The search server of claim 12, wherein the identified native
application is for making reservations; and wherein the graphical
user interface enables a user of the remote computing device to
make a reservation via the remote computing device.
19. The search server of claim 12, wherein the search terms
indicate a location; and wherein the graphical user interface
displays information that is associated with the location indicated
by the search terms.
20. The search server of claim 12, wherein the graphical user
interface comprises elements that accept data.
21. The search server of claim 20, wherein the computer readable
instructions further cause the processing device to populate at
least one of the elements that accept data with one or more of the
search terms.
22. The search server of claim 12, wherein the computer readable
instructions further cause the processing device to index content
associated with the plurality of native applications into the
index.
23. A non-transitory computer-readable storage medium comprising
instructions that cause one or more computing devices to: receive,
at a search server, a search query from a remote computing device,
the search query comprises one or more search terms; identify,
based on the search terms of the search query, at least one native
application from a plurality of native applications specified in an
index, the index stores information related to the plurality of
native applications, each native application comprises code that is
executable at the remote computing device; execute, at the search
server, at least a portion of the code associated with the
identified native application; generate a view of a particular
state of the identified native application upon executing the
portion of the code, the view comprising a graphical user interface
that provides access to the particular state; and transmit the view
to the remote computing device as a search result.
24. The non-transitory computer-readable storage medium of claim
23, wherein the graphical user interface is configured to be
displayed at the remote computing device.
25. The non-transitory computer-readable storage medium of claim
23, wherein the graphical user interface is configured to receive
user input via the remote computing device.
26. The non-transitory computer-readable storage medium of claim
23, wherein the graphical user interface is configured to output
information associated with the identified native application.
27. The non-transitory computer-readable storage medium of claim
23, wherein generating the view comprises determining a screen of
the identified native application.
28. The non-transitory computer-readable storage medium of claim
23, wherein identifying the at least one native application from
the plurality of native applications specified in the index
comprises searching the index for native applications that are
relevant to the search query.
29. The non-transitory computer-readable storage medium of claim
23, wherein the identified native application is for making
reservations; and wherein the graphical user interface enables a
user of the remote computing device to make a reservation via the
remote computing device.
30. The non-transitory computer-readable storage medium of claim
23, wherein the search terms indicate a location; and wherein the
graphical user interface displays information that is associated
with the location indicated by the search terms.
31. The non-transitory computer-readable storage medium of claim
23, wherein the graphical user interface comprises elements that
accept data.
32. The non-transitory computer-readable storage medium of claim
31, wherein the instructions further cause the one or more
computing devices to populate at least one of the elements that
accept data with one or more of the search terms.
33. The non-transitory computer-readable storage medium of claim
23, wherein the instructions further cause the one or more
computing devices to index content associated with the plurality of
native applications into the index.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is a continuation of U.S. patent
application Ser. No. 14/195,709, filed on Mar. 3, 2014 and U.S.
patent application Ser. No. 14/195,643, filed on Mar. 3, 2014,
which claim the benefit of U.S. Provisional Application No.
61/924,032, filed on Jan. 6, 2014 and U.S. Provisional Application
No. 61/771,614, filed on Mar. 1, 2013. The entire disclosures of
the applications referenced above are incorporated by
reference.
FIELD
[0002] This disclosure relates to the field of search in computing
environments. In particular, this disclosure relates to generating
search results containing state links to applications.
BACKGROUND
[0003] The World Wide Web (the "Web") contains endless information
and it continues to experience an explosive growth of information.
Users access the information via web browsers which allow the users
to view web pages containing the information. Due to the increasing
number of webpages, web search engines became available to aid
users in finding specific information. Most search engines perform
three main functions: crawling, indexing, and searching. A web
crawler is an automated web browser used to retrieve information
from web pages. Once the web crawler collects the information on
each web page, the information is then indexed in the search engine
database. Indexing parses and stores the information gathered by
the web crawler to expedite the retrieval of information. The
searching process is initiated when a user enters a search query
into the search engine. The search engine references its index and
provides the results of the best matched web pages according to the
provided query.
SUMMARY
[0004] One aspect of the disclosure provides a method for
generating search results containing state links to applications.
The method includes receiving a search query from a remote
computing device, generating a state link to a state of a native
application based on the search query and providing the state link
to the remote computing device, all by a processing device. In some
implementations, the state link is provided to the remote computing
device with one or more other state links to third party
applications. In some implementations, the native application is a
third party native application. The native application can
correspond to a third party application having one or more
versions. The state link can include an application resource
identifier corresponding to the native application and is used to
access the state in the native application version of the third
party application.
[0005] Implementations of the disclosure may include one or more of
the following features. In some implementations, the state link
further includes a web resource identifier being used to access a
web application corresponding to the third party application at the
same state of the third party application. The state link may
include one or more other application resource identifiers.
[0006] In some examples, determining the state link includes
determining an application resource identifier based on the search
query and embedding the application resource identifier into the
state link. Additionally or alternatively, the native application
may correspond to a third party application. The third party
application has one or more versions including the native
application. Determining the application resource identifier may
include generating a request to a server associated with the third
party application based on the search query, receiving a response
from the server associated with the third party application and
generating the application resource identifier based on the
response. The response may include a web resource identifier to
access a web application version of the third party application at
the state. Generating the application resource identifier may
include converting the web resource identifier to the application
resource identifier using a conversion rule.
[0007] In some implementations, determining the application
resource identifier includes identifying a command template
corresponding to the native application and generating the
application resource identifier based on the command template and
the search query. The command template indicates the native
application and includes one or more parameter fields that receive
state parameters.
[0008] Another aspect of the disclosure provides a search server.
The search server includes a network interface device and a
processing device. The processing device executes computer readable
instructions. When the instructions are executed by the processing
device, the instructions cause the processing device to receive a
search query from a remote computing device via the network
interface device, generate a state link to a state of a native
application based on the search query and provide the state link to
the native application to the remote computing device. The state
link may be provided to the remote computing device with one or
more other state links to the third party application. The native
application is a third party native application. The native
application corresponds to a third party application having one or
more versions. The state link includes an application resource
identifier corresponding to the native application and is used to
access the state in the native application version of the third
party application. The state link further includes a web resource
identifier being used to access a web application corresponding to
the third party application at the same state of the third party
application. The state link includes one or more other application
resource identifiers.
[0009] In some implementations, the computer readable instructions
cause the processing device to determine the state link by
determining an application resource identifier based on the search
query and embedding the application resource identifier into the
state link. The native application can correspond to a third party
application. The third party application can have one or more
versions including the native application. In some implementations,
the computer readable instructions cause the processing device to
determine the application resource identifier by generating a
request to a server associated with the third party application
based on the search query, receiving a response from the server
associated with the third party application, and generating the
application resource identifier based on the response.
[0010] In some examples, the response includes a web resource
identifier to access a web application version of the third party
application at the state. In some implementations, the computer
readable instructions cause the processing device to generate the
application resource identifier by converting the web resource
identifier to the application resource identifier using a
conversion rule. The computer readable instructions cause the
processing device to determine the application resource identifier
by identifying a command template corresponding to the native
application and generating the application resource identifier
based on the command template and the search query. The command
template indicates the native application and includes one or more
parameter fields that receive state parameters.
[0011] Another aspect of the disclosure provides a method for
generating search results containing state links to applications.
The method includes receiving a query containing one or more query
parameters from a remote computing device and identifying a set of
third party applications corresponding to the one or more query
parameters, all by a processing device. For each third party
application, the method includes transmitting at least a subset of
the one or more query parameters to a server associated with the
third party application, receiving a response from the server
associated with the third party application, and generating a state
link to a native application version of the third party application
based on the response. The method further includes providing the
states links to the remote computing device. The one or more query
parameters include a search query including one or more query
terms. The one or more query parameters further include one or more
of a geolocation of the remote computing device, an operating
system of the remote computing device, or an identifier of a user
of the remote computing device.
[0012] In some examples, the state link provides access to a state
of a native application version of the third party application. In
some implementations, the state link includes a screen shot
indicative of the state. In some implementations, the state link
includes an application resource identifier indicating a reference
to the native application version and one or more state parameters
corresponding to the state. The one or more state parameters can be
used by the native application to access the state. Additionally or
alternatively, the state link may include a web resource identifier
indicating a domain name of a web server associated with the third
party application and the one or more state parameters. The web
server hosts a web application version of the third party
application.
[0013] In some examples, transmitting the query parameters includes
transmitting at least a subset of the one or more query parameters
to a web server that hosts a web application that is a web
application version of the third party application. Transmitting
the query parameters may further include selecting a command
template corresponding to the third party application from a
plurality of command templates, formatting an outgoing request
based on the command template and at least a subset of the one or
more query parameters and transmitting the outgoing request to the
web server.
[0014] In some implementations, receiving the response includes
receiving a web resource identifier indicating a domain name of a
web server associated with the third party application and one or
more state parameters corresponding to a state of the web
application that are used by the web application to access the
state. Determining the state link to the native application
includes converting the web resource identifier to an application
resource identifier indicating a reference to the native
application version of the third party application and the one or
more state parameters. The remote computing device is configured to
use the application resource identifier to launch the native
application to the state indicated by the one or more state
parameters. The remote computing device is configured to receive
the state link and to attempt to access the state on the native
application version using the application resource identifier
before attempting to access the web application version using the
web resource identifier.
[0015] Yet another aspect of the disclosure provides a search
server for generating search results containing state links to
applications. The search server includes a network interface device
and a processing device. The processing device executes computer
readable instructions, that when executed by the processing device,
cause the processing device to receive a query containing one or
more query parameters from a remote device and identify a set of
third party applications corresponding to the one or more query
parameters. For each third party application, the processing device
transmits at least a subset of the one or more query parameters to
a server associated with the third party application, receives a
response from the server associated with the third party
application, and generates a state link to a native application
version of the third party application based on the response. The
processing device provides the state links to the remote computing
device. The one or more query parameters include a search query
including one or more query terms. The one or more query parameters
can further include one or more of a geolocation of the remote
computing device, an operating system of the remote computing
device, or an identifier of a user of the remote computing
device.
[0016] In some implementations, the state link provides access to a
state of a native application version of the third party
application and provides the state link to the remote computing
device. In some implementations, the state link includes an
application resource identifier indicating a reference to the
native application version and one or more state parameters
corresponding to the state. The one or more state parameters are
can be used by the native application to access the state.
Additionally or alternatively, the state link may further include a
web resource identifier indicating a domain name of a web server
associated with the third party application and the one or more
state parameters. The web server hosts a web application version of
the third party application. The computer readable instructions
cause the processing device to transmit the query parameters by
transmitting at least a subset of the one or more query parameters
to a web server that hosts a web application that is a web
application version of the third party application. In some
implementations, the state link includes a screen shot indicative
of the state.
[0017] In some examples, the computer readable instructions further
cause the processing device to transmit the query parameters by
selecting a command template corresponding to the third party
application from a plurality of command templates, formatting an
outgoing request based on the command template and at least a
subset of the one or more query parameters and transmitting the
outgoing request to the web server. Additionally or alternatively,
the computer readable instructions may cause the processing device
to receive the response by receiving a web resource identifier
indicating a domain name of a web server associated with the third
party application and the one or more state parameters
corresponding to a state of the web application that are used by
the web application to access the state.
[0018] In some implementations, the computer readable instructions
further case the processing device to determine the state link to
the native application by converting the web resource identifier to
an application resource identifier indicating a reference to the
native application version of the third party application and the
one or more state parameters. The remote computing device is
configured to use the application resource identifier to launch the
native application to the state indicated by the one or more state
parameters. In some scenarios, the remote computing device may be
configured to receive the state link and to attempt to access the
state on the native application version using the application
resource identifier before attempting to access the web application
version using the web resource identifier.
[0019] Yet another aspect of the disclosure provides a method for
generating search results containing state links to applications.
The method includes receiving a query containing one or more query
parameters from a remote computing device and identifying a set of
third party applications corresponding to the one or more query
parameters. For each third party application, the method includes
selecting a command template corresponding to the third party
application from a plurality of command templates, generating a
resource identifier corresponding to the third party application
based on the command template and at least a subset of the one or
more query parameters, and generating a state link based on the
resource identifier. The method further includes providing the
state links to the remote computing device, all by the processing
device. The one or more query parameters include a search query
including one or more query terms, and may include one or more of a
geolocation, an operating system, or an identifier of the remote
computing device. The command template is selected based on a
functionality implicated in the query, and may be formatted to
leverage a specific functionality of the third party
application.
[0020] The remote computing device can be configured to access the
third party application using the state link. In some examples, the
resource identifier is a web resource identifier indicating a
domain name of a web server that hosts a web application version of
the third party application. The web resource identifier can
include one or more state parameters corresponding to the at least
the subset of the query parameters. In some implementations, the
web resource identifier may be a uniform resource locator. The
resource identifier may be an application resource identifier
indicating a native application version of the third party
application. The application resource identifier can further
include one or more state parameters corresponding to the at least
the subset of the query parameters.
[0021] In some implementations, the state link includes at least
one application resource identifier and at least one web resource
identifier. The remote computing device can be configured to
receive the state link and to attempt to access the state on the
native application version using the application resource
identifier before attempting to access the web application version
using the web resource identifier. In some implementations, the
state link includes a screen shot indicative of the state.
[0022] Yet another aspect of the disclosure provides a search
server for generating search results containing state links to
applications. The search server includes a network interface device
and a processing device that executes computer readable
instructions. When the instructions are executed, the processing
device receives a query containing one or more query parameters
from a remote computing device and identifies a set of third party
application corresponding to the one or more query parameters. For
each third party application, the processing device selects a
command template corresponding to the third party application from
a plurality of command templates, generates a resource identifier
corresponding to the third party application based on the command
template and at least a subset of the one or more query parameters,
and generates a state link based on the resource identifier. The
processing device provides the state links to the remote computing
device. The command template can be selected based on a
functionality implicated in the query and may be formatted to
leverage a specific functionality of the third party application.
The remote computing device can be configured to access the third
party application using the state link.
[0023] In some scenarios, the resource identifier is a web resource
identifier indicating a domain name of a web server that hosts a
web application version of the third party application. The web
resource identifier can further include one or more state
parameters corresponding to the at least the subset of the query
parameters.
[0024] In some scenarios, the resource identifier is an application
resource identifier indicating a native application version of the
third party application. The application resource identifier can
further include one or more state parameters corresponding to the
at least the subset of the query parameters.
[0025] In some implementations, the state link may include at least
one application resource identifier and at least one web resource
identifier. The remote computing device is configured to receive
the state link and to attempt to access the state on the native
application version using the application resource identifier
before attempting to access the web application version using the
web resource identifier. The state link may include a screen shot
indicative of the state.
BRIEF DESCRIPTION OF THE DRAWINGS
[0026] FIGS. 1A and 1B illustrate an example system for performing
searches.
[0027] FIG. 2 illustrates an example set of components of the
remote computing device.
[0028] FIG. 3 illustrates an example set of components of the
search server.
[0029] FIGS. 4A and 4B illustrate example sets of operations for a
method for transmitting query parameters to servers associated with
one or more third party applications.
[0030] FIG. 5 illustrates an example set of operations for a method
for processing a query from a remote computing device.
[0031] FIG. 6 illustrates an example set of operations for a method
for processing a query from a remote computing device.
[0032] FIGS. 7A-10 illustrate various examples of searches that can
be performed on a remote computing device.
[0033] FIGS. 11A and 11B illustrate an example set of operations
for a method for processing a query.
[0034] FIGS. 12A and 12B illustrate an example set of operations
for a method for processing a query.
[0035] FIG. 13 illustrates one embodiment of components of an
example machine able to read instructions from a machine-readable
medium and execute them in a processor (or controller).
[0036] Like reference symbols in the various drawings indicate like
elements.
DETAILED DESCRIPTION
[0037] The Figures and the following description relate to
preferred embodiments by way of illustration only. It should be
noted that from the following discussion, alternative embodiments
of the structures and methods disclosed herein will be readily
recognized as viable alternatives that may be employed without
departing from the principles of what is claimed.
[0038] Reference will now be made in detail to several embodiments,
examples of which are illustrated in the accompanying figures. It
is noted that, wherever practicable, similar or like reference
numbers may be used in the figures and may indicate similar or like
functionality. The figures depict embodiments of the disclosed
system (or method) for purposes of illustration only. One skilled
in the art will readily recognize from the following description
that alternative embodiments of the structures and methods
illustrated herein may be employed without departing from the
principles described herein.
[0039] FIGS. 1A and 1B illustrate an example system 10 for
performing searches. The system 10 includes a search server 300 in
communication with one or more remote computing devices 200 via a
network 110. The remote computing devices 200 can refer to, for
example, a mobile computing device (e.g., a smartphone 200a or a
tablet computer 200b), a stationary computing device 200c (e.g., a
desktop computer or laptop device), wearable computers, video game
consoles, smart appliances, and/or any other suitable device that
includes a user interface and a network interface device. The
search server 300 can also communicate with application servers 120
and web servers 130 via the network 110. The search server 300 and
the remote computing devices 200 are further described below. The
term "server" may refer to computing devices that primarily serve
client devices, such as remote computing devices 200 or other
servers. Furthermore, while FIGS. 1A and 1B depict a standalone
server, the search server 300 may be a collection of devices at one
or more data centers. These devices may work independently or in a
distributed manner. Although FIGS. 1A and 1B illustrate one of each
respective device type, the system 10 can include any number and/or
combination of devices.
[0040] In operation, a remote computing device 200 can execute, at
least in part, a search application 214 that displays a graphical
user interface (GUI) 250 that allows a user to enter search queries
262. A search query 262 is a query parameter that the remote
computing device 200 provides to the search server 300, which the
search server 300 uses to determine search results 360. For
example, the user may enter a search query 262 into a search bar
252 (e.g., a search box) of the GUI 250 using a touchscreen keypad,
a mechanical keypad, and/or via speech recognition. A search query
262 may include one or more query terms. A query term may refer to
a word, number, and/or symbol in the search query 262. The user can
interact with the GUI 250 of the search application 214 to transmit
the search query 262 to the search server 300. For example, with
respect to FIG. 1B, a user can enter the search query 262 (i.e.,
"Late Night Diners") and select (e.g., touch or click) a search
button 254 of the GUI 250 in order to transmit the search query 262
to the search server 300.
[0041] In some examples, the remote computing device 200 (e.g., the
search application 214) may transmit additional query parameters
264 to the search server 300 along with the search query 262. The
additional query parameters 264 can include, for example, platform
data (e.g., device type, operating system version, web-browser
version, a list of native application installed on the remote
computing device 200), geo-location data (e.g., the location of the
remote computing device 200), an identity of a user of the remote
computing device 200 (e.g., a username), user preferences (e.g.,
user's language preference, user's location preferences, whether
the user prefers free applications or pay applications, user's
browsing history) partner specific data, and/or other suitable
data. In some implementations, the search application 214 can
bundle the search query 262 and the additional query parameters 264
into a query wrapper 260. A query wrapper 260 can contain the query
parameters 262, 264 in a format defined by a schema implemented by
the search server 300. In some implementations, one or more of the
additional query parameters 264 may be stored on a cache of the
search server 300, such that the additional query parameter 264 can
be looked up upon receipt of the query wrapper 260. The search
server 300 can use one or more of the query parameters 262, 264
included in the query wrapper 260 to generate the search results
360.
[0042] The search application 214 may be implemented as a client
web application (e.g., a web browser), a native application, and/or
a part of the operating system. A "native application" is an
application that is executed, at least in part, by the processing
device of a remote computing device 200. A "web application" is an
application that is executed, at least in part, by a web server 130
and accessed by a remote computing device 200 via a web browser of
the remote computing device 200. In some examples, a search
application 214 is an application that the party associated or
affiliated with the search server 300 develops to provide remote
user computing devices 200 access to the search capabilities of the
search server 300.
[0043] In some implementations, the search application 214 is
configured to communicate with a partner device 140. The partner
device 140 receives query parameters 262, 264 from a remote
computing device 200, which the partner device 140 provides to the
search server 300. The search server 300 provides the search
results 360 to the partner device 140. The partner device 140 can
communicate the search results 360 to the remote computing device
200. The partner device 140 may further process the search results
360 or add content to the search results 360 (e.g., advertisements,
visual indicators, and/or additional result objects 362).
[0044] The search server 300 receives the search query 262 and/or
the other query parameters 264 and determines a set of search
results 360 corresponding to the search query 262 and/or the other
query parameters 264. The search results 360 can include one or
more result objects 362. A result object 362 can refer to data that
is provided to the remote computing device 200 that can be
displayed by the remote computing device 200. A result object 362
corresponding to a third party application can include one or more
state links 364 to a state of the third party application, one or
more visual indicators 366 corresponding to the third party
application (e.g., an icon of the third party application, a logo
or image of an entity corresponding to the state of the third party
application, and/or a screen shot of the third party application),
and other data 368 corresponding to the third party application
(e.g., rankings, ratings, and/or descriptions corresponding to the
third party application and/or the entity corresponding to the
state of the third party application).
[0045] A state link 364 can refer to an object that includes text
and/or images that a user may select (e.g., touch) via a user
interface of the remote computing device 200. The remote computer
device 200 displays the state link 364 and in some implementations,
renders the state link 364. Each user selectable state link 364 may
include one or more resource identifiers 365 for accessing a
specific state of a third party application. A resource identifier
365 is a string of letters, numbers, and/or characters that can
reference a particular state of the third party application. Types
of resource identifiers include web resource identifiers 365a and
application resource identifiers 365b. Web resource identifiers
365a (e.g., URLs) can be used to access states of web applications.
A web resource identifier 365a can include a reference to a domain
of a web server 130 that serves the web application and one or more
state parameters that the web server 130 uses to access a
particular state of the application. Application resource
identifiers 365b can be used to access states of native
applications. An application resource identifier 365b can include a
reference to a native application to be launched by the remote
computing device 200 and one or more state parameters that can be
used by the remote computing device 200 to access a particular
state of the application.
[0046] A state link 364 can include one or more application
resource identifiers 365b and a web resource identifier 365a, such
that when a user selects a state link 364, the remote computing
device 200 can launch a native application to a state referenced in
the application resource identifier 365b and/or access a web
application at a state indicated by the web resource identifier
365a. The text and/or images of a state link 364 displayed to a
user may indicate the state of the application that will be
accessed in response to selection of the state link 364. For
example, if the state link 364 is to a song in a music playing
application, the text and/or images may identify the song that will
be played by the music playing application when the user selects
the state link 364.
[0047] In the example of FIG. 1B, the user has entered the search
query "Late Night Diners." In response to the search query 262 and
possibly one or more additional parameters 264 (e.g., geo-location
of the remote computing device 200, operating system type,
username, list of native applications installed on the remote
computing device, and/or language preferences of the user), the
search server 300 returns search results 360 that include a first
result object 362a corresponding to the YELP.RTM. application. The
YELP.RTM. application is an application that provides crowd-sourced
reviews and ratings of various establishments as well as
information specific to the establishments (e.g., hours of
operation, contact information, and location). Each establishment
may have an entry within the application, whereby users can view
the ratings, reviews, and any other information regarding the
establishment by searching for the establishment or by location.
The result object 362a includes state links 364 to three different
states of the YELP.RTM. native application. The state links 364
include a first state link 364a to a state corresponding to a first
entry for an INTERNATIONAL HOUSE OF PANCAKES.RTM. restaurant or
IHOP.RTM., a second state link 364b to the state corresponding to a
second entry for a DENNY'S.RTM. restaurant, and a third state link
364c to a state corresponding to a third entry for a TACO BELL.RTM.
restaurant. Each state link 364 can include one or more resource
identifiers 365 that allow the remote computing device 200 to
access the YELP.RTM. application at a state indicated by the one or
more resource identifiers 365. For example, the state link 364a
corresponding to IHOP.RTM. can include one or more application
resource identifiers 365b, whereby each application resource
identifier 365b corresponds to a different native application
version of the YELP.RTM. application (e.g., an iOS version and an
ANDROID.RTM. version), but correspond to the same state (e.g., an
entry for the IHOP.RTM. restaurant). The state link 364a can also
include a web resource identifier 365a that corresponds to a web
application version of the YELP.RTM. application and corresponds to
the same state (e.g., the entry for the IHOP.RTM. restaurant).
[0048] The user can select (e.g., press or touch) one of the state
links 364, and in response to the selection, the remote computing
device 200 can access the state indicated by resource identifiers
365 embedded in the state link 364. In some scenarios, the remote
computing device 200 can launch a native application indicated by
an application resource identifier 365b embedded in the state link
364 at the state indicated by the application resource identifier
365b. For example, if the user selects the first state link 364a,
the remote computing device 200 can attempt to launch the YELP.RTM.
native application and access an entry for an IHOP.RTM. indicated
by the state link (e.g., an entry for an IHOP.RTM. restaurant
located near the geo-location of the remote computing device 200)
using an application resource identifier 365b embedded in the state
link 364a. If the remote computing device 200 is unable to launch
the YELP.RTM. native application (e.g., the native application is
not installed on the remote computing device 200), the remote
computing device 200 can access the YELP.RTM. web application via a
web browser application of the remote computing device 200 using
the web resource identifier 365a embedded in the state link 364a.
The search results 360 of FIG. 1B and the manner by which the
search results 360 are displayed are provided for example only.
[0049] In operation, the search server 300 receives the search
query 262 and/or the query parameters 264 and identifies one or
more third party applications that are relevant to the search query
262 and/or the query parameters 264. The search server 300
generates resource identifiers 365 to specific states of the third
party applications which are likely relevant to the search query
262 and/or the query parameters 264. The state links 364 included
in a result object 362 are based on the resource identifiers 365
that are generated by the search server 300.
[0050] A third party application can refer to an application
developed by a party that is unaffiliated with the search server
300. In some implementations, the third party application can
include one or more native applications and one or more web
applications which all provide the same or similar functionality.
For example, a third party application for a music player that
allows users to share playlists and song recommendations may
include a "pay" version of the native application for the
APPLE.RTM. iOS operating system, a "free" version of the native
application for the APPLE.RTM. iOS operating system, a "pay"
version of the native application for the ANDROID.RTM. operating
system, and a "free" version of the native application for the
ANDROID.RTM. operating system. The third party application may also
include a mobile web application and a full-version web application
that can be accessed by a web browser on a mobile remote computing
device 200a and/or a desktop remote computing device 200c. All of
the different versions may have overlapping functions and may be
classified under the third party application.
[0051] The search server 300 can parse and process the query
wrapper 260 to identify third party applications that are relevant
to the query parameters 262, 264. As discussed herein, the search
query 262 may include query terms that identify or otherwise
implicate a name of a third party application, a desired
functionality, or an entity. The search server 300 can perform one
or more types of searches to determine a set of third party
applications based on the query parameters 262, 264. For example,
if the search server 300 receives the query "make a reservation at
French Laundry at 7:00 PM," the search server 300 can identify that
"French Laundry" has an entity type of restaurant and process the
rest of the query terms to determine that the user desires
functionality that allows the user to make reservations. The search
server 300 can then identify a set of third party applications that
can be utilized to make restaurant reservations.
[0052] In some implementations, the search server 300 is configured
to forward one or more of the query parameters 262, 264 to a server
associated with the third party application. More specifically, the
search server 300 can transmit the one or more of the query
parameters 262, 264 to a server associated with the third party
application to leverage a specific functionality of the third party
application. A functionality of a third party application can refer
to a particular task that the third party application is configured
to perform or particular information that the third party
application is configured to provide. For example, a functionality
of a third party application may be to provide geo-coordinates on a
map, to search for a particular song in a music library of a third
party application, to find the price of, and book, an airline
ticket to a destination from a source location, or to search for
reviews of near-by restaurants. Thus, if the third party
application is a review application that is centered around a
searching platform (e.g., the third party application returns
information and crowd-sourced reviews for various establishments),
the search server 300 may provide one or more of the query
parameters 262, 264 to a web server 130 or application server 120
of the review application to receive reviews corresponding to the
one or more query parameters 262, 264. The search server 300 can
forward the query parameters 262, 264 to leverage the functionality
of a third party application using a schema implemented by the
third party to implicate the functionalities thereof.
[0053] Once the search server 300 has determined a set of third
party applications that are relevant to the query 262, the search
server 300 can generate requests according to each third party
application's schema, which it can send to each respective third
party application (e.g., a web server 130 or an application server
120). The third party application can provide a response to the
request to the search server 300. The response can include the
information indicating the requested data (e.g., one or more
webpages showing search results), one or more resource identifiers
365 indicating where the requested data can be accessed, and/or one
or more state parameters that respectively indicate one or more
states of the third party application where the requested data can
be accessed. In this way, the indicated state can be accessed at a
later time without having to repeat the query. As used herein, the
state of a third party application can refer to a particular page
or screen of the third party application (e.g., a particular page
of a web application or a particular screen of a native
application). Further, the state of the third party application may
be dependent on a set of state parameters. For instance, if a third
party application displays search results for a particular set of
query terms, the state of the third party application is a
function, at least in part, of the query terms. Thus, a state of a
web application can be referenced by a domain name of the web
application and the state parameters that correspond to the
particular state. A state of a native application can be accessed
using the name of the third-party application and the state
parameters corresponding to the state.
[0054] In some implementations, the search server 300 is further
configured to provide a post execution view of a state of third
party applications. In some implementations, the post execution
view is a screen shot of either a native application or a web
application at the state. The screen shot can be provided with the
state link 364 in the result object 362, such that a user can see
the state of the third party application. In some implementations,
the post-execution view is a graphical user interface 250 that is
displayed to the user, such that the user can access the specific
functionality defined in the state.
[0055] FIG. 2 illustrates an example set of components of a remote
computing device 200. The remote computing device 200 can include a
processing device 210, a network interface 220, a storage device
230, and a user interface device 240. The remote computing device
200 can include additional components not depicted in FIG. 2 (e.g.,
accelerometer, sensors, GPS module).
[0056] The processing device 210 includes memory (e.g., RAM and/or
ROM) that stores computer readable instructions and one or more
processors that execute the computer readable instructions. In
implementations where the processing device 210 includes more than
one processor, the processors can execute in a distributed or
individual manner. The processing device can execute an operating
system 212, a search application 214, a web browser application
216, and one or more other native applications 218. The operating
system 212 acts as an interface between higher level applications
214, 216, 218 and the processing device 210.
[0057] The network interface 220 includes one or more devices that
are configured to communicate with the network 110. The network
interface 220 can include one or more transceivers for performing
wired or wireless communication. Examples of the network interface
220 can include, but are not limited to, a transceiver configured
to perform cellular communications (e.g., transmission using the
third generation (3G) or fourth generation (4G) telecommunications
standards), a transceiver configured to perform communications
using the IEEE 802.11 wireless standard, an Ethernet port, a
wireless transmitter, and a universal serial bus (USB) port.
[0058] The storage device 230 can include one or more computer
readable mediums that store data. The storage device 230 can store
some or all of the computer readable instructions that define the
search application 214, the web browser application 216, and the
one or more other native applications 218. The storage device 230
can store other data as well (e.g., media contents, application
data, contacts, documents).
[0059] The user interface device 240 can include one or more
devices that allow a user to interact with the remote computing
device 200. The user interface device 240 can include one or more
of, for example, a touchscreen, a QWERTY keyboard, a display
device, speakers, a touchpad, and a microphone. The user interface
device 240 receives input from the user and provides the input to
the processing device 210. The user interface device 240 receives
output from the processing device 210 and outputs the output to the
user.
[0060] The web browser application 216 is an application that
requests web data from a web browser and displays the data on the
user interface device 240. The web browser application 216 can be
used to access web applications. In some implementations, the web
browser application 216 can access a specific state of a web
application by accessing the web server 130 located in the domain
portion of a web resource identifier 365b and providing a request
to the web server 130 using the state parameters indicated in the
path portion of the web resource identifier 365b. Web applications
can provide any suitable functionality.
[0061] The native applications 218 are applications that are
executed, in part, by the processing device 210. Native
applications 218 can be developed by third parties and made
available to consumers in a variety of manners. For instance, a
user can download a native application to the remote computing
device 200 from an application retail store (e.g., from GOOGLE
PLAY.RTM. developed by Google Inc., the APP STORE.RTM. developed by
Apple Inc.) or from a website associated with the third party.
Additionally or alternatively, the user can load a native
application into the storage device 230 of the remote computing
device 200 from a removable media, such as a CD-ROM. Native
applications 218 can provide any suitable functionality. Examples
of native applications can include, but are not limited to, word
processing applications, messaging applications, media streaming
applications, social networking applications, e-reader
applications, and games.
[0062] The search application 214 presents a graphical user
interface 250 (GUI) that allows a user to enter a search query 262
and displays search results 360. In some implementations, the GUI
250 can display a search bar 252 whereby the user can provide text
and/or speech input into the search bar 252. Additionally, or
alternatively, the operating system 212 of the remote computing
device 200 can display the search bar 252 on the home screen of the
remote computing device 200, whereby a user can enter the search
query 262 directly from the home screen. In these implementations,
when the user enters the search query 262 into the search bar 252
displayed on the home screen and executes the search, the operating
system 212 of the remote computing device 200 can launch the search
application 214.
[0063] When the user executes a search query 262 (e.g., by pressing
the search button 254), the search application 214 can generate a
query wrapper 260 that contains the search query 262 and any other
query parameters 264. The search application 214 can obtain the
other query parameters 264 in any suitable manner. For example, the
search application 214 can obtain information regarding the device
(e.g., device type, operating system type, operating system
version) from a file in the storage device 230 or in the memory of
the processing device 210. Additionally or alternatively, the
search application 214 can obtain information regarding the device
from a sensor or component of the remote computing device 200
(e.g., the geo-location can be obtained from a GPS module of the
remote computing device 200). The search application 214 can create
a query wrapper 260 based on the provided search query 262 and the
obtained query parameters 264.
[0064] The search application 214 transmits the query wrapper 260
to the search server 300, which responds with the search results
360. The search application 214 displays the search results 360 in
the GUI 250 of the search application 214. As previously discussed,
the search application 214 can display state links 364 to access
resources that are relevant to the query parameters 262, 264. The
state links 364 can include application resource identifiers 365b
that can be used to launch a third party application and access a
specific state within the third party application. When the user
selects a state link 364, the search application 214 can initiate
the accessing of the third party application at the specific state.
In some implementations, the search application 214 attempts to
launch a native application 218 version of a third party
application. To initiate launching the native application 218 to
the specific state, the search application 214 provides an
instruction to launch the third party application to the operating
system 212 using the information provided in the state link 364.
The operating system 212 can attempt to launch a native application
218 indicated by an application resource identifier 365b in the
state link 364, and if unsuccessful, can attempt to access the
third party application via the web browser application 216 (i.e.,
leverage the web application version of the third party
application).
[0065] FIG. 3 illustrates an example set of components of the
search server 300. The search server 300 can include a processing
device 310, a network interface 320, and a storage device 330. The
search server 300 may include additional components not explicitly
shown in FIG. 3. The search server 300 can be implemented as a
single device or a collection of devices (e.g., rack mounted
servers). The search server 300 may be located at a single location
(e.g., at a single data center) or at multiple locations (e.g.,
multiple data centers).
[0066] The processing device 310 includes memory (e.g., RAM and/or
ROM) that stores computer readable instructions and one or more
processors that execute the computer readable instructions. In
implementations where the processing device 310 includes more than
one processor, the processors can execute in a distributed or
individual manner. The processing device can execute one or more of
a search module 312, a forwarding module 314, a linking module 316,
a viewing module 318 and a results module 319. The processing
device 310 may further execute an operating system (not shown) that
acts as an interface between the one or more modules 312, 314, 316,
318, 319 and the processing device 310.
[0067] The network interface 320 includes one or more devices that
can perform wired and/or wireless (e.g., WiFi or cellular)
communication. Examples of the network interface device 320
include, but are not limited to, a transceiver configured to
perform communications using the IEEE 802.11 wireless standard, an
Ethernet port, a wireless transmitter, and a universal serial bus
(USB) port.
[0068] The storage device 330 can include one or more computer
readable mediums that store data. The storage device 330 can store
some or all of the computer readable instructions and other
suitable data. In some implementations, the storage device stores
one or more of an application data store 332, an entity data store
334, and a command template data store 336.
[0069] The application data store 332 may include one or more
databases, indices (e.g., inverted indices), files, or other data
structures storing this data. The application data store 332
includes application data of different third party applications.
The application data of an application may include one or more of
keywords associated with the application, reviews associated with
the application, the name of the developer of the application, the
platform of the application, the price of the application,
application statistics (e.g., a number of downloads of the
application and/or a number of ratings of the application), a
category of the application, and other information. The application
data store 332 may include metadata for a variety of different
applications available on a variety of different operating systems.
The search module 312 may retrieve and analyze the application data
from the application data store 332 in order to perform application
searches and to provide search results 360.
[0070] In some implementations, the application data store 332
stores the application data in application records 340. Each
application record 340 can correspond to a third party application
and may include the application data pertaining to the third party
application. An example application record 340 includes an
application name, an application identifier, and other application
features. The application record 340 may generally represent the
application data stored in the application data store 332 that is
related to the third party application.
[0071] The application name may be the name of the third party
application represented by the data in the application record 340.
Example application names may include "FACEBOOK.RTM.,"
"TWITTER.RTM.," "MICROSOFT.RTM. Word," or "ANGRY BIRDS.RTM.." The
application identifier (hereinafter "application ID") identifies
the application record 340 amongst the other application records
340 included in the application data store 332. In some
implementations, the application ID may uniquely identify the
application record 340. The application ID may be a string of
alphabetic, numeric, and/or symbolic characters (e.g., punctuation
marks) that uniquely identify the third party application
represented by the application record 340. In some implementations,
the application ID is the ID assigned to the application by a
retail site (e.g., APP STORE.RTM. or GOOGLE PLAY.RTM.) that offers
the application. In other implementations, the search server 300
assigns application IDs to each third party application when
creating an application record 340 for the third party
application.
[0072] The application features of a third party application may
include any type of data that may be associated with the third
application represented by the application record 340. The
application features may include a variety of different types of
metadata. For example, the application features may include
structured, semi-structured, and/or unstructured data. The
application features may include information that is extracted or
inferred from documents retrieved from other data sources (e.g.,
application retails sites, application developers, blogs, and
reviews of applications) or that is manually generated (e.g.,
entered by a human).
[0073] The application features may include the name of the
developer of the application, a category (e.g., genre) of the
application, a description of the application (e.g., a description
provided by the developer), a version of the application, the
operating system the application is configured for, and the price
of the application. The application features further include
feedback units provided to the application. Feedback units can
include ratings provided by reviewers of the application (e.g.,
four out of five stars) and/or textual reviews (e.g., "This app is
great"). The application features can also include application
statistics. Application statistics may refer to numerical data
related to the application. For example, application statistics may
include, but are not limited to, a number of downloads, a download
rate (e.g., downloads per month), and/or a number of feedback units
(e.g., a number of ratings and/or a number of reviews). The
application features may also include information retrieved from
websites, such as comments associated with the application,
articles associated with the application (e.g., wiki articles), or
other information. The application features may also include
digital media related to the application, such as images (e.g.,
icons associated with the application and/or screenshots of the
application) or videos (e.g., a sample video of the
application).
[0074] In some implementations, an application record 340 can group
one or more application editions under a canonical application
structure. The term canonical application structure can refer to a
group of similar application editions. Put another way, the
canonical application structure may be a representative or umbrella
under which the one or more application editions are organized.
Each application edition in a group of application editions that
are organized under the same canonical application structure
respectively indicates a version of a third party application that
is functionally similar to other versions of the third party
application editions organized under the canonical application
structure. In other words, the application editions can represent
different versions of the same third party application. Examples of
edition applications are different release versions of an
application (e.g., beta, 1.0, or 2.0), different language versions
of an application (e.g., English, Russian, or Chinese), different
platform versions of an application (e.g., iOS or ANDROID.RTM.),
different functional characteristics (e.g., a light version, an
advanced user version), different aesthetic characteristics (e.g.,
a holiday themed version), and different resolution versions of an
application (e.g., standard definition or high definition). Third
party applications which are related but not similar (e.g., sequels
in a series of games or a different release of a serial
application) are typically not classified under the same canonical
application. For example, ANGRY BIRDS.RTM. may be a separate
canonical application from ANGRY BIRDS.RTM. STAR WARS.RTM..
Although the applications may have a same underlying concept, they
are treated as separate games (i.e., third party applications).
[0075] The entity data store 334 may include one or more databases,
indices (e.g., inverted indices), files, or other data structures.
The entity data store 334 stores one or more entity indexes 342.
Each entity index 342 indexes a plurality of entity records 344.
Each entity record 344 has an entity type. An entity type defines
one of a plurality of various categories that are referenced in the
entity data store 334. Non-limiting examples of entity types
include "airport," "movie," "TV show," "actor," "musician," "band,"
"song," "album," "restaurant," "city," "country," `person,"
"medicine," "symptom," and "time." Each entity record 344
represents a different entity. Each entity represents a species of
a specific entity type. For example, the term "Toy Story" may be of
the entity type "movie," MCDONALDS.RTM. may be of the entity type
"restaurant" and/or "fast food restaurant," and "the Beatles" may
be of an entity type "band." In some implementations, each entity
type has a corresponding entity index 342. An entity data store 334
can be built off-line and/or can be continuously updated. In some
examples, the entity index 342 is human curated, which may use
existing data sources, such as FREEBASE.RTM. or WIKIPEDIA.RTM. to
build the entity data store 334. Curators can define the entity
types manually and the data sources may be crawled to index all the
various entities. Each entity type may have a particular record
format corresponding thereto. For example, an entity record 344 for
a restaurant entity may be: {entityTypeId:1, typeName:"Restaurant",
fields:["name", "foodType"]}. In this case, restaurant is an entity
type name. The entity data store 334 may further include an
application configuration database (not shown) that contains an
application reference record for each entity-supporting application
(e.g., third party applications). Each application reference record
includes a name or application ID of a third party application and
which entity type or types that a particular third party
application supports. For example, an application reference record
corresponding to IMDB.RTM. (Internet Movie Database) may support
movie entities, TV show entities, and actor entities. Similarly, an
application reference record for the YELP.RTM. application may
support restaurant entities, retail store entities, or other
establishment related entities.
[0076] The command template data store 336 stores a plurality of
command templates 346 for different third party applications. A
command template 346 may be a template defining a manner by which
one or more state parameters are accepted by a third party
application. In some implementations, the command templates 346 for
a third party application include request command templates 346c
that are used to generate requests that are sent to servers
associated with third party applications. A request can refer to a
communication that is provided to a resource (e.g., a web server
130 or application server 120) requesting a particular function.
Additionally or alternatively, the command templates 346 for a
third party application can include command templates 346a, 346b
for generating resource identifiers 365. The command templates 346
can be human curated or provided by the developer of the third
party application. Furthermore, in some implementations, the
command templates 346 implemented by a third party application can
be determined by parsing and analyzing the code of a third party
application (e.g., the HTML code of the web application) to
identify the schema implemented by the third party application and
the various parameters that are accepted by the third party
application.
[0077] According to some implementations, a web application command
template 346a of a particular third party application is a template
for generating a web resource identifier 365a to access a
particular state or states of a web application (e.g., a URL). In
some implementations, a web resource identifier 365a can indicate a
domain name of a web server 130 that executes a web application
version of a third party application and one or more state
parameters that define a state of the web application. For example,
a web resource identifier 365a may be a uniform resource locator
(URL), such that a first portion of the URL is the domain name, and
a second portion of the URL is a tail that indicates a path
defining one or more state parameters that can be used to access a
specified state of the web application. A web browser uses a web
resource identifier 365a to access the state of the third party
application indicated therein by sending a web request to the web
server 130 referenced by the domain name, whereby the web request
includes the state parameters arranged in a manner defined in the
web application command templates 346a and/or schema. For example,
a web request corresponding to the URL:
"http://www.example.com/find?q=al+pacino&s=all" may be
transmitted in an HTTP request to the server located at an address
corresponding to www.example.com, and the state parameters can be
included in the tail portion: "find?q=al+pacino&s=all." In this
example, the response to the web resource identifier 365a would
include a web page that shows search results (360) resulting from
the query terms "Al Pacino." A web application command template
346a can define a domain name of the web server 130 of the web
application (e.g., "www.domain.com") and a path that identifies
parameter fields that receive parameters and the order by which
parameters are accepted by the webserver 130 (e.g.,
"/<param_type_1>&<param_type_2">, where
param_type_1 and param_type_2 are the types of parameters accepted
by the web server 130 located at http://www.domain.com). Each web
application can have one or more corresponding web command
templates 346a. In another example, a web application command
template 346a for a third party application may take the form:
"http://www.domain.com/search?find_desc=<query_terms>&fin-
d_loc<loc>. In this example, the web command template 364a
includes two parameter fields: <query_terms>, which takes
search query terms; and <loc> which takes in a location
(e.g., city, state, and/or country).
[0078] According to some implementations, a native application
command template 346b of a particular third party application is a
template for generating an application resource identifier 365b. An
application resource identifier 365b is a string of letters,
numbers, and/or characters that corresponds to a state of a native
application 218. A native application 218 can parse an application
resource identifier 365b to provide access to a state of the
application. The application resource identifier 365b identifies
the native application 218. In some scenarios, the application
resource identifier 365b includes one or more state parameters that
correspond to the state of the application. The one or more state
parameters can be used by the native application 218 to access the
state. An application resource identifier 365b can instruct the
operating system 212 of a remote computing device 200 to launch a
native application 218 based on a domain portion of the application
resource identifier 365b that references the native application 218
and to access a particular state of the native application 218
based on a tail portion that includes one or more state parameters
that define a state of the native application 218. When an
application resource identifier 365b is selected by a user of a
remote computing device 200, the remote computing device 200
launches the application and accesses the state therein. A native
application command template 346b can include a domain portion that
identifies the native application 218 (e.g., "example_app") and a
tail portion that identifies parameter fields that receive
parameters and the order by which parameters are accepted by the
native application 218 and/or an application server 120 (e.g.,
"::<param_type_1>: <param_type_2">, where param_type_1
and param_type_2 are the types of parameters accepted by the native
application 218 "example_app"). Each native application 218 can
have one or more corresponding native application command templates
346b. In another example, a native application command template
346b for a third party native application may take the form:
"example_app::search?find_desc=<query_terms>&find_loc<loc>.
In this example, the native application command template 346b
includes two parameter fields: <query_terms>, which takes
search query terms; and <loc> which takes in a location
(e.g., city, state, and/or country).
[0079] The command template data store 336 may further store an
association table for each third party application having command
templates 346 stored in the command template data store 336. An
association table of a third party application can associate the
different entity types that are stored in the entity data store 334
with the parameter fields that the third party application accepts.
For example, if a third party application receives a location and a
restaurant entities query in the form of <loc> and
<rest_name>, respectively, the association table may
associate location entities to <loc> and restaurant entities
to <rest_name>.
[0080] In operation, the search module 312 receives query
parameters 262, 264 and identifies a set of third party
applications corresponding to the query parameters 262, 264. The
search module 312 is configured to perform any type of suitable
search. In some implementations, the search module 312 can perform
one or more of a functional search, an entity search, and a name
search.
[0081] A functional search is a search for applications providing a
particular functionality. Functional searching is different than
name searching or keyword searching in that functional searching
usually aims to identify applications that provide a desired task,
function, or feature (e.g., find restaurant, take me to downtown,
where to find the best burger) instead of specific keywords. For
example, a functional search term may be "make video calls to
friends oversees," compared to a name search of "SKYPE.RTM.." In
this example, the query does not include the term "SKYPE.RTM.," and
the description of the SKYPE.RTM. application does not mention the
word "friends" or "overseas." Therefore, traditional keyword
searches might not identify the SKYPE.RTM. application as being
relevant. As the SKYPE.RTM. application allows users to place video
and voice calls across the world, a functional search would likely
identify the SKYPE.RTM. application in response to the "make video
calls to friends overseas" query parameter 262.
[0082] Functional searching may include searching for a third party
application across multiple platforms or constrained to certain
platforms (e.g., ANDROID.RTM. only). By way of example, in one
embodiment a platform can be a hardware architecture and/or
software framework, the combination of which allows the software to
run. Some examples of platforms include, but are not limited to,
ANDROID.RTM., BLACKBERRY.RTM. OS, MICROSOFT WINDOWS.RTM. Mobile,
APPLE MAC OS.RTM., APPLE iOS.RTM.. Functional searching can be
supported by the application data store 332. The application data
store 332 includes data from multiple third party sources such as,
but not limited to, blogs, application review sites, application
catalogs, and/or application developers. Due to the different
sources included in the functional database, functional searching
leverages the multiple data sources and analyzes both the textual
and non-textual features and provides the user with a list of the
best available applications based on his/her inputted query terms.
The application data store 332 merges the information that it
gathers from the different sources and combines the information
based on different version or editions of the same application,
providing a more comprehensive analysis. The application data store
332 is indexed for faster retrieval of the data entries.
[0083] Operationally, the search module 312 can receive a query
wrapper 260 from a remote computing device 200. The search module
312 can process the query parameters 262, 264 contained in the
query wrapper 260. The search module 312 may perform various
processing operations on the query parameters 262, 264. For
example, analysis operations performed by the search module 312 may
include, but are not limited to, tokenization of the query
parameters 262, 264, filtering of the query parameters 262, 264,
stemming the search query 262, synonomyzation of the query
parameters 262, 264, and stop word removal. In some
implementations, the search module 312 may further generate one or
more subqueries based on the query parameters 262, 264. Subqueries
are search queries that are based on some subcombination of the
search query 262 and the other query parameters 264.
[0084] The search module 312 identifies a consideration set of
applications (e.g., a list of applications) based on the query
parameters 262, 264 and, in some implementations, the subqueries.
In some examples, the search module 312 may identify the
consideration set by identifying applications that correspond to
the query parameters 262, 264 or the subqueries based on matches
between terms in the query parameters 262, 264 (and/or the
subqueries) and terms in the application data of the application
(e.g., in the application record 262 of the application). For
example, the search module 312 may identify one or more
applications represented in the application data store 332 based on
matches between terms or tokens representing the query parameters
262, 264 and terms or tokens included in the application records
340 of those applications. The consideration set may include a list
of application IDs and/or a list of application names.
[0085] The search module 312 performs a variety of different
processing operations on the consideration set. In some
implementations, the search module 312 may generate a result score
for each of the applications included in the consideration set. In
some examples, the search module 312 may cull the consideration set
based on the result scores of the applications contained therein.
For example, the subset may be those applications having the
greatest result scores or have result scores that exceed a
threshold. The result objects 362 included in the search results
360 may depend on how the search module 312 calculates the result
scores. For example, the result scores may depend on any
combination of the relevance of an application to the query
parameters 262, 264, the popularity of an application in the
marketplace, the ratings of an application, and other properties of
the application.
[0086] The search module 312 may generate result scores for
applications in a variety of different ways. In general, the search
module 312 may generate a result score for an application based on
one or more scoring features. The scoring features may be
associated with the application and/or the query parameters 262,
264. An application scoring feature may include any data associated
with an application. For example, application scoring features may
include any of the application features included in the application
record 340 or any additional features related to the application,
such as data indicating the popularity of an application (e.g.,
number of downloads) and the ratings (e.g., number of stars)
associated with an application. A query scoring feature may include
any data associated with the query parameters 262, 264. For
example, query scoring features may include, but are not limited
to, a number of terms in the search query 262, the popularity of
the search query 262, and the expected frequency of the terms in
the search query 262. An application-query scoring feature may
include any data, which may be generated based on data associated
with both the application and the query parameters 262, 264 (e.g.,
the query parameters 262, 264 that resulted in identification of
the application record 340 by the search module 312). For example,
application-query scoring features may include, but are not limited
to, parameters that indicate how well the terms of the query match
the terms of the identified application record 340. The search
module 312 may generate a result score for an application based on
at least one of the application scoring features, the query scoring
features, and the application-query scoring features.
[0087] The search module 312 may determine a result score based on
one or more of the scoring features listed herein and/or additional
scoring features not explicitly listed. In some examples, the
search module 312 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 based on at least one of the application
scoring features, the query scoring features, and the
application-query scoring features. For example, the search module
312 may pair the query parameters 262, 264 with each application
and calculate a vector of features for each (query, application)
pair. The vector of features may include application scoring
features, query scoring features, and application-query scoring
features. The search module 312 may then input the vector of
features into a machine-learned regression model to calculate a
result score that may be used to rank the applications in the
consideration set. The search module 312 can then rank the
applications indicated in the consideration set based on the result
scores. Additionally or alternatively, the search module 312 can
cull the applications indicated in the consideration set based on
the result scores. The output of the functional search is a set of
third party applications based on the consideration set. The
foregoing is an example of how a result score is calculated. Some
implementations may calculate the result score in a different
manner.
[0088] Additionally or alternatively, the search module 312
executes an entity search. An entity search is a search that
attempts to identify the types of entities referenced in a query,
and in some cases, to identify third party applications that are
relevant to those entities. The search module 312 can include the
results of the entity search in the set of third party applications
and/or can utilize the results to enhance the results produced by
the functional search. Entity searches are supported by the entity
data store 334.
[0089] In operation, the search module 312 receives the query
parameters 262, 264 and initiates an entity search. The search
module 312 provides a database request to the entity data store 334
that includes one or more of the terms of the query parameters 262,
264. When one or more terms are listed in the entity data store
334, the entity data store 334 returns the entity types of the
matched terms. The search module 312 can then determine which third
party applications are relevant to the returned entity types based
on the application reference records. The search module 312 may be
further configured to score each entity type/third party
application match by estimating a probability of whether the entity
match is a good match. The search module 312 can use heuristic
techniques to score the entity type/third party application match.
The search module 312 can rank the matched applications based on
the calculated scores. The matched applications can be included in
the set of third party applications. Additionally or alternatively,
once the search module 312 has scored the applications, the results
(e.g., list of applications and corresponding scores) of the entity
search can be provided as a signal to the functional search
process. In these implementations, the functional search process
can use the entity search results (360) as a signal for determining
the results scores of the applications in the consideration
set.
[0090] In an example of an entity search, the query parameters 262,
264 may contain the terms "Toy Story." The search module 312 can
identify "Toy Story" in the entity data store 334, which can be
associated with one or more entity types. For example, "Toy Story"
may be identified as a movie entity. The search module 312 can then
identify third party applications that are related to movie
entities. In this example, the search module 312 can identify the
IMDB.RTM. application, the NETFLIX.RTM. application, and the ROTTEN
TOMATOES.RTM. application as third party applications that support
movie entities. Thus, these third party applications may be
indicated in the set of third party applications and/or may be used
to calculate the result scores of applications indicated in the
consideration set identified during the functional search
process.
[0091] In some implementations, the search module 312 can store
identified entities in the query parameters 262, 264 for later use.
In these implementations, the stored entities can be used to send
requests to a web server 130 or application server 120 or to
generate one or more resource identifiers 365.
[0092] In some implementations, the search module 312 is further
configured to perform name searches. A name search is a search for
third party applications having a name that is explicitly included
in the query terms. The search module 312 can determine whether any
of the terms in the search query 262 match to a name of an
application represented in the application data store 332. If so,
the search module 312 can include the third party application
defined by the application representation to the set of third party
applications. The foregoing search techniques are provided for
example only.
[0093] The forwarding module 314 is configured to forward one or
more of the query parameters 262, 264 to servers of the third party
applications identified by the search module 312. In some
implementations, the forwarding module 314 determines a web server
130 and/or an application server 120 associated with each third
party application. In these implementations, the forwarding module
314 can obtain a request command template 346c corresponding to the
third party application for transmitting a request to the web
server 130 and/or the application server 120. The forwarding module
314 can obtain the request command templates 346c of the third
party application from the command template data store 336. Based
on the request command template 346c and the one or more query
parameters 262, 264, the forwarding module 314 formats an outgoing
request. The request command template 346c can be based on the
schema which is implemented by a particular third party application
to receive and process requests. Each third party application may
accept different parameter types and different syntaxes for
expressing parameters in requests that are provided to the third
party application. Thus, a schema implemented by a third party
application can define how it expects to receive requests, whereby
each command template can be defined to leverage a specific
functionality of the third party application.
[0094] The forwarding module 314 can generate an outgoing request
by inserting one or more of the query parameters 262, 264 that were
extracted from the query wrapper 260 into the command template
346c. As discussed, the search module 312 can determine the entity
type of at least a subset of the query parameters 262, 264.
Furthermore, by identifying the command templates 346c of a
particular third party application, the forwarding module 314 can
understand the parameter types that are included in each particular
command template 346c of the third party application. The
forwarding module 314 can utilize an association table between
entity types and parameter types to determine which query
parameters to include in the outgoing request. For instance, a
third party application for making restaurant reservations may
accept the following command template:
"http://www.ex_res_app.com/ex.aspx?d=<date>&t=<time>&r=<na-
me>" and the query may have included the following query terms:
"French Laundry," the current date, and "9:00 P.M." In this
example, the search module 312 determines that "French Laundry" is
most likely a restaurant entity, the current date is likely a date
entity, and "9:00 P.M." is most likely a time entity. Thus, the
forwarding module 314 can generate the request URL
"http://www.ex_res_app.com/ex.aspx?d=<FEB28>&t=<2100>&r=<F-
rench_Laundry>" based on the command template 346c referenced
above. The forwarding module 314 can transmit the request to the
web server 130 (or application server 120) corresponding to the
third party application. In this way, the forwarding module 314
leverages the reservation making functionality of the third party
application. While a request URL is shown in the example above, the
request may have any other suitable format, such as an API call to
the server of the third party application.
[0095] The third party application processes the request, as it
would any other request from a remote computing device 200, and
returns a response corresponding to the request. For example, if
the third party application is an online retailer that allows
consumers to search for brands or types of clothing, the third
party application may return a response indicating items of
clothing that are sold by a retailer associated with the third
party application, whereby the items indicated in the response
correspond to the parameters included in the request.
[0096] The response from the third party application may include a
resource identifier 365. For example, a web server 130 may respond
to a web request. The response may include the requested data and
web resource identifier 365a and/or an application resource
identifier 365b that indicates where the requested data may be
found. For example, if a third party application is an application
for making restaurant reservations, a server of the third party
application may receive a request indicating a restaurant name, a
time, and a day. In response, the server 120, 130 may return a
response indicating whether making a reservation is possible at the
specified date and time and/or a resource identifier 365 (e.g., web
resource identifier 365a or an application resource identifier
365b) to a state of the third party application that allows the
user to make the reservation.
[0097] The linking module 316 receives responses from the third
party applications (i.e., from web servers 130 and/or application
servers 120 of the third party applications) and generates state
links 364 to the third party applications based on the responses
received from each respective third party application. The linking
module 316 includes the state links 364 in the result objects 362
that are provided to the remote computing device 200 as part of the
search results 360. In some implementations, the linking module 316
receives web resource identifiers 365a from web servers 130
associated with each of the third party applications. For each web
resource identifier 365a, the linking module 316 can generate a
state link 364 that includes one or more web resource identifiers
365a and/or one or more application resource identifiers 365b. The
linking module 316 can be configured to convert a web resource
identifier 365a to an application resource identifier 365b. For
example, the linking module 316 may utilize conversion rules for
converting from a web resource identifier 365a to an application
resource identifier 365b. Conversion rules can be specific to
specific third party applications (e.g., a first conversion rule
may apply to a first third party application, while a second
conversion rule can apply to a second third party application). A
conversion rule can define how to convert a domain name in the web
resource identifier 365a to a reference to a native application 218
that is included in the application resource identifier 365b. A
conversion rule can further define how to convert the state
parameters appearing in the web resource identifier 365a to the
state parameters that are included in the application resource
identifier 365b.
[0098] Additionally or alternatively, the linking module 316 can
generate state links 364 to particular states of third party
applications using one or more command templates corresponding to
the third party applications indicated in the set of third party
applications (identified by the search module 312), one or more of
the terms contained in the query parameters 262, 264, and in some
cases, one or more entities and entity types identified by the
search module 312. In some implementations, the linking module 316
obtains the one or more command templates 346 from the command
template data store 336 for each third party application indicated
in the set of third party applications and, in some cases, the
entity types determined by the search module 312. For example, for
a third party application that allows a user to make restaurant
reservations, the command templates 346 corresponding to the third
party application may include command templates 346 for generating
web resource identifiers 365a and application resource identifiers
365b. Each command template 346 may indicate the types of
parameters it receives. Using an association table that associates
entity types to parameter types accepted by the third party
application, the linking module 316 determines which entities can
be entered in which parameter fields in each command template 346.
The linking module 316 then substitutes the identified entities for
the parameter fields in the command templates 346. In this way, for
each third party application identified in the set of third party
applications, the linking module 316 can generate one or more web
resource identifiers 365a and/or application resource identifiers
365b that leverage one or more functionalities of the third party
application without having to send a request to a web server 130 or
application server 120 of the third party application.
[0099] The linking module 316, for each set of resource identifiers
365 that correspond to a particular state, can imbed the set of
resource identifiers 365 corresponding to a third party application
in a state link 364. In implementations where the state link 364
includes more than one resource identifiers 365 (e.g., one or more
application resource identifiers 365b and a web resource identifier
365a), the linking module 316 can further include an instruction
set with the state link indicating an order to access the resource
identifiers 365. For instance, the instruction set can instruct the
remote computing device 200 to first attempt to launch the native
application 218 indicated by an application resource identifier
365b and, if unsuccessful, to access the web application via the
web browser of the remote user computing device 200. In some
implementations, the instruction set is a script.
[0100] The viewing module 318 can determine a view of the state of
the third party application, which can be provided to the remote
computing device 200. A view of the state of a third party
application can be, for example, a graphical user interface (GUI)
250 of either a native application version or a web application
version of the third party application. In some implementations,
the viewing module 318 can, for example, access the web application
at the determined state and capture a screen shot of the graphical
user interface 250 of the web application at the state. In these
implementations, the viewing module 318 can provide the screen shot
to the linking module 316, which provides the screen shot with the
state link. In some implementations, the screen shot is only taken
of a portion of the screen that corresponds to the functionality
implicated by the query.
[0101] In some implementations, the viewing module 318 is
configured to provide the remote computing device 200 access to the
actual third party application (e.g., a native application version
or a web application version of the third party application). In
these implementations, the viewing module 318 analyzes the code of
a web application or a native application 218 to identify a
particular segment of the code that pertains to the desired
function of a particular state of the application. The identified
portion of the code can then be executed either at the web server
130, the search server 300, or at the remote computing device 200,
to provide the user with a functionality that is implicated by the
query. To support these implementations, the web application may be
written in a programming language that segments behaviors (e.g.,
specific functions) and presentation related to the associated
behavior in modular blocks. In this way, the viewing module 318 can
efficiently identify a modular block corresponding to a specific
functionality or state, such that the viewing module 318 can
provide the one or more query parameters 262, 264 to the modular
block, which is executed using the one or more query parameters
262, 264. This allows the remote computing device 200 to receive a
view of a particular function of the web application or native
application 218 at the desired state, and further, to interact with
the web or native application 218 (e.g., provide additional input
and/or receive additional output).
[0102] The results module 319 generates the search results 360 and
provides the search results (360) to the remote computing device
200 that provided the query. For each third party application in
the set of third party applications, the results module 319 can
generate a result object 362 for the third party application. The
result object 362 can include one or more state links 364 to
different states of the third party application. As previously
discussed, each state link 364 can include an application resource
identifier 365b and/or a web resource identifier 365a. Additionally
or alternatively, the results module 319 can obtain visual
indicators 366 corresponding to the third party application and can
include the visual indicators 366 in the result object 362.
Examples of visual indicators 366 that can be included in a result
object 362 of a third party application include, an icon of the
third party application, a logo or image of an entity corresponding
to the state of the third party application, and/or a screen shot
of the third party application. Additionally or alternatively, the
results module 319 can obtain other data 368 corresponding to the
third party application and can include the other data 368 in the
result object 362. Examples of other data 368 corresponding to the
third party application can include rankings, ratings, and/or
descriptions corresponding to the third party application and/or
the entity corresponding to the state of the third party
application. The results module 319 can combine the result objects
362 into the search results 360 and transmit the search results 360
to the remote computing device 200.
[0103] FIG. 4A illustrates an example set of operations for a
method 400 for providing parameters to one or more third party
applications. For purposes of explanation, the method 400 is
described as being performed by the components of the search server
300.
[0104] At operation 410, the search module 312 receives a query
(e.g., query wrapper 260) from the remote computing device 200. In
some implementations, the query may be provided from the remote
computing device 200 via a partner device 140. As discussed, the
query can include query parameters 262, 264, including a search
query 262 and other parameters 264 such as the location of the
remote computing device 200 and/or an operating system 212 of the
remote computing device 200. The search module 312 parses the
search query 262 to identify the query terms. Further, the search
module 312 can perform natural language processing to extract
features of the query terms. At operation 412, the search module
312 can identify a set of one or more third party applications
which correspond to the query based on the query parameters 262,
264 and/or the features of the query terms. As previously
discussed, the search module 312 can perform one or more of a
functional search, an entity search, and a name search to identify
the set of third party applications.
[0105] At operation 414, the forwarding module 314 transmits the
query parameters 262, 264 to servers associated with each of the
third party applications indicated in the set of third party
applications. FIG. 4B illustrates an example method 430 for
transmitting the query parameters 262, 264 to a server of a third
party application. The method 430 can be repeated for each third
party application indicated in the set of third party
applications.
[0106] At operation 440, the forwarding module 314 selects a
command template 346 corresponding to the third party application.
The forwarding module 314 can obtain one or more request command
templates 346c for generating requests from the command template
data store 336, which can be indexed by the third party
application. As previously discussed, the request command templates
346c can be human curated, provided by the application developer of
the third party application, or learned from the code of the third
party application. The forwarding module 314 may further be
required to select a specific request command template 346c within
the third party application, such that the specific request command
template 346c corresponds to the functionality implicated by the
query. For example, if a third party application allows a user to
request reviews of restaurants and to make restaurant reservations,
the third party application may be configured to receive at least
requests corresponding to two different request command templates
346c. In some scenarios, the forwarding module 314 may select one
or more of the request command templates 346c based on the entity
types of the query. For example, if the query parameters 262, 264
include a restaurant name, a date, and a time, the forwarding
module 314 may select a command template 346 for making
reservations at a restaurant. Alternatively, the forwarding module
314 can select any command template 346 of the third party
application that defines parameter fields that correspond to the
entity types implicated by the query parameters 262, 264.
[0107] At operation 442, the forwarding module 314 formats an
outgoing request based on the command template 346 and the query
parameters 262, 264. The forwarding module 314 can insert the
relevant query parameters 262, 264 into the parameter fields
defined in the command template 346 to generate the outgoing
request. The forwarding module 314 can utilize defined associations
between entity types and the parameter types of the parameter
fields in the request command template 346c to populate the
parameter fields. For instance, if the entity type of a query term
associates to a parameter type, then the forwarding module 314
populates the parameter field with the query term.
[0108] At operation 444, the forwarding module 314 can transmit the
outgoing request to a server, e.g., web server 130 or application
server 120, associated with the third party application. The server
associated with the third party application processes the request
and provides results to the search server 300.
[0109] The methods 400 and 430 of FIGS. 4A and 4B are provided for
example and not intended to limit the scope of the disclosure.
Variations of the methods are contemplated and within the scope of
the disclosure.
[0110] FIG. 5 illustrates an example set of operations for a method
500 for processing a query from a remote computing device 200. For
purposes of explanation, the method 500 is described as being
performed by the components of the search server 300.
[0111] At operation 510, the search module 312 receives the query
(e.g., query wrapper 260) from the remote computing device 200. For
purposes of explanation only, the remote computing device 200 is
explained as being a remote computing device 200. In some
implementations, the query may be provided from the remote
computing device 200 via a partner device 140. As discussed, the
query can include query parameters 262, 264, including a search
query 262 and other parameters 264 such as the location of the
remote computing device 200 and/or an operating system 212 of the
remote computing device 200. The search module 312 parses the
search query 262 to identify the query terms of the search query
262. Further, the search module 312 can perform natural language
processing to extract features of the query terms.
[0112] At operation 512, the search module 312 can identify a set
of one or more third party applications which correspond to the
query based on the query parameters 262, 264 and/or the features of
the query terms. As previously discussed, the search module 312 can
perform one or more of a functional search, an entity search, and a
name search to identify the set of third party applications.
[0113] At operation 514, the forwarding module 314 transmits one or
more of the query parameters 262, 264 to servers associated with
each of the set of third party applications. In some
implementations, the forwarding module 314 can execute the method
430 described with respect to FIG. 4B when transmitting the one or
more query parameters 262, 264.
[0114] At operation 516, the linking module 316 receives a response
from each of the third party applications. The response may be
received from, for example, a web server 130 that executes a web
application version of the third party application. In this
scenario, the response can include one or more web resource
identifiers 365a, each of which identifying the web server 130 and
one or more state parameters that indicate a state of a web
application version of the third party application. For example,
the response can include one or more URLs that each indicates a
domain name of the web server 130 and one or more state parameters
that can be used to access a particular state of the third party
application. In another example, the response may be received from
an application server 120 that supports a native application
version of the third party application. In this scenario, the
application server 120 can return one or more application resource
identifier 365b, each identifying the native application 218 and
one or more state parameters that indicate a state of the native
application version of the third party application.
[0115] At operation 518, the linking module 316 generates one or
more state links 364 for each the third party application based on
the respective responses received from the servers of the third
party applications. As discussed above, the state link 364 can
provide a mechanism to access a state of the native application
version of the third party application and/or a state of the web
application version of the third party application. In
implementations where the response is received from a web server
130 of the third party application and includes a web resource
identifier 365a, the linking module 316 can convert the web
resource identifier 365a into one or more application resource
identifiers 365b based on one or more conversion rules. The linking
module 316 may convert the web resource identifier 365a into
multiple application resource identifiers 365b when the third party
application includes more than one native application versions. In
other implementations, the web server 130 or an application server
120 associated with the third party application may provide one or
more application resource identifiers 365b and one or more web
resource identifiers 365a in the response.
[0116] The linking module 316 embeds the one or more application
resource identifiers 365b in a state link 364. The linking module
316 may further embed the web resource identifier 365a in the state
link 364 and an instruction set for accessing the application. The
instruction set can instruct the remote computing device 200 to
attempt to access the native application 218 before using the web
browsing application 216 to access the web application.
Additionally or alternatively, the instruction set can instruct the
remote computing device 200 to launch a native application 218
indicated in the state link 365 and can further instruct the remote
computing device 200 to input the state parameters into a graphical
user interface 250 of the native application 218.
[0117] At operation 520, the results module 319 transmits the state
links 364 for each of the third party applications to the remote
computing device 200. In some implementations, the results module
319 includes one or more state links 364 in a result object 362
corresponding to the third party application. The result processing
module 319 can include additional data in each result object 362,
such as one or more visual indicators 366 and/or other data 368.
The result module 319 can include the resource object 362 in the
search results 360 and can transmit the search results 360 to the
remote computing device 200.
[0118] The remote computing device 200 receives the state link 364
and can access the third party application by first attempting to
launch the native application 218 indicated by the state link 364.
In doing so, the remote computing device 200 provides the one or
more state parameters to the native application 218, which may in
turn provide the state parameters to an application server 120. If
unsuccessful in launching the native application 218, the remote
computing device 200 can access the web application indicated by
the web resource identifier 365a in the state link 364 using its
web browser application 216.
[0119] While the discussion above states for "each third party
application," reference to "each third party application" does not
necessarily require all identified third party applications, but
each third party application that provides relevant responses. The
method 500 of FIG. 5 is provided for example and not intended to
limit the scope of the disclosure. Variations of the method are
contemplated and within the scope of the disclosure. For example,
the viewing module 318 can capture a screen shot of the application
(web application or native application 218) at the state indicated
by the one or more state parameters. The linking module 316 can
include the screen shot in the result object 362.
[0120] FIG. 6 illustrates an example set of operations for a method
600 for processing a query from a remote computing device 200. For
purposes of explanation, the method 600 is described as being
performed by the components of the search server 300. According to
the implementations of FIG. 6, the search server 300 generates one
or more resource identifiers 365 to a third party application and a
state link 364 containing the resource identifiers 365 without
having to provide an outgoing request to a server associated with
the third party application.
[0121] At operation 610, the search module 312 receives a query
from the remote computing device 200 containing query parameters
262, 264. At operation 612, the search module 312 identifies a set
of one or more third party applications that correspond to the
query based on the query parameters 262, 264. The search module 312
can perform one or more of a functional search, an entity search,
and a name search to identify the set of third party
applications.
[0122] At operation 614, the linking module 316 can determine one
or more command templates 346 for each third party application in
the set of third party applications. As was previously discussed,
the command templates 346 of a third party application can be
obtained from the command template data store 336. The linking
module 316 can obtain one or more web application command templates
346a and one or more native application command templates 346b. In
some implementations, the linking module 316 can select the command
templates 346 based on the entity types implicated by the query
parameters 262, 264. In some implementations, the linking module
316 uses an association table corresponding to the third party
application to identify the entity types that may be accepted as
parameters by the third party application (i.e., the parameter
types accepted by the third party application). Based on the entity
types implicated by the query parameters 262, 264 and the parameter
types accepted by the third party application, the linking module
316 can select one or more command templates 346 from the command
template data store 336. In this way, the linking module 316
retrieves one or more command templates 346 that leverage a
particular functionality of the third party application. For
instance, the linking module 346 can select one or more command
templates 346 from a plurality of command templates 346
corresponding to the third party application based on the
functionality that was implicated by the query parameters 262, 264.
In this example, the selected command templates 346 can correspond
to different versions of the third party application (e.g., a
command template 346b for iOS native application version, a command
template 346b for an ANDROID.RTM. native application version, and a
command template 346a for a web application version). Moreover, for
each third party application, the linking module 316 can select
multiple command templates 346 to leverage different
functionalities of the third party application.
[0123] At operation 616, the linking module 316 generates one or
more resource identifiers 365 for each of the third party
applications based on the retrieved command templates 346 and one
or more of the query parameters 262, 264. For each command template
346, the linking module 316 can substitute one or more of the query
parameters 262, 264 that are relevant to the command template 346
for the parameter fields defined in the command template 346, as
was described above. In some scenarios, the linking module 316 can
substitute identified entities in the query parameters 262, 264, or
the entire search query 262 itself for parameter fields defined in
the respective command templates 346a, 346b. In this way, the
linking module 316 can generate one or more application resource
identifiers 365b and/or one or more web resource identifiers 365a
corresponding to each third party application. In some scenarios,
multiple application resource identifiers 365b and/or multiple web
resource identifiers 365a can correspond to the same state of the
third party application. Put another way, the multiple resource
identifiers 365 may reference different versions of the third party
application (e.g., IOS.RTM. version, ANDROID.RTM. version, free
version, and/or pay version), but may all access the same state of
the third party application.
[0124] At operation 618, the linking module 316 can generate one or
more state links 364 for each third party application. The linking
module 316 generates a state link 364 to the third party
application based on the generated resource identifiers 365. The
linking module 316 can insert an application resource identifier
365b in a state link 364. The linking module 316 may further
include a web resource identifier 365a in the state link 364 and an
instruction set for accessing the application (e.g., attempt to
access the native application 218 before using the web browsing
application 216 to access the web application).
[0125] At operation 620, for each of the third party applications,
the linking module 316 communicates the state link 364 to the
remote computing device 200. In some implementations, the results
module 319 includes each state link 364 corresponding to a third
party application in a result object 362 corresponding to the third
party application. The result processing module 319 can include
additional data in each result object 362, such as one or more
visual indicators 366 and/or other data 368. The result processing
module 319 can include the resource object 362 for each third party
application in the set of third party applications in the search
results 360 and can transmit the search results 360 to the remote
computing device 200.
[0126] While the discussion above states for "each third party
application," reference to "each third party application" does not
necessarily require all identified third party applications, but
each third party application that accepts a resource identifier 365
(web resource identifier 365a and/or application resource
identifier 365b). The method 600 of FIG. 6 is provided for example
and not intended to limit the scope of the disclosure. Variations
of the method 600 are contemplated and within the scope of the
disclosure.
[0127] FIGS. 7A-7B illustrate an example of a search that is
performed on a remote computing device 200. In FIG. 7A, a user has
entered a search query 262 into a GUI 250 on the search application
214. Specifically, the user has entered the search query 262 "Toy
Story" into a search box 252 of the GUI 250. In response to the
search query 262, the search application 214 generates a query
wrapper 260 including the search query 262 and any other parameters
264 and transmits the query wrapper 260 to the search server 300.
For example, the user can select (e.g., touch or click) the search
button 254 of the GUI 250 in order to initiate transmission of the
query wrapper 260 to the search server 300.
[0128] The search server 300 receives the query wrapper 260 and
generates search results 360 based thereon. The search server 300
may transmit search results 360 including result objects 362
corresponding to a set of third party applications. In the
illustrated example, the result objects 362 correspond to
"IMDB.RTM." (e.g., native and/or web application), "FANDANGO.RTM."
"CRACKLE)," "FLIXSTER.RTM.," and "ROTTEN TOMATOES.RTM.." Each
result object 362 may include one or more state links 364
corresponding to a relevant state of the application indicated in
the search results 360. A user may select (e.g., touch or click)
one of the state links 364 to access the resource indicated in the
state link 364. In response to such a user selection, the search
application 214 can instruct the operating system 212 to launch the
selected third party application and to access the state of the
third party application indicated in the state link 364.
[0129] In the example of FIG. 7A, the user selects the IMDB.RTM.
state link 364a. In the case of the IMDB.RTM. application, the
various states of the application may correspond to different
entries in the IMDB.RTM. databases. The illustrated IMDB.RTM. state
link 364a may include an application resource identifier 365b that
indicates a state corresponding to an entry for the movie "Toy
Story." Accordingly, selection of the IMDB.RTM. state link 364a
causes the search application 214 to instruct the operating system
212 of the remote computing device 200 to launch the IMDB.RTM.
native application 218 and to access the "Toy Story" entry on the
IMDB.RTM. native application based on the application resource
identifier 365b embedded in the state link 364a. FIG. 7B
illustrates a GUI 250 of the selected native application 218 that
was launched in response to the selection of the IMDB.RTM. state
link 364a. In this example, the selected native application
displays an example entry for "Toy Story."
[0130] FIGS. 8A-8B illustrate another example of a search that is
performed on a remote computing device 200. In FIG. 8A, a user has
entered a search query 262 into the GUI 250 of the search
application 214. Specifically, the user has entered the search
query "Late night diners by me" into a search bar 252 of the GUI
250. In response to receiving the search query 262, the search
application 214 generates a query wrapper 260 including the search
query 262 and other query parameters 264 (e.g., geo-location of the
device) and transmits the query wrapper 260 to the search server
300.
[0131] The search server 300 receives the query wrapper 260 and
generates search results 360 based thereon. The search server 300
may transmit search results 360 including a set of result objects
362 to the remote computing device 200. In the illustrated example,
the result objects 362 identify the "YELP.RTM.", "OPENTABLE.RTM.,"
"TRIPADVISOR.RTM.," and "URBANSPOON.RTM." applications. The GUI 250
may include state links 364 to the applications in the search
results 360. A user may select (e.g., touch or click) the state
links 364 to access the resource indicated in the state link 364.
For example, a user may select the area of the GUI 250 including
the OPENTABLE.RTM. icon to select a state link 364 to the
OPENTABLE.RTM. application. In another example, one or more state
links 364 may be provided for one or more applications listed in
the search engine result page.
[0132] The GUI 250 in FIG. 8A includes a plurality of different
state links 364. Three state links 364a, 364b, 364c provide access
to different states of the YELP.RTM. application. In the case of
YELP.RTM., each state may correspond to a different entry. For
example, the state links 364a, 364b, 364c may provide access to
entries for "IHOP.RTM.," "DENNY'S.RTM.," and "TACO BELL.RTM.,"
respectively, in the YELP.RTM. application. In the example of FIG.
8A, the user selects the DENNY'S.RTM. state link 364b. The
DENNY'S.RTM. state link 364b may include an application resource
identifier 365b to an entry for the restaurant DENNY'S.RTM. in the
YELP.RTM. native application. Accordingly, selecting the
DENNY'S.RTM. state link 364b causes the search application 214 to
instruct the operating system 212 to launch the YELP.RTM. native
application and access an entry for DENNY'S.RTM. based on an
application resource identifier embedded in the state link 364a.
FIG. 8B shows an example GUI 250 of a selected application that the
operating system 212 launched in response to the selection of the
DENNY'S.RTM. state link 364b.
[0133] FIGS. 9A and 9B illustrate another example of a search that
may be performed on a remote computing device 200. In FIG. 9A, a
user has entered the search query "thai" into the search bar 252 of
the GUI 250 and executed the search by, for example, selecting the
search button 254 of the GUI 250. In response to the search query
262, the search application 214 generates a query wrapper 260
including the search query 262 and any other query parameters 264
(e.g., geo-location and/or operating system of the remote computing
device 200) and transmits the query wrapper 260 to the search
server 300.
[0134] The search server 300 receives the query wrapper 260 and
generates search results 360 based thereon. The search server 300
may transmit search results 360 including a set of result objects
362 to the remote computing device 200. The set of result objects
362 includes result objects 362 corresponding to the YELP.RTM. and
OPENTABLE.RTM. applications. Each result object 362 include
multiple state links 364 to the respective applications. A user may
select a state link 364 to access the entry indicated in the state
link 364. For example, a user may select a state link 364a
corresponding to the Bangkok Bistro to view the Bangkok Bistro
entry in the YELP.RTM. application.
[0135] The GUI 250 in FIG. 9A includes three state links 364a,
364b, 364c that provide access to entries in the YELP.RTM.
application. For example, the state links 364a, 364b, 364c may
provide access to entries for "Bangkok Bistro," "Buda Thai," and
"Shang Thai Restaurant" in the YELP.RTM. application. The GUI in
FIG. 9A includes three state links 364d, 364e, 364f that provide
access to entries in the OPENTABLE.RTM. application. For example,
the state links 364d, 364e, 364f may provide access to entries for
"Baan Thai House & Wine Bar," "Basil Canteen @ 11th Street,"
and "Blackwood" in the OPENTABLE.RTM. application. The state links
364d, 364e, 364f for "Baan Thai House & Wine Bar," "Basil
Canteen @ 11th Street," and "Blackwood," respectively, include a
portion of the OPENTABLE.RTM. application GUI 910a, 910b, 910c
relating to making reservations at available reservation times. In
this way, the user can access the functionality of the
OPENTABLE.RTM. application directly from the GUI 250 of the search
application 214.
[0136] The GUI 250 of FIG. 9A also includes icons 902a, 902b that
indicate whether the native applications for YELP.RTM. and
OPENTABLE.RTM. are currently installed on the remote computing
device 200. The "Open" icon 902a indicates that the YELP.RTM.
native application can be launched by the remote computing device
200, which implies that the YELP.RTM. native application is
installed on the remote computing device 200. The user may select
(e.g., touch) the "Open" icon 902a to launch the YELP.RTM. native
application to a default state (e.g., a home screen" of the
YELP.RTM. native application). The "Free" icon 902b indicates that
the OPENTABLE.RTM. native application can be downloaded to the
remote computing device 200 and is not installed thereon. In some
examples, a user may select the "Free" icon 902b to launch an
application marketplace (e.g., GOOGLE PLAY.RTM. or the APP
STORE.RTM.) that provides the OPENTABLE.RTM. native application for
download or to automatically start downloading the OPENTABLE.RTM.
native application to the remote computing device 200. Selecting
the Baan Thai House & Wine Bar state link 364d may cause the
search application to attempt to launch the OPENTABLE.RTM. native
application. When the remote computing device 200 determines that
the attempt was unsuccessful, the search application 214 can
instruct the operating system 212 to access the entry for Baan Thai
House & Wine Bar in the OPENTABLE.RTM. web application based on
the web resource identifier 365a embedded in the state link 364d.
FIG. 9B illustrates a GUI 250 of the OPENTABLE.RTM. web application
that is displayed by the web browser of the remote computing device
200 in response to selection of the Baan Thai House & Wine Bar
state link 364d.
[0137] FIG. 10 illustrates another example of a search being
performed on a remote computing device 200. In FIG. 10, the user
has entered the search query "taxi" into the search bar 252 of the
GUI 250. As described above, the search server 300 receives a query
wrapper 260 containing the search query 262 and other query
parameters 264 (e.g., geo-location of the remote computing device
200) from the remote computing device 200 and generates search
results 360 based on the query wrapper 260. In the example of FIG.
10, the search server 300 may forward a geo-location query
parameter 264 to a server associated with the GETT.RTM. application
in a request. In response, the server associated with the GETT.RTM.
application may return dynamic data, such as estimated distances of
various taxi drivers with respect to the remote computing device
200 and an estimated amount of time that that it would take for the
taxi driver to arrive to the user. The search server 300 can embed
the dynamic data in the state links 364, such that the GUI 250
displays the dynamic data as additional data 368 in the state link
364. If the user wishes to make a taxi reservation, the user can
select one of the state links 364 to make the taxi reservation.
Selection of a state link 364 can launch the GETT.RTM. native
application thereby initiating the taxi reservation.
[0138] The searches explained with respect to FIGS. 7A-10 are
provided for example only and are not intended to limit the types
of searches that may be performed. Further, the results of the
searches are provided for example only and various search results
360 may be displayed in any other suitable manner.
[0139] FIGS. 11A and 11B illustrate example operations performed by
a search server 300 for processing a query received from a remote
computing device 200. The operations 1100 described herein may be
performed by the processing device 310 of the search server
300.
[0140] At operation 1110, the search server 300 receives a query
from a remote computing device 200. In some implementations, the
query is included in a query wrapper 260 that contains query
parameters 264. The query parameters 262, 264 can include a search
query 262 (i.e., one or more query terms). In some implementations,
the query parameters 262, 264 can further include additional query
parameters 264 (e.g., a geo-location of the remote computing device
200, an operating system 212 of the remote computing device 200, a
device type of the remote computing device 200, and/or a username
of the user of the remote computing device 200).
[0141] At operation 1112, the search server 300 identifies a set of
third party applications corresponding to the query. The search
server 300 can perform one or more of a functional search, an
entity search, or a name search using the query parameters 262, 264
received in the query wrapper 260. The result of the search or
searches is a set of third party applications that are relevant to
one or more of the query parameters 262, 264 provided in the query
wrapper by the remote computing device 200.
[0142] At operation 1114, the search server 300 generates one or
more resource identifiers 365 for the third party applications
indicated in the set of third party applications. For a third party
application, the search server 300 generates resource identifiers
365 based on the query parameters 262, 264 and the command
templates 346 corresponding to the third party application. The
search server 300 can identify relevant command templates 346 from
the command template data store 336 based on entity types of one or
more of the query parameters 262, 264. For example, if the query
parameters 262, 264 include a movie name and a time and the set of
applications include an application for finding movie times at
movie theatres near the remote computing device 200, the search
server 300 may identify one or more command templates 346 that
receive these types of parameters. The search server 300 may
utilize an association table corresponding to the third party
application to identify the relevant parameters that were included
in the query parameters 262, 264. The search server 300 can
identify web application command templates 346a and/or native
application command templates 346b for the third party application.
The search server 300 can substitute the relevant query parameters
262, 264 into the parameters fields defined in the command
templates 346, each time generating a resource identifier 365.
[0143] At operation 1116, the search server 300 generates one or
more state links 364 for the third party applications based on the
generated resource identifiers 365. The search server 300 can embed
the generated application resource identifiers 365b and/or web
resource identifiers 365a into a state link 364. In some scenarios,
the search server 300 can select more than one resource identifier
365 to embed in a state link 364. For example, if the third party
application accepts both application resource identifiers 365b (for
launching a native application 218 of the third party application
to a specified state) and web resource identifiers 365a (for
accessing a web application of the third party application at a
specified state), then the search server 300 can select multiple
resource identifiers 365 for inclusion in the state link 364,
provided the resource identifiers 365 correspond to the same state
(e.g., provide the same information). When the state link 364
contains more than one resource identifier, the search server 300
can further include a set of instructions indicating an order by
which the resource identifiers can be selected. For example, the
set of instructions can instruct the remote computing device 200 to
attempt to launch the native application 218 using the application
resource contained in the state link 364, and if unsuccessful, to
access the web application using the web resource identifier 365a
contained in the state link 364. In some implementations, the
search server 300 includes additional data in the state link 364.
For example, the search server 300 can include visual indicators
366 (e.g., icons, logos, screen shots, GUI 250 elements of the
third party application) and/or metadata (e.g., descriptions,
ratings, rankings, and dynamic data) in the state link 364. The
additional data can be obtained from any suitable source, including
a server associated with the third party application, the
application data store 332, and/or the entity data store 334.
[0144] At operation 1118, the search server 300 generates search
results 360 based on the generated state links 364. For each third
party application in the set of third party applications, the
search server 300 can group the state links 364 for the third party
application together. The search server 300 can then generate a
result object 362 for the third party application based on the
grouped state links 364. The search results 360 include the result
objects 362 corresponding to each of the third party
applications.
[0145] At operation 1120, the search server 300 transmits the
search results 360 to the remote computing device 200. The remote
computing device 200 can then display the search results 360 via
its user interface device 240. The user can access a state of a
third party application indicated in the search results (360) by
selecting a state link 364 included in the search results 360.
[0146] FIGS. 12A and 12B illustrate example operations 1200
performed by a search server 300 processing a query received from a
remote computing device 200. The operations 1200 described herein
may be performed by the processing device 310 of the search server
300.
[0147] At operation 1210, the search server 300 receives a query
from a remote computing device 200. In some implementations, the
query is included in a query wrapper 260 that contains query
parameters 262, 264. The query parameters 262, 264 can include a
search query 262 (i.e., one or more query terms). In some
implementations, the query parameters 262, 264 can further include
additional query parameters 264 (e.g., a geo-location of the remote
computing device 200, an operating system of the remote computing
device 200, a device type of the remote computing device 200,
and/or a username of the user of the remote computing device
200).
[0148] At operation 1212, the search server 300 identifies a set of
third party applications corresponding to the query. The search
server 300 can perform one or more of a functional search, an
entity search, or a name search using the query parameters 262, 264
received in the query. The result of the search or searches is a
set of third party applications that are relevant to one or more of
the query parameters 262, 264 provided in the query by the remote
computing device 200.
[0149] At operation 1214, the search server 300 generates requests
based on request command templates 346c corresponding to the third
party applications. For each relevant third party application, the
search server 300 retrieves one or more request command templates
346c from the command template data store 336. The search server
300 can determine which request command templates 346c to retrieve
based on the entity types contained in the query. In some
implementations, the search server 300 utilizes an association
table to identify relevant request command templates 346c. The
search server 300 can insert identified entities from the query
into the parameter fields of a request command template 346c to
generate a request.
[0150] At operation 1216, the search server 300 transmits the
requests to the servers of the third party applications indicated
in the set of third party applications. In some implementations,
the requests for a particular third party application can be sent
to a web server 130 of the third party application. At operation
1218, the search server 300 receives responses from the servers of
the third party applications. In implementations where the server
is a web server 130, the response can include a web resource
identifier 365a of a state corresponding to the parameters included
in the request. The search server 300 may receive multiple
responses from multiple servers.
[0151] At operation 1220, the search server 300 generates state
links 364 based on the responses. In some implementations, the
search server 300 can convert the web resource identifiers 365a
received in the responses into application resource identifiers
365b based on conversion rules corresponding to each respective
third party application. In some scenarios, a conversion rule can
result in multiple application resource identifiers 365b being
converted from a web resource identifier 365a (e.g., in the case of
multiple versions of the native application 218). The search server
300 can group application resource identifiers 365b and a web
resource identifier 365a corresponding to the same state of the
third party application together. The search server 300 can embed
the grouped application resource identifiers 365b and web resource
identifier 365a into a state link 364. In this way, the search
server 300 can generate multiple state links 364 for a third party
application, and can generate one or more state links 364 for each
of the third party applications indicated in the set of third party
applications. When the state link 364 contains more than one
resource identifier 365 (e.g., one or more application resource
identifiers 365b and a web resource identifier 365a), the search
server 300 can further include a set of instructions indicating an
order by which the resource identifiers 365 can be selected. For
example, the set of instructions can instruct the remote computing
device 200 to attempt to launch the native application 218 using
the application resource application identifier 365b contained in
the state link 364 and if unsuccessful to access the web
application using the web resource identifier 365a contained in the
state link 364. In some implementations, the search server 300
includes additional data in the state link 364. For example, the
search server 300 can include visual indicators 366 (e.g., icons,
logos, screen shots, GUI 250 elements of the third party
application) and/or metadata (e.g., descriptions, ratings,
rankings, dynamic data) in the state link 364. The additional data
can be obtained from any suitable source, including a server
associated with the third party application, the application data
store 332, and/or the entity data store 334.
[0152] At operation 1222, the search server 300 generates search
results 360 based on the state links 364. For each third party
application having at least one state link 364 generated therefor,
the search server 300 can group the state links 364 for the third
party application together. The search server 300 can then generate
a result object 362 for the third party application based on the
grouped state links 364. The search results 360 include the result
objects 362 corresponding to each of the third party
applications.
[0153] At operation 1224, the search server 300 transmits the
search results 360 to the remote computing device 200. The remote
computing device 200 can then display the search results 360 via
its user interface device 240. The user can access a state of a
third party application indicated in the search results 360 by
selecting a state link 364 included in the search results 360.
Computing Machine Architecture
[0154] FIG. 13 is a block diagram illustrating components of an
example machine able to read instructions from, for example, a
non-transitory machine-readable medium and execute them in one or
more processors (or controllers). Specifically, FIG. 13 shows a
diagrammatic representation of a machine in the example form of a
computer system 1300 within which instructions 1324 (e.g., software
or program code) for causing the machine to perform any one or more
of the methodologies discussed herein may be executed. The
methodologies include those described with respect to FIGS. 3A, 3B,
4, 5, and 6. In alternative embodiments, the machine operates as a
standalone device or may be connected (e.g., networked) to other
machines. In a networked deployment, the machine may operate in the
capacity of a server machine or a client machine in a server-client
network environment, or as a peer machine in a peer-to-peer (or
distributed) network environment.
[0155] The machine for this configuration may be a mobile computing
device such as a tablet computer, an ultrabook (or netbook)
computer, a personal digital assistant (PDA), a cellular telephone,
a smartphone, a web appliance, or like machine capable of executing
instructions 1324 (sequential or otherwise) that specify actions to
be taken by that machine. Further, while only a single machine is
illustrated, the term "machine" shall also be taken to include any
collection of machines that individually or jointly execute
instructions 1324 to perform any one or more of the methodologies
discussed herein.
[0156] The example computer system 1300 includes one or more
processors 1302 (e.g., a central processing unit (CPU) and may also
include a graphics processing unit (GPU), a digital signal
processor (DSP), one or more application specific integrated
circuits (ASICs), one or more radio-frequency integrated circuits
(or chipset) (RFICs), a wireless fidelity (WiFi) chipset, a global
positioning system (GPS) chipset, an accelerometer (one, two, or
three-dimensional), or any combination of these). The computer
system 1300 also includes a main memory 1304 and a static memory
1306. The components of the computing system are configured to
communicate with each other via a bus 1308. The computer system
1300 may further include a graphics display unit 1310 (e.g., a
plasma display panel (PDP), a liquid crystal display (LCD), glass
display) which may be configured for capacitive or inductive touch
sensitivity to allow for direct interaction with software user
interfaces through the display 1310. The computer system 1300 may
also include an alphanumeric input device 1312 (e.g., a keyboard),
a cursor control device 1314 (e.g., a mouse, a trackball, a
joystick, a motion sensor, or other pointing instrument), a storage
unit 1316, a signal generation device 1318 (e.g., a speaker), and a
network interface device 1320, which also are configured to
communicate via the bus 1308.
[0157] The storage unit 1316 includes a machine-readable medium
1322 on which is stored instructions 1324 (e.g., software)
embodying any one or more of the methodologies or functions
described herein. The instructions 1324 (e.g., software) may also
reside, completely or at least partially, within the main memory
1304 or within the processor 1302 (e.g., within a processor's cache
memory) during execution thereof by the computer system 1300, the
main memory 1304 and the processor 1302 also constituting
machine-readable media. The instructions 1324 (e.g., software) may
be transmitted or received over a network 1326 via the network
interface device 1320.
[0158] While machine-readable medium 1322 is shown in an example
embodiment to be a single medium, the term "machine-readable
medium" should be taken to include a single medium or multiple
media (e.g., a centralized or distributed database, or associated
caches and servers) able to store instructions (e.g., instructions
1324). The term "machine-readable medium" shall also be taken to
include any medium that is capable of storing instructions (e.g.,
instructions 1324) for execution by the machine and that cause the
machine to perform any one or more of the methodologies disclosed
herein. The term "machine-readable medium" includes, but may not be
limited to, data repositories in the form of solid-state memories,
optical media, and magnetic media.
Additional Configuration Considerations
[0159] Throughout this specification, plural instances may
implement components, operations, or structures described as a
single instance. Although individual operations of one or more
methods are illustrated and described as separate operations, one
or more of the individual operations may be performed concurrently,
and nothing requires that the operations be performed in the order
illustrated. Structures and functionality presented as separate
components in example configurations may be implemented as a
combined structure or component. Similarly, structures and
functionality presented as a single component may be implemented as
separate components. These and other variations, modifications,
additions, and improvements fall within the scope of the subject
matter herein.
[0160] Various implementations of the systems and methods described
here can be realized in digital electronic and/or optical
circuitry, integrated circuitry, specially designed ASICs
(application specific integrated circuits), computer hardware,
firmware, software, and/or combinations thereof. These various
implementations can include implementation in one or more computer
programs that are executable and/or interpretable on a programmable
system including at least one programmable processor, which may be
special or general purpose, coupled to receive data and
instructions from, and to transmit data and instructions to, a
storage system, at least one input device, and at least one output
device.
[0161] These computer programs (also known as programs, software,
software applications, scripts, or program code) include machine
instructions, e.g., 1324, for a programmable processor, e.g., 1302,
and can be implemented in a high-level procedural and/or
object-oriented programming language, and/or in assembly/machine
language. The computer programs can be structured functionality in
units referenced as "modules," for example, as illustrated in FIG.
2. As used herein, the terms "machine-readable medium" and
"computer-readable medium" refer to any computer program product,
non-transitory computer readable medium, apparatus and/or device
(e.g., magnetic discs, optical disks, memory, Programmable Logic
Devices (PLDs)) used to provide machine instructions and/or data to
a programmable processor, including a machine-readable medium that
receives machine instructions as a machine-readable signal. The
term "machine-readable signal" refers to any signal used to provide
machine instructions and/or data to a programmable processor.
[0162] Implementations of the subject matter and the functional
operations described in this specification can be implemented in
digital electronic circuitry, or in computer software, firmware, or
hardware, including the structures disclosed in this specification
and their structural equivalents, or in combinations of one or more
of them. Moreover, subject matter described in this specification
can be implemented as one or more computer program products, i.e.,
one or more modules of computer program instructions encoded on a
computer readable medium for execution by, or to control the
operation of, data processing apparatus. The computer readable
medium can be a machine-readable storage device, a machine-readable
storage substrate, a memory device, a composition of matter
effecting a machine-readable propagated signal, or a combination of
one or more of them. The terms "data processing apparatus",
"computing device" and "computing processor" encompass all
apparatus, devices, and machines for processing data, including by
way of example a programmable processor, a computer, or multiple
processors or computers. The apparatus can include, in addition to
hardware, code that creates an execution environment for the
computer program in question, e.g., code that constitutes processor
firmware, a protocol stack, a database management system, an
operating system, or a combination of one or more of them. A
propagated signal is an artificially generated signal, e.g., a
machine-generated electrical, optical, or electromagnetic signal
that is generated to encode information for transmission to
suitable receiver apparatus.
[0163] A computer program can be written in any form of programming
language, including compiled or interpreted languages, and it can
be deployed in any form, including as a stand-alone program or as a
module, component, subroutine, or other unit suitable for use in a
computing environment. A computer program does not necessarily
correspond to a file in a file system. A program can be stored in a
portion of a file that holds other programs or data (e.g., one or
more scripts stored in a markup language document), in a single
file dedicated to the program in question, or in multiple
coordinated files (e.g., files that store one or more modules, sub
programs, or portions of code). A computer program can be deployed
to be executed on one computer or on multiple computers that are
located at one site or distributed across multiple sites and
interconnected by a communication network.
[0164] The processes and logic flows described in this
specification can be performed by one or more programmable
processors executing one or more computer programs to perform
functions by operating on input data and generating output. The
processes and logic flows can also be performed by, and apparatus
can also be implemented as, special purpose logic circuitry, e.g.,
an FPGA (field programmable gate array) or an ASIC (application
specific integrated circuit).
[0165] Processors suitable for the execution of a computer program
include, by way of example, both general and special purpose
microprocessors, and any one or more processors of any kind of
digital computer. Generally, a processor will receive instructions
and data from a read only memory or a random access memory or both.
The essential elements of a computer are a processor for performing
instructions and one or more memory devices for storing
instructions and data. Generally, a computer will also include, or
be operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g.,
magnetic, magneto optical disks, or optical disks. However, a
computer need not have such devices. Moreover, a computer can be
embedded in another device, e.g., a mobile telephone, a personal
digital assistant (PDA), a mobile audio player, a Global
Positioning System (GPS) receiver, to name just a few. Computer
readable media suitable for storing computer program instructions
and data include all forms of non-volatile memory, media and memory
devices, including by way of example semiconductor memory devices,
e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,
e.g., internal hard disks or removable disks; magneto optical
disks; and CD ROM and DVD-ROM disks. The processor and the memory
can be supplemented by, or incorporated in, special purpose logic
circuitry.
[0166] To provide for interaction with a user, one or more aspects
of the disclosure can be implemented on a computer having a display
device, e.g., a CRT (cathode ray tube), LCD (liquid crystal
display) monitor, or touch screen for displaying information to the
user and optionally a keyboard and a pointing device, e.g., a mouse
or a trackball, by which the user can provide input to the
computer. Other kinds of devices can be used to provide interaction
with a user as well; for example, feedback provided to the user can
be any form of sensory feedback, e.g., visual feedback, auditory
feedback, or tactile feedback; and input from the user can be
received in any form, including acoustic, speech, or tactile input.
In addition, a computer can interact with a user by sending
documents to and receiving documents from a device that is used by
the user; for example, by sending web pages to a web browser on a
user's client device in response to requests received from the web
browser.
[0167] One or more aspects of the disclosure can be implemented in
a computing system that includes a backend component, e.g., as a
data server, or that includes a middleware component, e.g., an
application server, or that includes a frontend component, e.g., a
client computer having a graphical user interface or a Web browser
through which a user can interact with an implementation of the
subject matter described in this specification, or any combination
of one or more such backend, middleware, or frontend components.
The components of the system can be interconnected by any form or
medium of digital data communication, e.g., a communication
network. Examples of communication networks include a local area
network ("LAN") and a wide area network ("WAN"), an inter-network
(e.g., the Internet), and peer-to-peer networks (e.g., ad hoc
peer-to-peer networks).
[0168] The computing system can include clients and servers. A
client and server are generally remote from each other and
typically interact through a communication network. The
relationship of client and server arises by virtue of computer
programs running on the respective computers and having a
client-server relationship to each other. In some implementations,
a server transmits data (e.g., an HTML page) to a client device
(e.g., for purposes of displaying data to and receiving user input
from a user interacting with the client device). Data generated at
the client device (e.g., a result of the user interaction) can be
received from the client device at the server.
[0169] While this specification contains many specifics, these
should not be construed as limitations on the scope of the
disclosure or of what may be claimed, but rather as descriptions of
features specific to particular implementations of the disclosure.
Certain features that are described in this specification in the
context of separate implementations can also be implemented in
combination in a single implementation. Conversely, various
features that are described in the context of a single
implementation can also be implemented in multiple implementations
separately or in any suitable sub-combination. Moreover, although
features may be described above as acting in certain combinations
and even initially claimed as such, one or more features from a
claimed combination can in some cases be excised from the
combination, and the claimed combination may be directed to a
sub-combination or variation of a sub-combination.
[0170] Similarly, while operations are depicted in the drawings in
a particular order, this should not be understood as requiring that
such operations be performed in the particular order shown or in
sequential order, or that all illustrated operations be performed,
to achieve desirable results. In certain circumstances,
multi-tasking and parallel processing may be advantageous.
Moreover, the separation of various system components in the
embodiments described above should not be understood as requiring
such separation in all embodiments, and it should be understood
that the described program components and systems can generally be
integrated together in a single software product or packaged into
multiple software products.
[0171] A number of implementations have been described.
Nevertheless, it will be understood that various modifications may
be made without departing from the spirit and scope of the
disclosure. Accordingly, other implementations are within the scope
of the following claims. For example, the actions recited in the
claims can be performed in a different order and still achieve
desirable results.
[0172] Upon reading this disclosure, those of skill in the art will
appreciate still additional alternative structural and functional
designs for a system and a process for deep search in computing
environments through the disclosed principles herein. Thus, while
particular embodiments and applications have been illustrated and
described, it is to be understood that the disclosed embodiments
are not limited to the precise construction and components
disclosed herein. Various modifications, changes and variations,
which will be apparent to those skilled in the art, may be made in
the arrangement, operation and details of the method and apparatus
disclosed herein without departing from the spirit and scope
defined in the appended claims.
* * * * *
References