US20170228428A1 - Systems and Methods for Filtering Application Search Results - Google Patents

Systems and Methods for Filtering Application Search Results Download PDF

Info

Publication number
US20170228428A1
US20170228428A1 US15/413,333 US201715413333A US2017228428A1 US 20170228428 A1 US20170228428 A1 US 20170228428A1 US 201715413333 A US201715413333 A US 201715413333A US 2017228428 A1 US2017228428 A1 US 2017228428A1
Authority
US
United States
Prior art keywords
application
search
category
partner device
partner
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/413,333
Inventor
Jason Prosnitz
Tomer Kagan
Eric Glover
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Quixey Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quixey Inc filed Critical Quixey Inc
Priority to US15/413,333 priority Critical patent/US20170228428A1/en
Publication of US20170228428A1 publication Critical patent/US20170228428A1/en
Assigned to SAMSUNG ELECTRONICS CO., LTD. reassignment SAMSUNG ELECTRONICS CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Quixey, Inc.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • G06F17/30466
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • G06F17/3056
    • G06F17/30598
    • G06F17/30867

Definitions

  • the disclosure generally relates to the field of application search, and more particularly to providing customizable application search.
  • FIG. 1 illustrates an example environment for performing application search.
  • FIG. 2A is an example high-level block diagram illustrating a detailed view of example modules within a data processing module.
  • FIG. 2B is a block diagram illustrating example application search indexes.
  • FIG. 3 is an example high-level block diagram illustrating a detailed view of modules within an application search module.
  • FIG. 4A is a flow chart illustrating an example method for dynamically filtering application search results.
  • FIG. 4B is a flow chart illustrating an example method for dynamically filtering application search results.
  • FIG. 5 is a flow chart illustrating an example method for receiving dynamically filtered application search results.
  • 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).
  • an application may refer to an object or entity that provides a core set of functionalities.
  • the application search system employs an application representation structure.
  • the structure may include various application attributes about the application.
  • 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.
  • the application search system provides application search functionality to one or more partners.
  • 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.
  • the application search system may generate an index for applications having a Spanish attribute, or may generate an index for applications relating to cooking.
  • the partners select categories of applications to be searched when users of the partners submit queries via the partners' websites.
  • 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).
  • 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.
  • end users select application categories when submitting queries to the application search system.
  • 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?”
  • 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).
  • the application search system may identify a “games” category for the user's query for “games for 3 year olds.”
  • the application search system may identify an “ANDROID” category for the user's query.
  • the application search system may identify a “Spanish” language category for the user's query.
  • 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 .
  • 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 .
  • the network 130 enables communications between the various entities of the environment 100 .
  • the network 130 uses standard communications technologies and/or protocols.
  • 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.
  • WiFi Wireless Fidelity
  • WiMAX worldwide interoperability for microwave access
  • 3G Third Generation
  • LTE Long Term Evolution
  • DSL digital subscriber line
  • ATM asynchronous transfer mode
  • InfiniBand PCI Express Advanced Switching
  • 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.
  • 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.
  • the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above.
  • the network 130 can also include links to other networks such as the Internet.
  • 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.
  • each data source 135 may have its own distinct interface, content, update rate, etc.
  • 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.
  • 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 .
  • a partner 125 may be a third party entity that leverages the search functionality of the system 105 via its own website or portal.
  • 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.
  • a partner 125 may be an end user that directly interfaces with a website or portal provided by the system 105 .
  • 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.
  • 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 .
  • 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 .
  • a partner 125 selects categories from a list provided by the application search system 105 .
  • the application search system 105 performs searches for applications.
  • 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.
  • 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.
  • 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.
  • the functions can be distributed among the modules in accordance with other embodiments in a different manner than is described here.
  • the functions can be performed by other entities.
  • 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.
  • the functions can be distributed among the modules in accordance with other embodiments in a different manner than is described here.
  • 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 .
  • 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.
  • 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.
  • at least some of the data received from the data sources 135 may include information regarding the functionalities of the one or more applications.
  • the indexing module 210 generates one or more search indexes usable for supporting application search.
  • 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.
  • 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.
  • 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.
  • 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.
  • the indexing module 210 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.
  • 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.
  • FIG. 2B Various examples of indexes that may be generated by the indexing module 210 are illustrated in FIG. 2B .
  • 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 .
  • 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.
  • 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.
  • 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.
  • the functions can be distributed among the modules in accordance with other embodiments in a different manner than is described here.
  • 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 .
  • the query processing module 305 processes queries received from one or more partners 125 .
  • 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 .
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • the query processing module 305 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 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.
  • the query processing module 305 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • the query processing module 305 determines the application-specific features F r for the initial set of applications.
  • the application-specific features F r for each application in the initial set may include or be based on the attributes of the application.
  • 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 q/r that indicate the relationships between the set of features F r of the applications in the initial set and the query features F q .
  • the set of features F q/r may indicate the distances between terms in the search query and terms in the applications' titles.
  • the query processing module 305 applies at least the application-specific features F r , the query/result feature F q/r , and the query features F 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 r , the query/result feature F q/r , and the query features F q .
  • the machine learned scoring module may be specific to a partner 125 , or specifically trained for a particular application index.
  • the query processing module 305 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.
  • the post-processing module 325 processes the search results to generate a final results list.
  • 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.
  • 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 .
  • 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
  • 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 .
  • 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 .
  • 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 .
  • 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.
  • 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 .
  • 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.
  • FIG. 4B 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 .
  • 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 “She,” and the application search module 115 may identify both “games” and “German” as application categories.
  • 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.
  • 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 .
  • the user device transmits 502 a query to the application search system 105 .
  • 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 .
  • an application search system as described herein beneficially allow application search systems to provide search results within particular application categories.
  • an application search system as described herein returns search results customized according to the preferences of end users or partners.
  • a partner 125 may be a mobile network operator (MNO).
  • MNO mobile network operator
  • the MNO may select a category for applications compatible with the MNO's platform.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • PC personal computer
  • PDA personal digital assistant
  • STB set-top box
  • a cellular telephone a smartphone
  • smartphone a web appliance
  • network router switch or bridge
  • 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)).
  • 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
  • main memory 604 e.g.,
  • 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 .
  • 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
  • storage unit 616 e.g., a disk drive, or other pointing instrument
  • a signal generation device 618 e.g., a speaker
  • a network interface device 620 which also are configured to communicate via the bus 608 .
  • 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 .
  • 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.
  • 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.
  • one or more computer systems e.g., a standalone, client or server computer system
  • one or more hardware modules of a computer system e.g., a processor or a group of processors, e.g., processor 602
  • software e.g., an application or application portion
  • a hardware module may be implemented mechanically or electronically.
  • 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.
  • processors e.g., processor 602
  • processors may be temporarily configured (e.g., by software) or permanently configured to perform the relevant operations.
  • 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.
  • 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).)
  • SaaS software as a service
  • 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.
  • 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.
  • 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.
  • Coupled and “connected” along with their derivatives.
  • 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.
  • the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
  • 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.
  • “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).

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.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • 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
  • Field of Art
  • The disclosure generally relates to the field of application search, and more particularly to providing customizable application search.
  • Description of the Related Art
  • 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
  • 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.
  • FIG. 1 illustrates an example environment for performing application search.
  • FIG. 2A is an example high-level block diagram illustrating a detailed view of example modules within a data processing module.
  • FIG. 2B is a block diagram illustrating example application search indexes.
  • FIG. 3 is an example high-level block diagram illustrating a detailed view of modules within an application search module.
  • FIG. 4A is a flow chart illustrating an example method for dynamically filtering application search results.
  • FIG. 4B is a flow chart illustrating an example method for dynamically filtering application search results.
  • FIG. 5 is a flow chart illustrating an example method for receiving dynamically filtered application search results.
  • 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
  • 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
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 Fq 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Following identification of the initial set of applications, the query processing module 305 determines the application-specific features Fr for the initial set of applications. In one embodiment, the application-specific features Fr for each application in the initial set may include or be based on the attributes of the application.
  • 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 Fq/r that indicate the relationships between the set of features Fr of the applications in the initial set and the query features Fq. For example, the set of features Fq/r may indicate the distances between terms in the search query and terms in the applications' titles.
  • In one embodiment, the query processing module 305 applies at least the application-specific features Fr, the query/result feature Fq/r, and the query features Fq 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 Fr, the query/result feature Fq/r, and the query features Fq. 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).)
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.

