U.S. patent application number 15/595939 was filed with the patent office on 2017-08-31 for framework for suggesting search terms.
This patent application is currently assigned to GOOGLE INC.. The applicant listed for this patent is GOOGLE INC.. Invention is credited to Uri Bernstein, Scott Huffman, Rehan Khan, Natalia Marmasse.
Application Number | 20170249391 15/595939 |
Document ID | / |
Family ID | 51627068 |
Filed Date | 2017-08-31 |
United States Patent
Application |
20170249391 |
Kind Code |
A1 |
Huffman; Scott ; et
al. |
August 31, 2017 |
FRAMEWORK FOR SUGGESTING SEARCH TERMS
Abstract
A query stem is received via a search engine query input field
of a user interface presented on a client device. Before receiving
an input submitting the query stem as a query to the search engine,
list of general queries based on the query stem and a list of local
queries based the query stem and related to a location of the
client device are obtained. At least one general query is selected
from the list of general queries and at least one local query is
selected from the list of local queries for inclusion in a blended
list of queries. A presentation order of the blended list of
queries is determined, so that a local query that is a more
specific version of a general query is placed immediately next to
the general query. The selected queries are presented via the user
interface, in accordance with the determined order.
Inventors: |
Huffman; Scott; (Redwood
City, CA) ; Khan; Rehan; (Lafayette, CA) ;
Bernstein; Uri; (Tel Aviv-Yafo, IL) ; Marmasse;
Natalia; (Ichud, IL) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
GOOGLE INC. |
Mountain View |
CA |
US |
|
|
Assignee: |
GOOGLE INC.
Mountain View
CA
|
Family ID: |
51627068 |
Appl. No.: |
15/595939 |
Filed: |
May 15, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14486038 |
Sep 15, 2014 |
9652547 |
|
|
15595939 |
|
|
|
|
12960976 |
Dec 6, 2010 |
8856115 |
|
|
14486038 |
|
|
|
|
61267412 |
Dec 7, 2009 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/9537 20190101;
G06F 16/9038 20190101; G06F 16/9535 20190101; G06F 16/3322
20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. A computer-implemented method comprising: receiving, via a
search engine query input field of a user interface presented on a
client device, a query stem; before receiving an input submitting
the query stem as a query to the search engine: obtaining, by one
or more processors, a list of general queries based on the query
stem; obtaining, by one or more processors, a list of local queries
based the query stem and related to a location of the client
device; selecting at least one general query from the list of
general queries and at least one local query from the list of local
queries for inclusion in a blended list of queries; determining a
presentation order of the blended list of queries, including
placing a local query that is a more specific version of a general
query immediately next to the general query; and presenting the
selected queries via the user interface, in accordance with the
determined presentation order.
2. The computer-implemented method of claim 1, wherein placing the
local query that is the more specific version of the general query
immediately next to the general query includes placing the local
query directly below the general query.
3. The computer-implemented method of claim 1, wherein placing the
local query that is the more specific version of the general query
immediately next to the general query includes placing the local
query directly above the general query.
4. The computer-implemented method of claim 1, further comprising
selecting a fixed number of queries from the list of local queries
prior to selecting any number of queries from the list of general
queries.
5. The computer-implemented method of claim 1, further comprising:
selecting, from the list of local queries, a query that is highly
specific to a local area corresponding to the location of the
client device; wherein determining the presentation order of the
blended list of queries includes placing the selected query at the
top of the blended list of queries.
6. The computer-implemented method of claim 1, further comprising:
determining popularity metrics for queries on the list of general
queries and on the list of local queries; wherein selecting the at
least one general query from the list of general queries and at
least one local query from the list of local queries includes is
based at least in part on the popularity metrics.
7. The computer-implemented method of claim 6, wherein determining
a presentation order of the blended list of queries includes
promoting a local query included in the blended list of queries in
response to determining that a ratio of a popularity metric of the
local query to a popularity metric of the corresponding general
query exceeds a certain threshold.
8. The method of claim 6, wherein determining the popularity
metrics includes, for a given query, determining a ratio between a
number of previously submitted queries which match the given query
and the number of previously submitted queries which contain the
query stem.
9. The computer-implemented method of claim 1, further comprising:
determining a general location of the client device; and
determining a specific location of the client device; wherein
obtaining the list of general queries is based on the general
location of the client device, and obtaining the list of local
queries is based on specific general location of the client
device.
10. The computer-implemented method of claim 1, wherein:
determining the general location of the client device includes
determining a country in which the client device is located, and
determining the specific location of the client device includes
determining a city in which the client device is located.
11. A system comprising: one or more computer programmed to perform
operations comprising: receiving, via a search engine query input
field of a user interface presented on client device, a query stem;
before receiving an input submitting the query stem as a query to
the search engine: obtaining, by one or more processors, a list of
general queries based on the query stem; obtaining, by one or more
processors, a list of local queries based the query stem and
related to a location of the client device; selecting at least one
general query from the list of general queries and at least one
local query from the list of local queries for inclusion in a
blended list of queries; determining a presentation order of the
blended list of queries, including placing a local query that is a
more specific version of a general query immediately next to the
general query; and presenting the selected queries via the user
interface, in accordance with the determined presentation
order.
12. The system of claim 11, wherein placing the local query that is
the more specific version of the general query immediately next to
the general query includes placing the local query directly below
the general query.
13. The system of claim 11, wherein placing the local query that is
the more specific version of the general query immediately next to
the general query includes placing the local query directly above
the general query.
14. The system of claim 11, the operations further comprising
selecting a fixed number of queries from the list of local queries
prior to selecting any number of queries from the list of general
queries.
15. The system of claim 11, the operations further comprising:
selecting, from the list of local queries, a query that is highly
specific to a local area corresponding to the location of the
client device; wherein determining the presentation order of the
blended list of queries includes placing the selected query at the
top of the blended list of queries.
16. The system of claim 11, the operations further comprising:
determining popularity metrics for queries on the list of general
queries and on the list of local queries; wherein selecting the at
least one general query from the list of general queries and at
least one local query from the list of local queries includes is
based at least in part on the popularity metrics.
17. The system of claim 16, wherein determining a presentation
order of the blended list of queries includes promoting a local
query included in the blended list of queries in response to
determining that a ratio of a popularity metric of the local query
to a popularity metric of the corresponding general query exceeds a
certain threshold.
18. The system of claim 16, wherein determining the popularity
metrics includes, for a given query, determining a ratio between a
number of previously submitted queries which match the given query
and the number of previously submitted queries which contain the
query stem.
19. The system of claim 11, the operations further comprising:
determining a general location of the client device; and
determining a specific location of the client device; wherein
obtaining the list of general queries is based on the general
location of the client device, and obtaining the list of local
queries is based on specific general location of the client
device.
20. The system of claim 11, wherein: determining the general
location of the client device includes determining a country in
which the client device is located, and determining the specific
location of the client device includes determining a city in which
the client device is located.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 14/486,038, filed Sep. 15, 2014, entitled
"Framework for Suggesting Search Terms," which is a continuation of
U.S. Provisional Applications No. 61/267,412, filed Dec. 7, 2009,
entitled "Framework for Suggesting Search Terms," the entire
contents which are hereby incorporated by reference for all
purposes.
BACKGROUND
[0002] This specification relates to providing information relevant
to user search queries.
[0003] Internet search engines identify resources, e.g., Web pages,
images, text documents, and multimedia content, in response to
queries submitted by users and present information about the
resources in a manner that is useful to the users.
[0004] Users of search engines are often interested in information
specific to their location. For example, users may want to know the
local weather, may be interested in local politics or sports. Some
topics which are interesting to users of one location are less
interesting to users in a different location.
[0005] A search engine allows a user to provide an input for which
search results are returned in response. Some search engines can
provide suggestions to the user based upon the search query the
user entered. For example, some search engines provide search query
suggestions based upon the current search query.
SUMMARY
[0006] The specification describes technologies relating to
presenting local query suggestions.
[0007] In general, one aspect of the subject matter described in
this specification can be embodied in methods that include the
actions of determining a general location and a specific location
for a client device interacting with a search engine. Methods also
includes the actions of while receiving a query stem in a search
engine query input field of the search engine user interface
presented on the client device, and before receiving an input
submitting the query stem as a query to the search engine,
obtaining, in a data processing system, a plurality of general
queries containing the query stem, each general query having a
first quality measure in reference to the general location;
obtaining, in a data processing system, a plurality of local
queries containing the query stem, each local query having a second
quality measure in reference to the specific location; and
combining at least one of the plurality of general queries and at
least one of the plurality of local queries into a plurality of
combined queries, the combined queries having a presentation order
based on the respective quality measures of the queries. Methods
also include the actions of presenting the queries. Other
embodiments of this aspect include corresponding systems,
apparatus, and computer programs recorded on computer storage
devices, each configured to perform the operations of the
methods.
[0008] These and other embodiments can each optionally include one
or more of the following features. The first quality measure may
include, for each query, a measure of popularity of the query in
the general locations, and the second quality measure may include,
for each query, a measure of popularity of the query in the
specific location. The measure of popularity for the given query
may be a ratio between a number of previously submitted queries
which match the given query and the number of previously submitted
queries which contain the query stem.
[0009] Obtaining a plurality of local queries containing the query
stem may include identifying an area of high quality for a local
query, determining the specific location is within the area, and
associating the local query in the plurality of local queries. The
area of popularity may be represented by a spatial distribution of
query occurrence. The spatial distribution is represented by a
bivariate Gaussian distribution. The specific location may be
determined using at least one of Internet Protocol address, Global
Positioning System coordinates, or proximity to a cellular tower.
The specific location may be determined using at least one of prior
queries from the client device and user profile information.
[0010] Blending may include identifying a query present in the
plurality of general queries and present in the plurality of local
queries, determining the difference between first quality measure
of the query and the second quality measure of the query exceeds a
threshold, and promoting the query in the plurality of combined
queries.
[0011] Combining may include determining a local query present in
the plurality of local queries represents is a refinement of a
general query present in the plurality of general queries, and
promoting the local query in the plurality of combined queries. The
specific location may be defined by population.
[0012] Particular embodiments of the subject matter described in
this specification can be implemented so as to realize one or more
of the following advantages. Relevant query suggestions may be
obtained before the user completes his or her search query. Query
suggestions may reflect local interests, while maintaining the
reliability inherent in query suggestions determined from a larger
population base. Query suggestions may reflect the interests of
searchers in geographic areas of varying sizes, from less than a
few square miles to cities to metro areas to states. Query
suggestions may reflect interests independent of arbitrary
geopolitical boundaries.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] FIG. 1 illustrates an example query suggestion system.
[0014] FIG. 2 illustrates an example query suggestion engine.
[0015] FIG. 3A-C illustrates an example of determining a
geographical area for a query.
[0016] FIG. 4A-C illustrates examples of obtaining and presenting
local query suggestions to a user.
[0017] FIG. 5 shows a flowchart that represents operations of a
query suggestion engine.
[0018] Like reference numbers and designations in the various
drawings indicate like elements.
DETAILED DESCRIPTION
[0019] FIG. 1 illustrates an example query suggestion system. In
this example, a user interface 102 is displayed on a client device
for use by a user. The user interface contains a text input field
104 for entering search queries. The user interface contains a
graphical button 110 which is used to submit a completed search
request to a search engine system 114. Through conventional client
scripting the user interface also sends a query stem 106 entered in
the text input field to the search engine system before the query
is submitted. An input engine 116 of the search engine system
receives the query stem through network request 112. The user
interface may be, for example, a web page running in a web browser,
a toolbar running in a web browser, or an independent search client
running on the client device. Certain data may be anonymized in one
or more ways before it is stored or used.
[0020] The network request 112 may contain other information, in
addition to the query stem. For example, the network request may
contain the Internet Protocol Address (IP Device) of the client
device. In the scenario where the client device is a mobile device,
the user may also permit the network request to include the GPS
coordinates of the client device and information relating to
cellular or network request of the device, for example, the
cellular towers with which the device is communicating.
[0021] The search engine system includes an input engine 116 which
processes the network request. The input engine determines that the
network request contains a query stem and not a completed query
request. That is, that the client device has not sent a network
request indicating that the user has finished entering input and
that the search engine should identify search results responsive to
the input in the query input field. The input engine can also
consider other factors, for example, whether the query stem has a
minimum number of characters and whether a predetermined amount of
time has passed since the user entered the last character of the
query stem. The input engine may also identify information in the
network request which may be used to determine the location of the
client device.
[0022] The location identification engine 122 receives location
information from the input engine. The location identification
engine determines a general location and a specific location for
the client device. The location identification engine may do so
using information in the network request. For example, the location
identification engine may use conventional techniques to determine
a location from the IP address or GPS coordinates.
[0023] When information in the network request is insufficient, or
in implementations where the location identification engine does
not use information in the network request, the location
identification engine may determine a location of the client device
based on information in a query log 120 concerning interactions
between the user of the client device and the search engine system.
In some implementations for Web clients, the user may be identified
by use of cookies or other state-preserving techniques, over a
short session or over longer periods of time. For example, the
location identification engine may receive data indicating the user
had previously searched for "Palo Alto High School" and, since
users in other locations are unlikely to search for "Palo Alto High
School," determine that the user is most likely in or near Palo
Alto. In some scenarios, a single query may not be sufficient to
unambiguously determine a location, for example, a user searching
for "Fremont High School" may be either from Sunnyvale, Calif. or
Los Angeles, Calif. The location identification engine may rely on
multiple recent queries, for example to determine a location. Once
a location is identified, the location identification engine may
send the input data and the location to a query suggestion engine
128.
[0024] The location identification engine determines a general
location of the client device, for example, the country where the
device is located, and a specific location of the client device,
for example, the city, county, population center, block, street, or
addresses where the client device is located. Both the general
location and the specific location are communicated to a query
suggestion engine 128.
[0025] The query suggestion engine, describe in more detail below,
receives the query stem, the general location, and the specific
location, FIG. 2 illustrates an example query suggestion engine
202. The example query suggestion engine 202 is an example of the
query suggestion engine 128 described above (FIG. 1).
[0026] The query suggestion engine 202 includes a blending engine
206, a local query suggestion engine 208, and a general query
suggestion engine 210. The local query suggestion engine obtains a
list of local query suggestions based on the query stem 124, the
specific location of the user 126, and query log data including
information about previously submitted queries that were submitted
from a location which is close to the user's specific location. As
discussed above, the location of each submitted query can be
identified. The previously submitted queries, as discussed below,
are associated with a geographic area in which the query is likely
to be a high quality query. In some implementations, the geographic
area may be defined by geopolitical boundaries, for example, Santa
Clara County or Palo Alto city. In other implementations, the
geographic area may be defined by population centers, for example
the San Francisco Bay Area. In other implementations, each query
may be associated with a separate geographic area which defines a
region for which the query has a high quality metric. For example,
the query "Palo Alto High School" may be a high quality query
within the Palo Alto Unified School District, but may rapidly fade
in quality outside the district. In this case, the query may be
associated with a geographic area which mirrors school district. In
some implementations, as described below, the geographic area may
be represented by a spatial distribution of query occurrence.
[0027] The local query suggestion engine looks at query data stored
over a period of time to determine previous queries which contain
the query stem. The query data includes how frequently the queries
were submitted in the past, the locations from which the queries
were submitted and other information about the queries' quality.
The previous queries are then ranked based on a combination of
their frequency, quality, and location relative to the user.
[0028] The local query suggestion engine looks at query data stored
over a period of time, for example, one week, one month, three
months, six months, or one year The query stem may occur anywhere
in the previously received queries, for example, a query stem of
"dmv" would match both "California dmv" and "DMV Oregon." As new
queries are submitted the query data is updated to reflect the
submissions.
[0029] Information about the queries' quality could include
information reflecting how the search result is accessed, e.g., the
resources the user selects, the positions of the selected resource
in the resource list (for example, the first resource, the second
resource . . . ), and the resources which are ignored.
[0030] Generally, the quality of a query includes a measure of the
popularity of the query and the quality of the results the query
produces. For example, a query for which the top results are
frequently selected may be determined to have high quality;
similarly, a query for which no results are typically selected
would have low quality.
[0031] The local query suggestions may be filtered to remove
inappropriate queries or queries known to produce inaccurate
results. All or a subset of the list of local queries is returned
to the blending engine. In some implementations, all the local
queries are delivered to the blending engine. In other
implementations only a specific number of local queries are
delivered.
[0032] The general query suggestion engine 210 obtains a list of
general query suggestions based on the query stem 124 using
conventional means. For example, general query suggestions may be
obtained by the methods described in U.S. Pat. No. 7,487,145,
"Method and System for Autocompletion Using Ranked Results" filed
Nov. 11, 2004.
[0033] The popularity of a given query is determined from the
number of times one or more users has submitted a search for the
query. For example, the popularity can be the ratio of the number
of times one or more users have submitted a search for the query
and the total number of times the one or more users have submitted
queries containing the query stem. For example,
popularity ( query x ) = number of times users submit query x i
number of times users submit query i ##EQU00001##
[0034] where query x is the query for which the popularity is being
calculated, and each query i is a query in the group of query
suggestions containing the query stem.
[0035] Other formulas for determining the popularity value may also
be used. For example, the local query suggestion engine may
optionally weight the number of times users submit each query by a
measure of the quality of each query. The measure of quality can be
determined, for example, from the number of times users select
search results after issuing their queries, how long users view
search results responsive to their queries, how often users refine
their queries, and whether users interacted with other features of
search result pages presented in response to their queries. In some
implementations, the denominator may be the sum of all queries
submitted within the local area. In other implementations, the
denominator may be the population of the local area. The same query
submitted one hundred times per day in a sparsely populated area is
a higher quality query than one submitted one hundred times per day
in a densely populated area.
[0036] In some implementations, the geographical area for an
individual query may be determined from an analysis of historical
query submissions. FIGS. 3A-C illustrate an example of determining
a geographical area for a query. A geographic area 302 is shown,
here, the state of California. The state of California is used for
exemplary purposes only. The following area analysis is not limited
to states, countries, or any particular geopolitical boundary.
Within this area are tracked a number query submissions 304. For
example, in some implementations user's may opt-in and permit their
search activity to be monitored, in other implementations users may
be provided the opportunity to opt-out from monitoring. For some
query submission, using conventional methods of statistical cluster
analysis, areas where a particular query is popular may be
identified. FIG. 3B shows a close up of the geographic area in FIG.
3A. For each identified cluster, a center 306 may be determined.
And from the center, a circle 308 may be determined such that
sixty-eight percent of the queries in the cluster fall within the
area, or a single standard deviation away from the center. In FIG.
3C, the popularity of the query at a given location 310 may be
defined by the overall popularity of the query and the distance
between the location 310 and the center 306 of the circle 308. In
general, how popular the query is determined to be depends on the
distance between the location of the client device and the central
location as well as how quickly the query loses quality. The effect
of distance on the quality of the query at the location of the
client device may be a function of a normalized standard
distribution of the quality of the query as the distance moves away
from the center.
[0037] For example, the popularity of a query x at location y may
be defined as:
popularity ( query x at y ) = ( popularity of query x ) 1 2
.pi..sigma. 2 e - d 2 / 2 .alpha. 2 ##EQU00002##
[0038] Where .sigma. is the standard deviation of the distribution,
and d is the distance between point y and the center of the
circle.
[0039] Other distribution functions may be used to determine the
quality of the query at a given point based on spatial probability
distributions. For example, an isotropic Gaussian distribution, a
bivariate Gaussian distribution, or other conventional cumulative
distribution functions may be used. In other implementations,
mixtures of Gaussians or other distribution functions, wavelets, or
polygons, or any other method of representing a spatial
distribution may be used.
[0040] In another implementation, queries may be associated with a
particular zip code. The quality of the query in a neighboring zip
code is determined through use of a blurring function.
[0041] The blending engine 206 accepts a list of local query
suggestions accompanied by quality metrics from the local query
suggestion engine 208 and a list of general query suggestions
accompanied with quality metrics from the general query suggestion
engine 210. The blending engine combines the list of local query
suggestions and the general query suggestion engine using the
quality metrics. In some implementations, the local query
suggestions and the list of general query suggestions may be
combined based on popularity. FIGS. 4A-C illustrate examples of
obtaining and presenting local query suggestions to a user. FIG. 4A
shows that a query stem 402 of "DMV" may produce a list of local
query suggestions 404 which include "DMV California" "DMV Nevada"
and "Oregon DMV." The same query stem produces a list of general
query suggestions 406 including "DMV New York", "DMV Pennsylvania"
"DMV California", and "DMV New Jersey." In this example, the
blended list of query suggestions 408 includes the suggestions from
both lists in an order based on the quality scores of the
individual query suggestions. In some implementations, local query
suggestions may be favored over general query suggestions.
[0042] In other implementations, a number of local queries, for
example three, may be added to the blended list before any general
query suggestions are added. In other implementations, the blending
engine recognizes local query suggestions which are more specific
versions of general query suggestions and promotes the more
specific local query above or directly below the general query. In
FIG. 4B, the query stem 420 "Hom" produces a list of local query
suggestions 422 including "Home Depot Sunnyvale" and "Homestead
High School." The query stem produces a list of general query
suggestions 424"Home Depot", "Home Depot Center", and "Home Good".
The blending engine recognizes that "Home Depot Palo Alto" is a
more specific version of the "Home Depot" query from the list of
general query suggestions. In this example, the blending engine
creates the blended list of query suggestions 426 and places the
more specific query suggestion "Home Depot Sunnyvale" right below
the query suggestion "Home Depot." Also in this example, the
blending engine may also recognize "Homestead High School" as being
a query very specific to the local area and, in this example,
promotes "Homestead High School" above "Home Depot Center" for that
reason.
[0043] In other implementations, the quality scores of local query
suggestions are compared to the quality scores of corresponding
general query suggestion in the list of general query suggestions.
The local query suggestion is promoted (given a higher place) if
the ratio between the general query quality metric and the local
query quality metric exceeds a given threshold. For example, in
FIG. 4C, a query stem 440 "Gar" produces a list of local query
suggestions 442 including "Garmin", "Gary Danko"446, and "Garage
band" 450, while the query stem produces a list of general query
suggestions 444 including "Garmin", "Garage Band" 452, "Garden
Ridge", "Garnet Hill", and "Gary Danko" 448 among others. In this
example, the local suggestion for "Gary Danko" 446 has a quality
score of .12 while the general suggestion for "Gary Danko" 448 has
a quality score of .002. Assuming the threshold to promote a local
query is .08, the difference between the local suggestion and the
general suggestion is sufficiently large to cause the position of
the query to be promoted in the blended suggestions 426. In
contrast, the local query suggestion for "Garage Band` 446 has a
quality score of .11 and the general query suggestion for "Garage
Band" 452 has a quality score of .10. While the quality score for
the local query suggestion exceeds the quality score for the
general query suggestion the difference does not exceed the
required threshold of .08 and the result is not promoted.
[0044] Promoting a local query suggestion in the list of blended
query suggestions does not require promoting the local query
suggestion to the same position in the blended query suggestion as
it held in the local query suggestions. In some implementations,
the comparison of the quality scores may be a percentage
comparison, for example the local query quality metric divided by
the general query quality metric. In other implementations, the
comparison of the quality scores may be a difference, for example
subtracting the general query quality metric from the local query
quality metric. In some implementations, if the general query
quality metric exceeds the local query quality metric by a
threshold, the general query suggestion may be demoted.
[0045] There may be substantial overlap between the local query
suggestions and the general query suggestions. For example, "Disney
Land" is likely to be an equally good query suggestion among the
local query suggestions and among the general query suggestions. At
the same time, the local query results reflect query activity by a
relatively small population of users, and may, therefore, be skewed
by the idiosyncratic search habits of a relatively small number of
individuals. Therefore, once the popularity of the local query
suggestions falls below a threshold level, the blending engine may
elect to prefer general query suggestions over local ones.
[0046] FIG. 5 shows a flowchart that represents operations of a
query suggestion engine. For convenience, the operations will be
described with reference to a system that performs the operations.
The system can be, for example, the search engine system 102
described in reference to FIG. 1, including the query suggestion
engine 202 described with reference to FIG. 2.
[0047] The operations are performed while the system receives text
input entered in a search engine query input field, and before the
user submits a search request for the text input. The input can be
received, for example, as described above with reference to FIG. 1.
The system determines the location of a client device 502, as
described above with reference to FIG. 2. The system obtains a list
of general query suggestions containing the input text 502, for
example, as described above with reference to FIG. 2. The system
obtains a list of local query suggestions containing the input text
504, for example, as described above with reference to FIG. 2. The
system combines the general and local query suggestions using
quality metrics, 506, for example, as described above with
reference to FIG. 2. The system presents the combined list of
suggestions to the user 508, for example, as described above with
reference to FIG. 1.
[0048] Embodiments 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. Embodiments of the subject matter described in this
specification can be implemented as one or more computer programs,
i.e., one or more modules of computer program instructions encoded
on a computer storage medium for execution by, or to control the
operation of, data processing apparatus. Alternatively or in
addition, the program instructions can be encoded on a propagated
signal that 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 for execution by a data processing
apparatus. The computer storage medium can be a machine-readable
storage device, a machine-readable storage substrate, a random or
serial access memory device, or a combination of one or more of
them.
[0049] The term "data processing apparatus" encompasses all kinds
of apparatus, devices, and machines for processing data, including
by way of example a programmable processor, a mobile device, a
computer, or multiple processors or computers. The apparatus can
include special purpose logic circuitry, e.g., an FPGA (field
programmable gate array) or an ASIC application-specific integrated
circuit). The apparatus can also 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.
[0050] A computer program (also known as a program, software,
software application, script, or code) can be written in any form
of programming language, including compiled or interpreted
languages, or declarative or procedural 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 may, but need not,
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.
[0051] 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).
[0052] 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
or executing 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 or
video player, a game console, a Global Positioning System (GPS)
receiver, or a portable storage device (e.g., a universal serial
bus (USB) flash drive), to name just a few.
[0053] 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.
[0054] To provide for interaction with a user, embodiments of the
subject matter described in this specification can be implemented
on a computer having a display device, e.g., a CRT (cathode ray
tube) or LCD (liquid crystal display) monitor, for displaying
information to the user and 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 for
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.
[0055] Embodiments of the subject matter described in this
specification can be implemented in a computing system that
includes a back-end component, e.g., as a data server, or that
includes a middleware component, e.g., an application server, or
that includes a front-end 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
back-end, middleware, or front-end 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"), e.g., the Internet.
[0056] 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.
[0057] While this specification contains many specific
implementation details, these should not be construed as
limitations on the scope of any invention or of what may be
claimed, but rather as descriptions of features that may be
specific to particular embodiments of particular inventions.
Certain features that are described in this specification in the
context of separate embodiments can also be implemented in
combination in a single embodiment. Conversely, various features
that are described in the context of a single embodiment can also
be implemented in multiple embodiments separately or in any
suitable subcombination. 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 subcombination or
variation of a subcombination.
[0058] 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,
multitasking 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.
[0059] Particular embodiments of the subject matter have been
described. Other embodiments are within the scope of the following
claims. The actions recited in the claims can be performed in a
different order and still achieve desirable results. As one
example, the processes depicted in the accompanying figures do not
necessarily require the particular order shown, or sequential
order, to achieve desirable results. In certain implementations,
multitasking and parallel processing may be advantageous.
* * * * *