Increasingly, users install a wide range of applications (also commonly referred to as “apps”) on a wide range of hardware platforms. For example, users install applications on cellular telephones—sometimes called “smart phones”—for literally thousands of purposes. Such applications may be downloaded from a “marketplace” or “app store.” Such an “app store” may be configured as a single organization, typically managed by a cellular telephone service provider or device manufacturer. Accordingly, a cellular telephone provider is able to serve applications (both free and paid) to a captive audience of cellular subscribers. Other device types (TVs, etc.) may be similarly managed to receive applications from a single source.
The downloading process typically involves opening the marketplace application and entering a key word to search for a desired application. Alternatively, the user may click on a button representing a category, such as “games” or “featured.” In either case, the user is presented with a listing of applications from which to choose.
This system is problematic for several reasons. In particular, the user is unable to gain access to applications that are not associated with the application store available to the user. Additionally, the number of applications available to the user at the single application store may be too large to process, due to the inclusion of applications of little interest to the user. Accordingly, the user may be overwhelmed by applications that are of little value to the user, and may be unable to access numerous applications that could be of interest or value.
Techniques for discovery of applications in a unified manner across a plurality of application stores in response to receipt of a search query and associated user intent are described herein. The techniques describe the discovery and indexing of applications from the plurality of application stores. Additional techniques describe aspects of processing user queries and deriving intent of a user, including application of factors beyond a scope of the search query.
A discovery and indexing process may create and maintain an index using information from a plurality of application stores. An indexer may receive data from a crawler and/or a feed store. The crawler may discover and crawl a plurality of application stores and send discovered data to the indexer. The feed store may receive direct feeds of application information, links to download locations and metadata from a plurality of application stores. In operation, a user provides a query to a search engine. The query and an associated intent may be determined by a query and intent pipeline. The user may be provided with search results including application information, data, metadata and direct links to an application store for download of a desired application.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The term “techniques,” for instance, may refer to device(s), system(s), method(s) and/or computer-readable instructions as permitted by the context above and throughout the document.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to reference like features and components. Moreover, the figures are intended to illustrate general concepts, and not to indicate required and/or necessary elements.
The disclosure describes techniques for discovery of applications across a plurality of application stores in response to receipt of a search query and/or associated user intent. The techniques describe examples for the discovery and indexing of applications from the plurality of application stores. Additional techniques describe examples of processing user queries and deriving intent of a user.
In one example, an indexer may create and maintain an index using information from a plurality of application stores. The indexer may receive data from a crawler and/or a feed store. The crawler may discover and crawl a plurality of application stores and send discovered data to the indexer. The feed store may receive direct feeds of application information, links to download locations and metadata from a plurality of application stores.
In operation, a user provides a query to a search engine. The query and an associated intent may be determined by a query and intent pipeline. The user may be provided with search results including application data, links to information websites and direct links to an application store for application download.
Accordingly, the disclosure presents examples of unified application discovery across a plurality of application stores. The examples synergistically combine innovative aspects of query and intent recognition and understanding with innovative techniques of discovery and indexing of applications across a plurality of application stores. The examples presented herein free the user of a device from the limitations of a single source of applications. Moreover, the examples provide for superior searching of application stores, and integration of user intent into the query and searching process.
The discussion herein includes several sections. Each section is intended to be non-limiting. More particularly, this entire description is intended to illustrate components which may be utilized in unified application discovery across a plurality of application stores, but not components which are necessarily required. The discussion begins with a section entitled “Example Unified Application Discovery,” which describes an example environment that may implement application discovery that is “unified” across a plurality of application stores. This section depicts and describes application discovery according to a high-level architecture, including discovery and indexing of applications, and searching an index according to a query and a user's intent. Next, a section entitled “Example Search Results Pages” illustrates several examples of search results pages. A further section, entitled “Example Flow Diagrams” illustrates and describes techniques that may be used to determine intent of a user, to search an index for application matches across a plurality of application stores and to serve search results pages, including direct links to applications. Additionally, techniques are described to discover and index applications over a plurality of application stores, and to create and maintain an index using web crawlers and direct feeds. Finally, the discussion ends with a brief conclusion.
This brief introduction, including section titles and corresponding summaries, is provided for the reader's convenience and is not intended to limit the scope of the claims or any section of this disclosure.
Referring to
An application discovery service 114 is configured to obtain information about applications using one or more techniques. The information may assist a user to decide if an application (e.g., an application from application stores 118-122) would be appropriately and/or beneficially installed on the user's device, and may assist the user to locate and install the application, if desired. In particular, the application discovery service 114 may discover and index a plurality of applications and associated application information, thereby creating and maintaining an index of application information. Additionally, the application discovery service 114 may provide query and intent processing to evaluate user intent, may search the index using the query and intent, and provide appropriate information and links to users.
Application stores 118-122 are representative of a potentially large number of application stores present on various networks. Examples of the application stores include Windows® Mobile downloads for Windows® phones, iTunes®, Android® Marketplace and others. Each of the application stores may be configured as a website or other data center to serve one or more applications and related data to users and potential users of applications serviced by that application store. One or more of the application stores 118-122 may be associated with large numbers of applications designed and intended for many purposes and for use with a device of a particular type (e.g., cell phones using a particular operating system). Alternatively, one or more of the application stores 118-122 may be associated with applications and data associated with more than one device, device type, operating system and/or operating system type. As a still further alternative, one or more of the application stores 118-122 may represent a small portion of a larger website, such as a corporate website (e.g., a hotel chain having a small number of downloadable applications to assist customers to obtain hotel reservations). In operation, the application stores 118-122 may be crawled by, and/or provide a data feed to, the application discovery service 114. Accordingly, information from within the application stores 118-122 may be recognized and transferred to the application discovery service 114. To facilitate a unified approach across different device platforms and application stores, a standardized application protocol may be employed, as discussed further with reference to
Third party sources 124-128 represent sources of information about particular applications. Examples of such third party sources include blogs, wilds, aggregators and crowd-sourced meta-stores. The third party sources may provide information, links to information, and links to application stores and download pages in such stores. For example, a well-respected review site (e.g., a website associated with a magazine) may provide information associated with applications. Such a website may be more trusted by users and potential users than the website maintained by the developer, who may be less well known and/or more commercially involved with promotion of an application. In operation, the third party sources 124-128 may be crawled by, and/or provide a data feed to, the application discovery service 114. Accordingly, information from within the third party sources 124-128 may be recognized and transferred to the application discovery service 114.
The application discovery service 114 may include a search engine front end 210, a query and intent pipeline 212, an indexer 214 and a crawler 216. An index 218 and a feed store 220 may be part of the application discovery service 114 or remotely located on an available memory device (e.g., disk or disk array 206). In one example, the search engine front end 210, the query and intent pipeline 212, the indexer 214 and the crawler 216 and/or other functional blocks are configured as software programs. Such programs can include computer-readable and/or processor-readable statements defined on computer-readable and/or processor-readable media, which when executed by the processor 202, result in execution of one or more methods, such as methods of unified application discovery across a plurality of application stores.
A search engine (e.g., the combined search engine front end 210, query and intent pipeline 212, indexer 214, crawler 216) is able to communicate with the devices 102-110 (seen in
The search engine front end 210 is also configured to return search results pages to a user. The search results pages may be presented in a format that is consistent with the display characteristics and abilities of the device 102-110, on which the search results page is displayed. Thus, the search engine front end 210 may be configured to return search results in a format that is optimized for display on the device from which the search query originated.
A query and intent pipeline 212 is in communication with the search engine front end 210 and an index 218. The query and intent pipeline 212 intuits intent of a user who issues a query to the search engine front end 210. The intent may be derived from analysis of parameters associated with the query, from information associated with the device used to make the query, and/or from information known about the user making the query. For example, the query and intent pipeline may derive intent of a user by examination of a user's history of Internet searches, the user's history of Internet sites visited, the cookies or other software objects and/or programs installed on the user's device, and/or the user's history of application downloads and/or other factors based on a particular situation.
An index 218 may contain information about, and/or links to, a plurality of applications. For example, the index 218 may include information that a user would evaluate before installing one of the plurality of applications on a device. Additionally, the index 218 may include links to a website of a developer and/or promoter of some or all of the plurality of applications. Following the link may provide the user with additional information about the application and related information about the developer and related applications. The index may also include links to an installation page within an application store (e.g., installation pages within application stores 118-122). By following such a link, the user is able to directly download and install the application on a device 102-110 associated with the user.
An indexer 214 may ingest data and utilize the data to create and/or maintain the index 218. In particular, the indexer 214 may obtain information from a crawler 216 and/or a feed store 220. Once obtained, the information may be processed and included in the index 218.
The crawler 216 is particularly configured to search and crawl a plurality of application stores 118-122. Examples of application stores that may be included within the plurality include the Window® Mobile application store, the “Google Apps Marketplace” or the “iTunes® Official Store.” Additional examples of application stores may include developer websites which promote and distribute relatively limited numbers of applications. And further, corporate websites (e.g., a hotel chain) may include a small number of downloadable applications on a website to provide customers with a convenient way by which to communicate with the corporation (e.g., to obtain hotel reservations). Such application stores should expose their pages so that they may be crawled by the crawler 216. Accordingly, the crawler 216 may obtain information about applications, links to web pages that include information, and links to web pages which provide for the download of an application.
The feed store 220 may receive an information feed, such as RSS, from one or more application stores. The feed store 220 may retain such information until transmitted to the indexer 214. The information received, stored and transmitted by the feed store 220 may include information about applications from a plurality of application stores 118-122 and third party sources 124-128. Such information may also include links to web pages that include information, and links to web pages which provide for the download of an application. Accordingly, the feed store 220 and the crawler 216 may both obtain similar information about application stores. However, the crawler 216 and the feed store 220 may obtain such information from different application stores.
The domain name system 222 provides an optional element, which may be included within the application discovery service 114. The domain name system 222 implements a well-defined protocol that may be used to allow a search provider (e.g., the search engine front end 210 of
Referring to
In one example, the protocol 302 may be identified by a name; for example, “app://”. Accordingly, a name such as “app://” may identify a protocol to replace the familiar http:// protocol. The domain and/or top level domain 304 may be identified (strictly for purposes of example only, and not as a required feature) as “microsoft.bing,” optionally with a top level domain such as “.com” or “.org.” This is by way of example only, and the example would allow a user to access and/or manage an application associated with the Bing® service provided by Microsoft®. In a further example, the domain level 304 could be indicated by “corporation.department” or similar, as required to indicate a particular application or resource. The data, metadata or variables 306 may include, by way of example and not limitation, one or more search term(s) used to find an application, input variable values for use by a specifically identified application or a command to an application and/or to an application store, server or host of the application.
The flow diagram of
Each process described herein is illustrated as a collection of blocks in a logical flow graph, which represent a sequence of operations that can be implemented in hardware, software, or a combination thereof In the context of software, the blocks may represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform techniques such as unified application discovery across multiple application stores. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and/or in parallel to implement the process. The above discussion may apply to other processes described herein.
At operation 902, intent of a user to discover information or an application is determined. In one example, the query and intent pipeline 212 of
At operation 904, an index may be searched for a match to the intent of the user and/or a query provided by the user. Determining intent may be a useful step in the discovery of an application through operation of a search engine. For example, user intent may be matched with indexed application content during the searching process.
At operation 906, the search query is responded to with a search results page, which may include links to applications within at least two application stores. By providing links to applications that are within at least two application stores, operation 906 provides greater utility than is provided by traditional application stores, which are configured and able to search for applications only within a single store.
At example 1004, aspects and techniques of determining intent are discussed, and particularly how intent relates to a type of device operated by the user. At operation 1012, the search query is examined to determine whether the query contains an indication of a device to be used as a platform for an application. Optionally, it may be determined if the query contains all needed information regarding the device in question. In particular, the search parameters may be examined for an obvious sign, such as the name of a device as one of the search parameters. In the absence of such information in the query, it may be verified that the search query does not indicate a device to be used as a platform for the application, or did not indicate some or all relevant aspects of a device. At operation 1014, the device used to send the query may be interrogated to determine the type of the device and to determine what type of application(s) is suited for installation on the device. The type of the device can be based on a number of factors, such as hardware make, model and revision, software version, firmware version, network type and speed, etc. Thus, if the query did not specify the device type or other needed information, then the interrogation may be used to determine the device type or other needed information. Moreover, if aspects of the device were disclosed in the query (e.g., the make/manufacturer of a smart phone) but other aspects were not disclosed (e.g., the model of the smart phone) then the interrogation may reveal the non-disclosed aspects.
At example 1006, aspects and techniques of determining intent are discussed, and particularly how intent may be used to modify a scope of a search. In one example, the scope of search may be modified by intent of the user. The intent of the user may be determined by subjective interpretation of information other than parameters of the search query. At operation 1016, parameters of a search query are analyzed to determine a scope of the search. At operation 1018, the scope of the search is modified by intent of the user. For example, if the search explicitly indicates certain aspects, those aspects may be modified and/or supplemented by the intent of the user. Modifications may alter the scope of the search by providing a better indication of the make, model, and revision level, etc., of the device on which the application is to be operated. Knowledge of the user's intent may alter the scope of the search by providing additional information in the query, such as by tying the search to a geographic region of the user or to network limitations experienced by the user. Such user intent may modify both the query and associated search results page.
At example 1008, aspects and techniques of determining intent are discussed, and particularly how a search may be refined by aspects not included in parameters of the search, and how a device used to formulate the search can be interrogated. At operation 1020, information not included in parameters of a search query is interpreted to assist in determining intent of the user. Such information may be extremely varied, and may include such factors as a location of the user, network capabilities of the user's network, applications already installed on the user's device, usage of the applications installed, previous queries by the user, the user's device and/or the device upon which the query was made and other factors. At operation 1022, the parameters of the search query may be searched for data indicating a device to be used as a platform for an application. The parameters may or may not fully describe the device. At operation 1024, the device sending the search query may be interrogated by the application discovery service 114 to determine characteristic of the device and to resolve any deficiencies in the description of the device.
At example 1102, an index is searched for an application that could provide information that matches the intent of the user. Thus, the user may or may not have been searching for an application. At operation 1108, a search is made for an application that would, if operated yield information that is responsive to the user's query. At operation 1110, a link is provided to a download page of the application.
At example 1104, the search of the index for a match to user intent may be expanded to include applications to the user's intent. Such an expanded search may provide added utility, particular for a user not fully aware of the scope of information and application available. At operation 1112, an index is searched for applications that are related to those that were found in two or more application stores and that match the user's intent. The relationship may be one of a related focus or purpose of the application; alternatively, the relationship may be one of a cooperative functionality, such as a “helper application.” In one example, the index 218 (seen in
At example 1106, the search of the index for a match to user intent can be performed in part by operation of a well-defined protocol. At operation 1116, a protocol is invoked to search, manage, transfer and/or operate applications distributed across plural application stores. In one example, the protocol may be configured as indicated by the domain name system 222 of
At example 1202, information may be displayed because it is paid advertising. Thus at operation 1210, information is displayed if it is determined that it is part of an advertising promotion. Such advertising information may be related to the objective search parameters of the user's query. Additionally, the advertising information may be related to the user's intent.
At example 1204, links may be aggregated on the search page. This may result in separate sections for links to web pages, links to application information and links to application download pages. At operation 1212, a plurality of links, associated with a plurality of applications, are aggregated in a particular section of a search results page. This aggregation accommodates applications, as they become more prevalent and multiple application links are returned by searches.
At example 1206, the search query page returned by operation 906 of
At example 1208, further optional aspects of the operation of block 906 in
At operation 1302, a plurality of application stores are crawled. The crawling process may be performed by a crawler, such as crawler 216 seen in
Optionally, the protocol defined and enabled by the domain name system 222 of
At operation 1304, data is extracted during the crawling. As a result of the crawling, data is obtained from a plurality of application stores. Moreover, the data are more complete than the data within any single application store. Accordingly, users having access to this data are better able to analyze, select and download appropriate applications.
At operation 1306, a data feed is received from one or more application stores. Such a data feed may be transmitted according to any technology desired, such as RSS or others. A data feed may be a more convenient and effective method of data transfer than having a crawler explore an application store.
At operation 1308, the data extracted from the crawling and the data feed(s) are indexed into an index. In the example of
At operation 1310, information about applications from third party sources may be discovered, such as by crawling or by data feed. Such third party sources may include sources other than application stores and users. Specifically, such sources may include developer websites, corporations offering downloadable applications assisting customers to make purchases, application reviewers, critics, news reports and all other information about applications.
At operation 1312, the index is supplemented by any/all additional available information, such as that obtained from operation 1310. In the implementation of
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.