Claims (20)

What is claimed is:
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.
US15/413,333 2012-05-22 2017-01-23 Systems and Methods for Filtering Application Search Results Abandoned US20170228428A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/413,333 US20170228428A1 (en) 2012-05-22 2017-01-23 Systems and Methods for Filtering Application Search Results

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261650460P 2012-05-22 2012-05-22
US13/900,470 US9552414B2 (en) 2012-05-22 2013-05-22 Dynamic filtering in application search
US15/413,333 US20170228428A1 (en) 2012-05-22 2017-01-23 Systems and Methods for Filtering Application Search Results

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/900,470 Continuation US9552414B2 (en) 2012-05-22 2013-05-22 Dynamic filtering in application search

Publications (1)

Publication Number Publication Date
US20170228428A1 true US20170228428A1 (en) 2017-08-10

Family

ID=49779264

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/900,470 Expired - Fee Related US9552414B2 (en) 2012-05-22 2013-05-22 Dynamic filtering in application search
US15/413,333 Abandoned US20170228428A1 (en) 2012-05-22 2017-01-23 Systems and Methods for Filtering Application Search Results

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/900,470 Expired - Fee Related US9552414B2 (en) 2012-05-22 2013-05-22 Dynamic filtering in application search

Country Status (1)

Country Link
US (2) US9552414B2 (en)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9552414B2 (en) * 2012-05-22 2017-01-24 Quixey, Inc. Dynamic filtering in application search
US9405832B2 (en) * 2012-05-31 2016-08-02 Apple Inc. Application search query classifier
US8965909B2 (en) * 2012-12-24 2015-02-24 Yahoo! Inc. Type-ahead search optimization
US9553919B2 (en) 2013-02-27 2017-01-24 Quixey, Inc. Techniques for sharing application states
EP2962224A4 (en) 2013-03-01 2016-10-19 Quixey Inc Generating search results containing state links to applications
US9032392B2 (en) 2013-03-15 2015-05-12 Quixey, Inc. Similarity engine for facilitating re-creation of an application collection of a source computing device on a destination computing device
US9471624B1 (en) 2013-12-26 2016-10-18 Quixey, Inc. Method for recommending applications for deletion
US9720672B2 (en) 2014-01-06 2017-08-01 Quixey, Inc. Searching and accessing application functionality
US20150242420A1 (en) 2014-02-21 2015-08-27 Quixey, Inc. Location-Based Searching
US10061796B2 (en) 2014-03-11 2018-08-28 Google Llc Native application content verification
US9432395B2 (en) 2014-04-28 2016-08-30 Quixey, Inc. Application spam detector
US9721021B2 (en) 2014-05-27 2017-08-01 Quixey, Inc. Personalized search results
US9626443B2 (en) 2014-10-23 2017-04-18 Quixey, Inc. Searching and accessing application functionality
US10459608B2 (en) * 2014-12-01 2019-10-29 Ebay Inc. Mobile optimized shopping comparison
US10037375B2 (en) * 2015-08-28 2018-07-31 Samsung Electronics Co., Ltd. Transmitting card objects based on categorized and scraped data
US10346457B2 (en) 2016-07-27 2019-07-09 Microsoft Technology Licensing, Llc Platform support clusters from computer application metadata
US10339148B2 (en) 2016-07-27 2019-07-02 Microsoft Technology Licensing, Llc Cross-platform computer application query categories
US10387435B2 (en) 2016-07-27 2019-08-20 Microsoft Technology Licensing, Llc Computer application query suggestions
US11269961B2 (en) 2016-10-28 2022-03-08 Microsoft Technology Licensing, Llc Systems and methods for App query driven results
US10909156B2 (en) 2017-02-10 2021-02-02 Microsoft Technology Licensing, Llc Search and filtering of message content
US10911389B2 (en) 2017-02-10 2021-02-02 Microsoft Technology Licensing, Llc Rich preview of bundled content
US10498684B2 (en) 2017-02-10 2019-12-03 Microsoft Technology Licensing, Llc Automated bundling of content
US10931617B2 (en) 2017-02-10 2021-02-23 Microsoft Technology Licensing, Llc Sharing of bundled content

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106639A1 (en) * 2001-06-18 2007-05-10 Pavitra Subramaniam Method, apparatus, and system for searching based on search visibility rules
US20100262619A1 (en) * 2009-04-13 2010-10-14 Microsoft Corporation Provision of applications to mobile devices
US20100293174A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Query classification
US20120284247A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Integrating applications within search results
US20120290583A1 (en) * 2011-05-09 2012-11-15 Google Inc. Using Application Metadata To Identify Applications Of Interest
US20130290321A1 (en) * 2012-04-27 2013-10-31 Quixey, Inc. Providing a customizable application search
US20140006409A1 (en) * 2012-05-22 2014-01-02 Quixey, Inc. Dynamic filtering in application search

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738766B2 (en) * 2000-02-02 2004-05-18 Doongo Technologies, Inc. Apparatus and methods for providing personalized application search results for wireless devices based on user profiles
US7233937B2 (en) * 2001-06-18 2007-06-19 Siebel Systems, Inc. Method, apparatus, and system for searching based on filter search specification
US20040243595A1 (en) 2001-09-28 2004-12-02 Zhan Cui Database management system
US8375324B1 (en) * 2002-03-05 2013-02-12 Hyland Software, Inc. Computer-implemented document manager application enabler system and method
US7716199B2 (en) 2005-08-10 2010-05-11 Google Inc. Aggregating context data for programmable search engines
US6946715B2 (en) * 2003-02-19 2005-09-20 Micron Technology, Inc. CMOS image sensor and method of fabrication
US7996419B2 (en) 2004-03-31 2011-08-09 Google Inc. Query rewriting with entity detection
US7617192B2 (en) * 2005-03-09 2009-11-10 Medio Systems, Inc. Method and system for capability content search with mobile computing devices
US8060487B2 (en) * 2005-08-01 2011-11-15 Sap Ag Searching for and launching data files not associated with an application
KR100644399B1 (en) * 2005-12-13 2006-11-10 엔에이치엔(주) Method and system for supporting information access and record media thehefor
US8065286B2 (en) * 2006-01-23 2011-11-22 Chacha Search, Inc. Scalable search system using human searchers
US7689580B2 (en) 2006-03-27 2010-03-30 Oracle International Corporation Search based application development framework
US20080228903A1 (en) * 2007-03-16 2008-09-18 Yahoo! Inc. System and method of serving advertisements for web applications
US8046436B2 (en) * 2007-03-16 2011-10-25 Yahoo! Inc. System and method of providing context information for client application data stored on the web
US8046438B2 (en) * 2007-03-16 2011-10-25 Yahoo! Inc. System and method of restoring data and context of client applications stored on the web
US8041781B2 (en) * 2007-03-16 2011-10-18 Yahoo! Inc. System and method for providing web system services for storing data and context of client applications on the web
CN101276361B (en) * 2007-03-28 2010-09-15 阿里巴巴集团控股有限公司 Method and system for displaying related key words
US9069853B2 (en) * 2007-03-30 2015-06-30 Innography, Inc. System and method of goal-oriented searching
US8176440B2 (en) * 2007-03-30 2012-05-08 Silicon Laboratories, Inc. System and method of presenting search results
US9009649B2 (en) * 2007-05-16 2015-04-14 Accenture Global Services Limited Application search tool for rapid prototyping and development of new applications
US7933896B2 (en) * 2008-02-22 2011-04-26 Tigerlogic Corporation Systems and methods of searching a document for relevant chunks in response to a search request
US7937395B2 (en) * 2008-02-22 2011-05-03 Tigerlogic Corporation Systems and methods of displaying and re-using document chunks in a document development application
US8204897B1 (en) * 2008-09-09 2012-06-19 Google Inc. Interactive search querying
US20100114887A1 (en) * 2008-10-17 2010-05-06 Google Inc. Textual Disambiguation Using Social Connections
US8161050B2 (en) 2008-11-20 2012-04-17 Microsoft Corporation Visualizing hyperlinks in a search results list
KR20120040160A (en) * 2009-05-27 2012-04-26 구글 인코포레이티드 Computer application data in search results
US8386455B2 (en) 2009-09-20 2013-02-26 Yahoo! Inc. Systems and methods for providing advanced search result page content
US9335893B2 (en) * 2009-12-29 2016-05-10 Here Global B.V. Method and apparatus for dynamically grouping items in applications
CA2789995C (en) * 2010-02-15 2017-03-07 Research In Motion Limited Devices and method for searching data on data sources associated with a category
CN102169484B (en) * 2010-02-26 2014-08-13 威睿公司 Comprehensive, relative and dynamic data search in virtual environment
KR101633366B1 (en) * 2010-04-09 2016-06-24 삼성전자주식회사 Method and system for providing application store service
US20110307484A1 (en) * 2010-06-11 2011-12-15 Nitin Dinesh Anand System and method of addressing and accessing information using a keyword identifier
JP5740003B2 (en) * 2010-10-21 2015-06-24 クアルコム,インコーポレイテッド Search multiple data sources using mobile computing devices
US8433620B2 (en) * 2010-11-04 2013-04-30 Microsoft Corporation Application store tastemaker recommendations
US9805022B2 (en) 2010-12-09 2017-10-31 Apple Inc. Generation of topic-based language models for an app search engine
US20120166411A1 (en) * 2010-12-27 2012-06-28 Microsoft Corporation Discovery of remotely executed applications
US20120210219A1 (en) * 2011-02-16 2012-08-16 Giovanni Agnoli Keywords and dynamic folder structures
US20120316955A1 (en) * 2011-04-06 2012-12-13 Yahoo! Inc. System and Method for Mobile Application Search
US9092525B2 (en) * 2011-05-09 2015-07-28 Wyse Technology L.L.C. Method and apparatus for searching non-public data using a single search query
US8812474B2 (en) * 2011-07-14 2014-08-19 Nuance Communications, Inc. Methods and apparatus for identifying and providing information sought by a user
US9489457B2 (en) * 2011-07-14 2016-11-08 Nuance Communications, Inc. Methods and apparatus for initiating an action
US9292603B2 (en) * 2011-09-30 2016-03-22 Nuance Communications, Inc. Receipt and processing of user-specified queries
US20130086026A1 (en) * 2011-09-30 2013-04-04 Nuance Communications, Inc. Techniques relating to receiving and processing user-specified queries
US9171105B2 (en) * 2011-11-22 2015-10-27 Lg Electronics Inc. Electronic device and method of operating the same
US9317584B2 (en) * 2011-12-30 2016-04-19 Certona Corporation Keyword index pruning
KR101994987B1 (en) 2012-02-22 2019-09-30 구글 엘엘씨 Related entities
US9201946B2 (en) * 2012-04-26 2015-12-01 Quixey, Inc. Application representation for application editions
CN103425704B (en) * 2012-05-24 2017-07-21 阿里巴巴集团控股有限公司 Application interface provides method and device
US9405832B2 (en) * 2012-05-31 2016-08-02 Apple Inc. Application search query classifier
US10176633B2 (en) * 2012-06-05 2019-01-08 Apple Inc. Integrated mapping and navigation application
US20130325343A1 (en) * 2012-06-05 2013-12-05 Apple Inc. Mapping application with novel search field
US8554873B1 (en) * 2012-10-05 2013-10-08 Google Inc. Custom event and attraction suggestions
US9087053B2 (en) * 2012-10-12 2015-07-21 Hyland Software, Inc. Computer-implemented document manager application enabler system and method

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106639A1 (en) * 2001-06-18 2007-05-10 Pavitra Subramaniam Method, apparatus, and system for searching based on search visibility rules
US20100262619A1 (en) * 2009-04-13 2010-10-14 Microsoft Corporation Provision of applications to mobile devices
US20100293174A1 (en) * 2009-05-12 2010-11-18 Microsoft Corporation Query classification
US20120284247A1 (en) * 2011-05-06 2012-11-08 Microsoft Corporation Integrating applications within search results
US20120290583A1 (en) * 2011-05-09 2012-11-15 Google Inc. Using Application Metadata To Identify Applications Of Interest
US20130290321A1 (en) * 2012-04-27 2013-10-31 Quixey, Inc. Providing a customizable application search
US20140006409A1 (en) * 2012-05-22 2014-01-02 Quixey, Inc. Dynamic filtering in application search
US9552414B2 (en) * 2012-05-22 2017-01-24 Quixey, Inc. Dynamic filtering in application search

