U.S. patent application number 15/413333 was filed with the patent office on 2017-08-10 for systems and methods for filtering application search results.
The applicant listed for this patent is Quixey, Inc.. Invention is credited to Eric GLOVER, Tomer KAGAN, Jason PROSNITZ.
Application Number | 20170228428 15/413333 |
Document ID | / |
Family ID | 49779264 |
Filed Date | 2017-08-10 |
United States Patent
Application |
20170228428 |
Kind Code |
A1 |
PROSNITZ; Jason ; et
al. |
August 10, 2017 |
Systems and Methods for Filtering Application Search Results
Abstract
An application search system for providing search results to a
plurality of partner devices includes a data processing module that
receives data identifying a plurality of applications associated
with one or more of a plurality of application categories and
generates, based on the received data, a plurality of search
indexes. Each of the search indexes corresponds to a respective one
of the application categories. An application search module
receives a search query from a first partner device of the
plurality of partner devices, identifies a first application
category of the plurality of application categories based on the
search query, selects, from the plurality of search indexes, a
first search index corresponding to the identified first
application category, queries the selected first search index to
identify a first plurality of application representations
associated with the identified first application category, and
generates search results based on the first plurality of
application representations.
Inventors: |
PROSNITZ; Jason; (San Jose,
CA) ; KAGAN; Tomer; (Sunnyvale, CA) ; GLOVER;
Eric; (Palo Alto, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Quixey, Inc. |
Mountain View |
CA |
US |
|
|
Family ID: |
49779264 |
Appl. No.: |
15/413333 |
Filed: |
January 23, 2017 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13900470 |
May 22, 2013 |
9552414 |
|
|
15413333 |
|
|
|
|
61650460 |
May 22, 2012 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 16/335 20190101;
G06F 16/252 20190101; G06F 16/24544 20190101; G06F 16/9535
20190101; G06F 16/285 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1. An application search system for providing search results to a
plurality of partner devices, the application search system
comprising: a data processing module that receives data identifying
a plurality of applications, wherein each of the plurality of
applications is associated with one or more of a plurality of
application categories, and generates, based on the received data,
a plurality of search indexes, wherein each of the plurality of
search indexes corresponds to a respective one of the plurality of
application categories; and an application search module that
receives, via a network, a search query from a first partner device
of the plurality of partner devices, identifies a first application
category of the plurality of application categories based on the
search query, selects, from the plurality of search indexes, a
first search index corresponding to the identified first
application category, queries the selected first search index to
identify a first plurality of application representations
associated with the identified first application category,
generates search results based on the first plurality of
application representations, and provides the generated search
results to be transmitted to the first partner device.
2. The application search system of claim 1, wherein the
application search module: identifies a second application category
of the plurality of application categories based on the search
query; selects, from the plurality of search indexes, a second
search index based on the second identified application category;
queries the selected second search index to identify a second
plurality of application representations associated with the
identified second application category; and generates the search
results based on a union of the first plurality of application
representations and the second plurality of application
representations.
3. The application search system of claim 1, wherein, to select the
first search index, the application search module selects the first
index further based on an identifier of the first partner
device.
4. The application search system of claim 3, wherein two or more of
the plurality of search indexes correspond to the respective one of
the application categories, and wherein, to select the first index,
the application search module selects the first index from among
the two or more of the plurality of search indexes based on the
identifier of the first partner device.
5. The application search system of claim 1, wherein, to identify
the first application category, the application search module
identifies the first application category further based on a
platform executing on the first partner device.
6. The application search system of claim 5, wherein context
information received from the first partner device includes an
indication of the platform executing on the first partner
device.
7. The application search system of claim 1, wherein a subset of
the plurality of application categories is associated with the
partner device.
8. The application search system of claim 1, wherein, to identify
the first application category, the application search module:
provides the partner device with the plurality of application
categories; receives, from the partner device, a selection of the
first application category from the plurality of application
categories; stores an association of the first application category
with a partner identifier of the partner device; and identifies the
first application category based on the stored association.
9. The application search system of claim 1, wherein the search
query includes an indication of the first application category and
the application search module identifies the first application
category based on the indication.
10. The application search system of claim 1, wherein, to identify
the first application category, (i) the application search module
generates, based on at least one term in the search query, a prompt
to be provided to a user of the partner device, and (ii) the
application search module identifies the first application category
based on a selection made by the user in response to the
prompt.
11. A method for providing search results to a plurality of partner
devices, the method comprising: receiving data identifying a
plurality of applications, wherein each of the plurality of
applications is associated with one or more of a plurality of
application categories; generating, based on the received data, a
plurality of search indexes, wherein each of the plurality of
search indexes corresponds to a respective one of the plurality of
application categories; receiving, via a network, a search query
from a first partner device of the plurality of partner devices;
identifying a first application category of the plurality of
application categories based on the search query; selecting, from
the plurality of search indexes, a first search index corresponding
to the identified first application category; querying the selected
first search index to identify a first plurality of application
representations associated with the identified first application
category; generating search results based on the first plurality of
application representations; and providing the generated search
results to be transmitted to the first partner device.
12. The method of claim 11, further comprising: identifying a
second application category of the plurality of application
categories based on the search query; selecting, from the plurality
of search indexes, a second search index based on the second
identified application category; querying the selected second
search index to identify a second plurality of application
representations associated with the identified second application
category; and generating the search results based on a union of the
first plurality of application representations and the second
plurality of application representations.
13. The method of claim 11, wherein selecting the first search
index includes selecting the first index further based on an
identifier of the first partner device.
14. The method of claim 13, wherein two or more of the plurality of
search indexes correspond to the respective one of the application
categories, and wherein selecting the first index includes
selecting the first index from among the two or more of the
plurality of search indexes based on the identifier of the first
partner device.
15. The method of claim 11, wherein identifying the first
application category includes identifying the first application
category further based on a platform executing on the first partner
device.
16. The method of claim 15, wherein context information received
from the first partner device includes an indication of the
platform executing on the first partner device.
17. The method of claim 11, wherein a subset of the plurality of
application categories is associated with the partner device.
18. The method of claim 11, wherein identifying the first
application category includes: providing the partner device with
the plurality of application categories; receiving, from the
partner device, a selection of the first application category from
the plurality of application categories; storing an association of
the first application category with a partner identifier of the
partner device; and identifying the first application category
based on the stored association.
19. The method of claim 11, wherein the search query includes an
indication of the first application category and identifying the
first application category based on the indication.
20. The method of claim 11, wherein identifying the first
application category includes (i) generating, based on at least one
term in the search query, a prompt to be provided to a user of the
partner device, and (ii) identifying the first application category
based on a selection made by the user in response to the prompt.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 13/900,470 (now U.S. Pat. No. 9,552,414),
filed May 22, 2013, which claims the benefit of U.S. Provisional
Application No. 61/650,460, filed May 22, 2012. The entire
disclosures of the applications referenced above are incorporated
by reference.
BACKGROUND
[0002] Field of Art
[0003] The disclosure generally relates to the field of application
search, and more particularly to providing customizable application
search.
[0004] Description of the Related Art
[0005] In recent years, use of computers, smartphones, and other
Internet-connected devices has grown exponentially.
Correspondingly, the number of available applications for such
devices has also grown. Today, many diverse applications can be
accessed on any number of different devices, including, but not
limited to, smartphones, personal computers, wearable devices,
refrigerators, automobiles, and televisions. These diverse
applications can range from business driven applications, games,
educational applications, news applications, shopping applications,
efficiency applications, messaging applications, video chatting
applications, media streaming applications, social networking
applications, and so much more.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The disclosed embodiments have other advantages and features
which will be more readily apparent from the detailed description,
the appended claims, and the accompanying figures (or drawings). A
brief introduction of the figures is below.
[0007] FIG. 1 illustrates an example environment for performing
application search.
[0008] FIG. 2A is an example high-level block diagram illustrating
a detailed view of example modules within a data processing
module.
[0009] FIG. 2B is a block diagram illustrating example application
search indexes.
[0010] FIG. 3 is an example high-level block diagram illustrating a
detailed view of modules within an application search module.
[0011] FIG. 4A is a flow chart illustrating an example method for
dynamically filtering application search results.
[0012] FIG. 4B is a flow chart illustrating an example method for
dynamically filtering application search results.
[0013] FIG. 5 is a flow chart illustrating an example method for
receiving dynamically filtered application search results.
[0014] FIG. 6 illustrates components of an example machine able to
read instructions from a machine-readable medium and execute the
instructions in a processor (or controller).
DETAILED DESCRIPTION
[0015] The Figures (FIGS.) 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. It is noted that
wherever practicable similar or like reference numbers may be used
in the figures and may indicate similar or like functionality.
Configuration Overview
[0016] One embodiment of a disclosed system, method, and computer
readable storage medium provides customizable application search
via an application search system. As used herein, an application
may refer to an object or entity that provides a core set of
functionalities. In one aspect, to represent an application, the
application search system employs an application representation
structure. The structure may include various application attributes
about the application. Such application attributes may correspond
to various aspects of an application, such as functional aspects,
developer information, publisher information, title information, or
different variations or editions of the application.
[0017] In one embodiment, the application search system provides
application search functionality to one or more partners. To
support application search, the application search system generates
one or more indexes of application representations. The indexes may
correspond to different application categories such as
functionalities, language, or platform. For example, the
application search system may generate an index for applications
having a Spanish attribute, or may generate an index for
applications relating to cooking. In one embodiment, the partners
select categories of applications to be searched when users of the
partners submit queries via the partners' websites. For example, a
partner may select an application category relating to a particular
topic (e.g., cooking applications or games) or a particular
platform (e.g., iOS or ANDROID). Alternatively, the application
search system may derive an application category for a partner by
applying a machine learned model to actions of the partner, such as
the application search results selected by the partner.
[0018] In another embodiment, end users select application
categories when submitting queries to the application search
system. For example, a user may explicitly specify a category in a
query, or may implicitly specify a category based on, for example,
the device the user uses to submit the query. The application
search system may prompt the user to select a category based on the
user's input. For example, if the user enters a query for "games
for 3 year olds," the application search system may prompt the
user, "Would you like to limit your search results to games?"
Alternatively, the application search system may determine the
user's intended category by processing the query or information
associated with the query (e.g., the user's device or the language
the user used in the query). For example, the application search
system may identify a "games" category for the user's query for
"games for 3 year olds." As another example, if the user submits
the search query from an ANDROID phone, the application search
system may identify an "ANDROID" category for the user's query. As
yet another example, if the user enters a search query in Spanish,
the application search system may identify a "Spanish" language
category for the user's query.
System Architecture
[0019] FIG. 1 is a high-level block diagram illustrating a typical
environment 100 used for providing customizable application search,
according to one embodiment. The operations described herein may be
performed by one or more computing systems, such as computing
system 100. Referring to FIG. 1, the environment 100 includes a
network 130, one or more data sources 135, one or more partners
125, and an application search system 105. Each of the one or more
data sources 135, one or more partners 125, and application search
system 105 may be in communication with one another via the network
130. Only one application search system 105, three data sources
135, and three partners 125 are shown in FIG. 1 for purposes of
clarity, but those of skill in the art will recognize that typical
environments can have multiple data sources 135 and partners 125,
and can also have multiple application search systems 105.
[0020] The network 130 enables communications between the various
entities of the environment 100. In one embodiment, the network 130
uses standard communications technologies and/or protocols. Thus,
the network 130 can include links using technologies such as
Ethernet, Wireless Fidelity (WiFi) (e.g., 802.11), worldwide
interoperability for microwave access (WiMAX), 3G, Long Term
Evolution (LTE), digital subscriber line (DSL), asynchronous
transfer mode (ATM), InfiniBand, PCI Express Advanced Switching,
etc. Similarly, the networking protocols used on the network 130
can include multiprotocol label switching (MPLS), the transmission
control protocol/Internet protocol (TCP/IP), the User Datagram
Protocol (UDP), the hypertext transport protocol (HTTP), the simple
mail transfer protocol (SMTP), the file transfer protocol (FTP),
etc. The data exchanged over the network 130 can be represented
using technologies and/or formats including the hypertext markup
language (HTML), the extensible markup language (XML), etc. In
addition, all or some of links can be encrypted using conventional
encryption technologies such as secure sockets layer (SSL),
transport layer security (TLS), virtual private networks (VPNs),
Internet Protocol security (IPsec), etc. In another embodiment, the
entities can use custom and/or dedicated data communications
technologies instead of, or in addition to, the ones described
above. Depending upon the embodiment, the network 130 can also
include links to other networks such as the Internet.
[0021] The data sources 135 provide data regarding one or more
applications to the application search system 105. The data sources
135 may include any suitable data providers, including operators of
application stores, application developers, application catalogs,
websites (e.g., blogs, application review sites, etc.), and/or the
like. In one embodiment, each data source 135 may have its own
distinct interface, content, update rate, etc.
[0022] The partners 125 provide (via various machines and/or user
devices, one or more of which comprise a partner system) search
queries to the application search system 105 and receive search
results based on the queries. As used herein, a partner 125 may be
a third party entity (e.g., a company or other organization) or an
end user that leverages the search functionality of the system 105.
In some instances, a partner 125 may be a third party entity that
leverages the search functionality of the system 105 via its own
website or portal. For example, a partner 125 may display an
application search bar on its website. The partner's end users (for
ease of understanding also referred to herein as partners) may
interact with the search bar to send search queries to the system.
In other instances, a partner 125 may be an end user that directly
interfaces with a website or portal provided by the system 105.
Alternatively, a partner 125 may be an end user's user device, such
as a personal computer, a laptop computer, a tablet, a mobile
phone, or any other suitable computing device.
[0023] In one embodiment, the partners 125 leverage the
functionality of the system 105 to provide a customized application
search via their websites. A partner 125 may select one or more
application categories to be associated with search queries
transmitted to the system 105, specifying categories from which the
system 105 is to retrieve search results. The application search
system 105 stores the selections from a partner 125 in association
with an IP address of the partner 125 or some other identifier of
the partner 125. Thus, the application search system 105 processes
queries received from or otherwise associated with the partner 125
based on the categories selected by the partner 125. In one
embodiment, a partner 125 selects categories from a list provided
by the application search system 105.
[0024] The application search system 105 performs searches for
applications. In one aspect, the application search system 105
matches search queries to suggested applications based on inferred
or derived functional capabilities of the search queries and
applications rather than only on explicit matches of the keywords
associated with the search queries and applications. In one
embodiment, the application search system 105 may be leveraged by a
plurality of partners 125, and each partner 125 may be associated
with one or more application category selections and/or customized
machine learned scoring models. Accordingly, the application search
system 105 may use applications associated with a particular
category as the initial consideration set to retrieve search
results based on the categories selected by the partner 125. If a
partner 125 specifies an application category, the application
search system 105 searches indexes corresponding to the selected
category when receiving queries from the partner 125. In another
embodiment, the application search system 105 identifies
application categories based on the search query input by a user,
and retrieves search results from the indexes corresponding to the
identified categories.
[0025] As shown in FIG. 1, the application search system 105
includes a data processing module 110 and an application search
module 115. Some embodiments of the application search system 105
have different and/or other modules than the ones described herein.
Similarly, the functions can be distributed among the modules in
accordance with other embodiments in a different manner than is
described here. Likewise, the functions can be performed by other
entities.
Data Processing Module
[0026] FIG. 2A is a high level block diagram illustrating a
detailed view of modules within the data processing module 110
according to one embodiment. The modules described in accordance
with FIG. 2 are executable by one or more computer systems, e.g.,
computer system 100. Some embodiments of the data processing module
110 have different and/or other modules than the ones described
herein. Similarly, the functions can be distributed among the
modules in accordance with other embodiments in a different manner
than is described here. Likewise, the functions can be performed by
other entities. The data processing module 110 includes modules for
performing various functions. These modules include an intake
module 205 and an indexing module 210.
[0027] The intake module 205 receives data from one or more of the
data sources 135. The data may be later used to support application
search. In one embodiment, the data received from the data sources
135 may include information about one or more application
representations. For example, data may be scraped from web pages on
the Internet using one or more crawlers. In one embodiment, at
least some of the data received from the data sources 135 may
include information regarding the functionalities of the one or
more applications.
[0028] The indexing module 210 generates one or more search indexes
usable for supporting application search. In order to generate the
indexes, the indexing module 210 identifies applications from the
data received by the intake module 205, and generates application
representation structures for the applications. The indexing module
210 additionally extracts attributes from the gathered data for the
identified applications. An attribute may be a particular
characteristic that describes a feature of the application. For
example, attributes may be icons that represent the application,
screenshot images of the application in operation, an Application
ID, a store ID, a developer name, a publisher name, a language, an
ESRB (Entertainment Software Rating Board) rating, a date released,
a category, a size of an application, platform information, a
price, a version, a short description, security ratings, user
reviews, and/or user ratings. At least some of the extracted
attributes may relate to functional aspects of the identified
applications. In some examples, attributes may be directly received
from gathered data, and in other examples, attributes may be
generated or inferred based on the gathered data. The attributes
may be included in the application representation structures that
represent the applications. In another example, the indexing module
210 structures the gathered data by extracting data that represents
an attribute of an indexed application and places the data in the
application representation accordingly.
[0029] Based on the application representations, the indexing
module 210 generates one or more search indexes for supporting
application search and stores the indexes in a computer-readable
storage device. For example, the indexing module 210 may generate
the search indexes by processing the attributes included in each of
the application representations. Each search index may be a data
structure populated with an application ID corresponding to the
application representations of the applications. In one embodiment,
each index corresponds to a category of applications. An
application category may be a group of applications having similar
functionality, language, platform, subject matter, price, or some
other attribute. Various examples of indexes that may be generated
by the indexing module 210 are illustrated in FIG. 2B. For example,
a search index 220 for the category "cooking" may include only
cooking applications, a search index 225 for the category "games"
may include only games, a search index 230 for "IPHONE" may include
only applications compatible with the IPHONE platform, and so
forth. Search indexes may also be generated and maintained for a
particular partner 125, with each index including application
representations curated by the partner 125 or having one or more
attributes specified by the partner 125. For example, the indexing
module 210 may generate an index for a children's entertainment
company that includes application representations associated with a
games attribute and a high security rating. The search indexes may
later be used to perform dynamically filtered application searches.
In one embodiment, the indexing module 210 stores names of the
categories corresponding to search indexes in a database, and
provides a list of the category names to partners 125 for
customizing application searches.
Application Search Module
[0030] FIG. 3 is a high level block diagram illustrating a detailed
view of modules within the application search module 115 according
to one embodiment. Some embodiments of the application search
module 115 have different and/or other modules than the ones
described herein. Similarly, the functions can be distributed among
the modules in accordance with other embodiments in a different
manner than is described here. Likewise, the functions can be
performed by other entities. The application search module 115
includes modules for performing various functions. These modules
include a query processing module 305, a post processing module
325, and a behavioral analysis module 330.
[0031] The query processing module 305 processes queries received
from one or more partners 125. In one embodiment, the query
processing module 305 receives an input Q from a partner 125. The
input Q may include a search query and one or more categories
specified by a partner 125. In one embodiment, the query processing
module 305 sends a partner 125 application categories (for example,
as a list), and a partner 125 returns a selection of one or more of
the application categories. The query processing module 205 may
then associate the queries received from, or otherwise associated
with, the partner 125 with the same category selections. For
example, an operator of a cooking website providing users with a
portal for searching cooking applications may select a "cooking"
category. When user queries are submitted to the system 105 via the
cooking website's portal, the query processing module 305 may
construct the input Q by associating the queries with the "cooking"
category selected by the cooking website.
[0032] Alternatively, one or more query terms in the input Q may
explicitly identify a category. The query processing module 305 may
compare the query terms to category names in a database stored by
the application search module 115. For example, if the user enters
a query for "word games," the query processing module 305 may
compare the query terms "word" and "games" to category names in the
database. If the database includes a "games" index, the query
processing module may interpret the query term "games" as an
application category for the search.
[0033] In yet another embodiment, the input Q may implicitly
identify an application category based on context information
associated with the input Q. Context information associated with an
input Q may include the device from which a query was submitted,
such as a type of the device (e.g., mobile phone or laptop
computer) or a platform executing on the device (e.g., ANDROID,
iOS, or WINDOWS). The context information may also include a
language used in the query (e.g., English or Spanish). Based on the
context information, the query processing module identifies
application categories. For example, a user may submit a query in
Spanish from a mobile phone executing an ANDROID operating system.
The query processing module 305 may identify the language of the
query by comparing query terms to terms in various dictionaries or
analyzing character pattern statistics. Based on platform or
version metadata for a web browsing application from which the
query was submitted, the query processing module 305 may identify
that the query was submitted from a mobile phone executing an
ANDROID operating system. Thus, the query processing module 305 may
identify the application categories "Spanish," "mobile phone," and
"ANDROID" for the search query.
[0034] Based on the input Q, the query processing module 305
generates a set of queries. In addition to constructing the set of
queries, the query processing module 305 generates a set of query
features F.sub.q based on the received search query. A query
feature may be any suitable information related to a search query.
For example, a query feature may include information indicating a
number of words in a search query. Query features can also include
information specifying the popularity or frequency of the received
search query. Other query features might include predicted concepts
or desired categories of the search query, such as a "games" query
category.
[0035] After processing the query, the query processing module 305
identifies an initial set of applications and a corresponding set
of attribute data based on the generated set of queries. To
identify the initial set of applications and attribute data, the
query processing module 305 identifies one or more search indexes
matching the set of queries. As discussed, the application search
system 105 may include a number of search indexes corresponding to
various application categories. In one embodiment, the query
processing module 305 selects an index based on one or more
application categories specified in or associated with the query.
Illustratively, a received search query may include the query
"Secure banking applications that work with my IPHONE." Because the
query includes the term IPHONE, which matches the name of an
application category, the query processing module 305 may
automatically select an index corresponding to the "IPHONE"
application category. The selected index includes a set of
applications limited to the IPHONE platform.
[0036] Alternatively, the query processing module 305 may select an
index based on the context information in the input Q, such as an
identifier of the partner transmitting the input Q or the IP
address from which the query originates. For example, the query
processing module 305 may receive the IP address with the input Q
and determine a partner 125 associated with the IP address. The
query processing module 305 retrieves the list of categories
previously selected by the partner 125 and stored in association
with an identifier the partner 125 and, based on the list,
identifies the indexes.
[0037] In another embodiment, the query processing module 305
selects an index by prompting the user entering a query to select
one or more application categories. For example, if a user enters a
query for "word games," the query processing may provide the user
with the prompt, "Would you like to limit your search to games?"
and options to select "Yes" or "No." If the user selects "Yes," the
query processing module 305 identifies "games" as an application
category associated with the search query and selects the index
corresponding to the identified games category.
[0038] After selection of the one or more indexes, the query
processing module 305 queries the selected indexes using the set of
queries to identify an initial set of applications and
corresponding attributes as an initial set of search results for
the queries. If multiple indexes are queried, the query processing
module 305 may retrieve a set of applications from each index
matching the queries. In this case, the query processing module 305
may identify the initial set of applications as the union of the
application sets from each index. That is, the query processing
module 305 may only include the applications that appear in results
from each queried index in the initial set of search results. For
example, if a received input Q includes a query for "games in
Spanish," the query processing module 305 may retrieve an initial
set of search results by querying an index of games and an index of
applications in Spanish, and identifying the applications occurring
in both indexes.
[0039] Following identification of the initial set of applications,
the query processing module 305 determines the application-specific
features F.sub.r for the initial set of applications. In one
embodiment, the application-specific features F.sub.r for each
application in the initial set may include or be based on the
attributes of the application.
[0040] In one embodiment, the query processing module 305 processes
the initial or filtered set of applications in order to generate a
set of ranked search results. To do so, the query processing module
305 generates a set of query/result features F.sub.q/r that
indicate the relationships between the set of features F.sub.r of
the applications in the initial set and the query features F.sub.q.
For example, the set of features F.sub.q/r may indicate the
distances between terms in the search query and terms in the
applications' titles.
[0041] In one embodiment, the query processing module 305 applies
at least the application-specific features F.sub.r, the
query/result feature F.sub.q/r, and the query features F.sub.q to a
machine learned scoring model. The machine learned scoring model
may score the relevance of each application to the search query
based on the application-specific features F.sub.r, the
query/result feature F.sub.q/r, and the query features F.sub.q. In
one embodiment, the machine learned scoring module may be specific
to a partner 125, or specifically trained for a particular
application index. Based on the scoring, the query processing
module 305 generates a set of search results. The set of search
results may include an ordering of applications from the filtered
set of applications based on the scores for the applications. The
ordering may indicate the determined relevance of the applications
to the search query.
[0042] The post-processing module 325 processes the search results
to generate a final results list. In one embodiment, the
post-processing module 325 obtains display-related metadata for the
search results, such as application images (e.g., application
screenshots), application descriptions, application videos, etc.
The post-processing module 325 may organize the search results by
restricting the number of results in the list that are from a
single developer or platform, clustering the results by concept, or
emphasizing specific editions of an application most relevant to
the query. Thus, the list of results may be modified from its
default sort-by-score order.
[0043] The behavior analysis module 330 monitors the actions of the
partner 125 that provided the query. For example, the system can
determine which applications were eventually viewed or downloaded
by the partner 125 or users associated with the partner 125. The
behavior analysis module 330 analyzes the partners' actions to
further extract attributes for the applications. The extracted
attributes may be used to later influence the performance of
subsequent searches performed by the application search module 115.
In one embodiment, the behavior analysis module 330 monitors the
partners' actions to determine an application category to be
associated with the partners' searches. For example, if users of a
partner primarily download games, the behavior analysis module 330
may identify a games category for the partner
Process for Providing Customizable Search
[0044] FIG. 4A illustrates a method for dynamically filtering
application search results, in accordance with an embodiment. Other
embodiments can perform the steps of the method in different orders
and can include different, additional, and/or fewer steps. The
process shown in FIG. 4A can be performed by the application search
module 115.
[0045] In one embodiment, the application search module 115
receives 402 an application category selection from a partner 125
and stores the selection in association with an identifier of the
partner 125, such that queries received from the partner 125 can be
associated with the selections. The application search module 115
receives 404 a search query associated with the partner 125.
Depending on the configuration of the partner 125 and/or a partner
system associated with the partner 125, the application search
module 115 may receive 404 a search query from the partner 125 or
from a user device interacting with a website or portal provided by
the partner 125. In response to receiving the search query, the
application search module 115 retrieves 406 application category
selections stored in association with an identifier of the partner
125 from which the query was received.
[0046] Using the submitted search query, the application search
module 115 queries 408 one or more indexes associated with the
selected category to generate an initial set of search results. The
initial set of results comprises identifiers of applications within
the selected application category. The application search module
115 sorts 410 the initial results set based on machine learning,
and post-processes 412 the sorted set of generate a final results
list to be presented to an end user. The final results list is
displayed 414 to the end user via the partner 125 or a computing
device associated with the partner 125.
[0047] The end user may interact with the final results list to,
for example, view information about applications of interest. The
application search module 115 may receive 416 actions of the end
user (or partner 125) with respect to the final results list. For
example, the application search module 115 may maintain a log of
the applications from the results list that the user eventually
downloads, and use the log to improve ranking of the applications
or learn categories to be associated with partner searches.
[0048] An alternative embodiment of a method for dynamically
filtering application search results is illustrated in FIG. 4B. The
process illustrated in FIG. 4B may be performed by the application
search module 115 for performing application searches when
application categories are specified by the end users of a partner
125.
[0049] The application search module 115 receives 420 an
application search query. Based on the received query, the
application search module 115 identifies 422 an application
category. For example, an end user may submit a query for "games"
to the application search module 115. The application search module
115 may interpret "games" as an application category. As another
example, if an end user submits a query for "word games," the
application search module 115 may interpret "games" as a category
and "word" as a keyword of the query. As yet another example, a
query may include "Spiele," and the application search module 115
may identify both "games" and "German" as application
categories.
[0050] Based on the identified category, the application search
module 115 selects one or more indexes associated with the
identified category and queries 424 the selected indexes to
generate an initial results set. The application search module 115
processes 426 the initial results set and generates a final list of
search results corresponding to the end user's query. The final
results list is displayed 428 to the end user.
[0051] FIG. 5 illustrates a method for receiving dynamically
filtered application search results, in accordance with an
embodiment. Other embodiments can perform the steps of the method
in different orders and can include different, additional, and/or
fewer steps. The process shown in FIG. 5 can be performed by a user
device, such as the user device of an end user of a partner
125.
[0052] The user device transmits 502 a query to the application
search system 105. In one embodiment, the user device transmits 502
the query via a partner 125 associated with the user device. An
application category may be specified in the query or previously
stored by the application search system 105 for the partner 125.
The user device receives 504 a set of search results from the
application search system 105 determined based on the query and the
application category, and displays 506 the search results. The
search results comprise identifiers of applications from the
application category specified by the query or stored for the
partner 125.
[0053] The embodiments described herein beneficially allow
application search systems to provide search results within
particular application categories. By querying an index
corresponding to an application category selected by a partner or
specified by a user (whether implicitly or explicitly), an
application search system as described herein returns search
results customized according to the preferences of end users or
partners. As an example, a partner 125 may be a mobile network
operator (MNO). The MNO may select a category for applications
compatible with the MNO's platform. When its customers enter
queries into the search portal provided by MNO, the application
search system 105 filters the search results to include only
applications that are compatible with the MNO's platform. Thus, the
customers are provided with more relevant search results than if
they needed to manually review each application for compatibility
with the platform.
Computing Machine Architecture
[0054] FIG. 6 is a block diagram illustrating components of an
example machine able to read instructions from a machine-readable
medium and execute them in a processor (or controller), as an
example of the search system 105, partners 125, or client devices.
Specifically, FIG. 6 shows a diagrammatic representation of a
machine in the example form of a computer system 600 within which
instructions 624 (e.g., software) for causing the machine to
perform any one or more of the methodologies discussed herein may
be executed. 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.
[0055] The machine may be a server computer, a client computer, a
personal computer (PC), a tablet PC, a set-top box (STB), a
personal digital assistant (PDA), a cellular telephone, a
smartphone, a web appliance, a network router, switch or bridge, or
any machine capable of executing instructions 624 (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 624 to perform
any one or more of the methodologies discussed herein.
[0056] The example computer system 600 includes one or more
processors 602 (e.g., a central processing unit (CPU), 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 (RFICs), or any combination of
these), a main memory 604, and a static memory 606, which are
configured to communicate with each other via a bus 608. The
computer system 600 may further include graphics display unit 610
(e.g., a plasma display panel (PDP), a liquid crystal display
(LCD), a projector, or a cathode ray tube (CRT)). The computer
system 600 may also include alphanumeric input device 612 (e.g., a
keyboard), a cursor control device 614 (e.g., a mouse, a trackball,
a joystick, a motion sensor, or other pointing instrument), a
storage unit 616, a signal generation device 618 (e.g., a speaker),
and a network interface device 620, which also are configured to
communicate via the bus 608.
[0057] The storage unit 616 includes a machine-readable medium 622
on which is stored instructions 624 (e.g., software) embodying any
one or more of the methodologies or functions described herein. The
instructions 624 (e.g., software) may also reside, completely or at
least partially, within the main memory 604 or within the processor
602 (e.g., within a processor's cache memory) during execution
thereof by the computer system 600, the main memory 604 and the
processor 602 also constituting machine-readable media. The
instructions 624 (e.g., software) may be transmitted or received
over a network 626 via the network interface device 620.
[0058] While machine-readable medium 622 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
624). The term "machine-readable medium" shall also be taken to
include any medium that is capable of storing instructions (e.g.,
instructions 624) 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 not be
limited to, data repositories in the form of solid-state memories,
optical media, and magnetic media.
ADDITIONAL CONFIGURATION CONSIDERATIONS
[0059] 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.
[0060] Certain embodiments are described herein as including logic
or a number of components, modules, or mechanisms, for example, as
illustrated in FIGS. 1-3. Modules may constitute either software
modules (e.g., code embodied on a machine-readable medium or in a
transmission signal) or hardware modules. A hardware module is
tangible unit capable of performing certain operations and may be
configured or arranged in a certain manner. In example embodiments,
one or more computer systems (e.g., a standalone, client or server
computer system) or one or more hardware modules of a computer
system (e.g., a processor or a group of processors, e.g., processor
602) may be configured by software (e.g., an application or
application portion) as a hardware module that operates to perform
certain operations as described herein.
[0061] In various embodiments, a hardware module may be implemented
mechanically or electronically. For example, a hardware module may
comprise dedicated circuitry or logic that is permanently
configured (e.g., as a special-purpose processor, such as a field
programmable gate array (FPGA), an application-specific integrated
circuit (ASIC), system on a chip (SoC), chipset) to perform certain
operations. A hardware module may also comprise programmable logic
or circuitry (e.g., as encompassed within a general-purpose
processor or other programmable processor) that is temporarily
configured by software to perform certain operations. It will be
appreciated that the decision to implement a hardware module
mechanically, in dedicated and permanently configured circuitry, or
in temporarily configured circuitry (e.g., configured by software)
may be driven by cost and time considerations.
[0062] The various operations of example methods described herein
may be performed, at least partially, by one or more processors,
e.g., processor 602, that are temporarily configured (e.g., by
software) or permanently configured to perform the relevant
operations. Whether temporarily or permanently configured, such
processors may constitute processor-implemented modules that
operate to perform one or more operations or functions. The modules
referred to herein may, in some example embodiments, comprise
processor-implemented modules.
[0063] The one or more processors may also operate to support
performance of the relevant operations in a "cloud computing"
environment or as a "software as a service" (SaaS). For example, at
least some of the operations may be performed by a group of
computers (as examples of machines including processors), these
operations being accessible via a network (e.g., the Internet) and
via one or more appropriate interfaces (e.g., application program
interfaces (APIs).)
[0064] The performance of certain of the operations may be
distributed among the one or more processors, not only residing
within a single machine, but deployed across a number of machines.
In some example embodiments, the one or more processors or
processor-implemented modules may be located in a single geographic
location (e.g., within a home environment, an office environment,
or a server farm). In other example embodiments, the one or more
processors or processor-implemented modules may be distributed
across a number of geographic locations.
[0065] Some portions of this specification are presented in terms
of algorithms or symbolic representations of operations on data
stored as bits or binary digital signals within a machine memory
(e.g., a computer memory). These algorithms or symbolic
representations are examples of techniques used by those of
ordinary skill in the data processing arts to convey the substance
of their work to others skilled in the art. As used herein, an
"algorithm" is a self-consistent sequence of operations or similar
processing leading to a desired result. In this context, algorithms
and operations involve physical manipulation of physical
quantities. Typically, but not necessarily, such quantities may
take the form of electrical, magnetic, or optical signals capable
of being stored, accessed, transferred, combined, compared, or
otherwise manipulated by a machine. It is convenient at times,
principally for reasons of common usage, to refer to such signals
using words such as "data," "content," "bits," "values,"
"elements," "symbols," "characters," "terms," "numbers,"
"numerals," or the like. These words, however, are merely
convenient labels and are to be associated with appropriate
physical quantities.
[0066] Unless specifically stated otherwise, discussions herein
using words such as "processing," "computing," "calculating,"
"determining," "presenting," "displaying," or the like may refer to
actions or processes of a machine (e.g., a computer) that
manipulates or transforms data represented as physical (e.g.,
electronic, magnetic, or optical) quantities within one or more
memories (e.g., volatile memory, non-volatile memory, or a
combination thereof), registers, or other machine components that
receive, store, transmit, or display information.
[0067] As used herein any reference to "one embodiment" or "an
embodiment" means that a particular element, feature, structure, or
characteristic described in connection with the embodiment is
included in at least one embodiment. The appearances of the phrase
"in one embodiment" in various places in the specification are not
necessarily all referring to the same embodiment.
[0068] Some embodiments may be described using the expression
"coupled" and "connected" along with their derivatives. For
example, some embodiments may be described using the term "coupled"
to indicate that two or more elements are in direct physical or
electrical contact. The term "coupled," however, may also mean that
two or more elements are not in direct contact with each other, but
yet still co-operate or interact with each other. The embodiments
are not limited in this context.
[0069] As used herein, the terms "comprises," "comprising,"
"includes," "including," "has," "having" or any other variation
thereof, are intended to cover a non-exclusive inclusion. For
example, a process, method, article, or apparatus that comprises a
list of elements is not necessarily limited to only those elements
but may include other elements not expressly listed or inherent to
such process, method, article, or apparatus. Further, unless
expressly stated to the contrary, "or" refers to an inclusive or
and not to an exclusive or. For example, a condition A or B is
satisfied by any one of the following: A is true (or present) and B
is false (or not present), A is false (or not present) and B is
true (or present), and both A and B are true (or present).
[0070] In addition, use of the "a" or "an" are employed to describe
elements and components of the embodiments herein. This is done
merely for convenience and to give a general sense of the
invention. This description should be read to include one or at
least one and the singular also includes the plural unless it is
obvious that it is meant otherwise.
[0071] 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 providing customizable
search 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.
* * * * *