Also Published As

Publication number Publication date
US9552414B2 (en) 2017-01-24
US20140006409A1 (en) 2014-01-02

Similar Documents

Publication Publication Date Title
US9552414B2 (en) Dynamic filtering in application search
US10262045B2 (en) Application representation for application editions
US20170154119A1 (en) Application Search System and Method for Programmatically Adapting Search Results According to Partner-Specified Settings
US9372901B2 (en) Searching for software applications based on application attributes
US10353977B2 (en) Computer-implemented method for automated operating-system-specific access to software functionality
US10180967B2 (en) Performing application searches
US9876751B2 (en) System and method for analyzing messages in a network or across networks
US9959314B2 (en) Performing application search based on entities
US9720672B2 (en) Searching and accessing application functionality
US20170220210A1 (en) Application Search System and Method using Rotational User Interface Elements
US10878044B2 (en) System and method for providing content recommendation service
TWI519979B (en) Information recommendation method and device thereof and information resource recommendation system
US20160098416A1 (en) Auto complete search box based on the user's context to reduce user's input
US20160132596A1 (en) Generating Search Results Based On Software Application Installation Status
US9946794B2 (en) Accessing special purpose search systems
US10095378B2 (en) Web browser toolbar
US20160188681A1 (en) Viewing Search Results Using Multiple Different Devices
US10311116B2 (en) Multi-function search button
CN107004014A (en) Effectively find and the contents attribute that comes to the surface

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

AS Assignment

Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUIXEY, INC.;REEL/FRAME:043972/0569

Effective date: 20171019

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION