Automatic information retrieval
1. A computer-implemented method, comprising:
executing a particular native application on a mobile device associated with a particular user;
sending, from the mobile device to a search engine, a set of data generated by the particular native application on the mobile device, the set of data comprising: (i) identifying data for the particular native application; and (ii) a representation of viewed content, the viewed content being content displayed by the particular native application on the user device and determined to be viewed by the particular user;
executing an application on the mobile device that is different from the particular native application;
receiving a query as input in the application at the mobile device;
sending the query from the mobile device to the search engine;
receiving search results from the search engine, the search results including at least one search result referencing the viewed content, the at least one search result having been generated in response to the particular user's query and the set of data generated by the native application and sent to the search engine; and
displaying the search results at the mobile device.
2. The method of claim 1, wherein the representation of the viewed content comprises a keyword from the viewed content or an identifier associated with the viewed content.
3. The method of claim 1, wherein the data set further comprises an access control list that specifies whether the viewed content is classified as private content or public content.
4. The method of claim 1, wherein the at least one search result includes a link to the viewed content that, when selected, launches the viewed content in the particular native application.
5. The method of claim 1, wherein the application different from the native application is a web browser.
6. The method of claim 1, wherein the application different from the native application is a search application.
7. A mobile device, the mobile device comprising:
computer hardware including a communication system, a processor system, and an input/output system; and
a non-transitory computer-readable medium coupled to the computer hardware and having instructions stored thereon that, when executed by the computer hardware, cause the computer hardware to perform operations comprising: executing a particular native application on a mobile device associated with a particular user;
sending, from the mobile device to a search engine, a set of data generated by the particular native application on the mobile device, the set of data comprising: (i) identifying data for the particular native application; and (ii) a representation of viewed content, the viewed content being content displayed by the particular native application on the user device and determined to be viewed by the particular user;
executing an application on the mobile device that is different from the particular native application;
receiving a query as input in the application at the mobile device;
sending the query from the mobile device to the search engine;
receiving search results from the search engine, the search results including at least one search result referencing the viewed content, the at least one search result having been generated in response to the particular user's query and the set of data generated by the native application and sent to the search engine; and
displaying the search results at the mobile device.
8. The system of claim 7, wherein the representation of the viewed content comprises a keyword from the viewed content or an identifier associated with the viewed content.
9. The system of claim 7, wherein the data set further comprises an access control list that specifies whether the viewed content is classified as private content or public content.
10. The system of claim 7, wherein the at least one search result includes a link to the viewed content that, when selected, launches the viewed content in the particular native application.
11. The system of claim 7, wherein the application different from the native application is a web browser.
12. The system of claim 7, wherein the application different from the native application is a search application.
13. A non-transitory computer-readable medium having instructions stored thereon, which, when executed by a mobile device, cause the mobile device to perform operations comprising:
executing a particular native application on a mobile device associated with a particular user;
sending, from the mobile device to a search engine, a set of data generated by the particular native application on the mobile device, the set of data comprising: (i) identifying data for the particular native application; and (ii) a representation of viewed content, the viewed content being content displayed by the particular native application on the user device and determined to be viewed by the particular user;
executing an application on the mobile device that is different from the particular native application;
receiving a query as input in the application at the mobile device;
sending the query from the mobile device to the search engine;
receiving search results from the search engine, the search results including at least one search result referencing the viewed content, the at least one search result having been generated in response to the particular user's query and the set of data generated by the native application and sent to the search engine; and
displaying the search results at the mobile device.
Background
Digital content available on the internet is often consumed by users on mobile devices. For example, mobile devices include native applications that provide users with access to digital content. Consumption of digital content is one type of user activity that may be used to improve the accuracy of search results provided to a user.
Disclosure of Invention
In general, one innovative aspect of the subject matter described in this specification can be embodied in methods that make native application content accessible to a user for a search engine. For example, in response to receiving a search query related to viewed content, the search engine may generate search results that include references to the viewed content. In particular, the search engine may access a set of data within the index associated with the native application content, and in response to receiving a search query, the search engine may use the stored set of data to generate a search results page that references the viewed content and provides a link to the viewed content that, when enabled, launches the native application.
Where the system discussed herein collects personal information about a user or can use personal information, the user can be provided with the following opportunities: whether a control program or feature collects personal information — e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location; or whether and/or how to receive content from a content server that may be more relevant to the user. In addition, before storing or using the particular data, the particular data may be anonymized in one or more ways so that personally identifiable information may be removed. For example, the identity of the user may be anonymized such that personally identifiable information cannot be determined for the user, or the geographic location of the user may be generalized where location information is obtained, such as to a city, ZIP code, or state level, such that the particular location of the user cannot be determined. Thus, the user may control how information about the user is collected and used by the content server.
Implementations may include one or more of the following features. For example, a data set generated by a native application on a mobile device is received by a search engine from the mobile device, the data set including: (i) identifying data of a native application; (ii) viewing a representation of the content; and (iii) a link to the viewing content, which when selected launches the viewing content in the native application; storing, by a search engine, in association with viewed content (i) data identifying a native application and (ii) a link to the viewed content; and using the stored data set in generating search results that (i) reference the viewed content and (ii) include a link to the viewed content that, when selected, launches the viewed content in the native application.
Other versions include corresponding systems and computer programs encoded on computer storage devices configured to perform the actions of the methods.
One or more implementations may include the following optional features. For example, in some implementations, search results are returned to the user in response to a received search query. As a further example, the representation of the viewed content includes a keyword from the viewed content, or an identifier associated with the viewed content.
In some implementations, the data set further includes (iv) information identifying a user of the mobile device.
In some implementations, the access control list specifies whether the viewed content is classified as private content or public content.
In some implementations, the link to the viewed content includes a deep link.
In some implementations, using the stored data set in generating search results includes: receiving a search query from a second mobile device; identifying the viewed content as a response to the search query; determining that a native application is installed on a second mobile device; and in response to determining that the native application is installed on the second mobile device, generating search results that (i) reference the viewed content and (ii) include a link to the viewed content that, when selected, launches the viewed content in the native application. Alternatively, if it is determined that the native application is not installed on the second mobile device after receiving the search query and identifying the query content as a response to the search query, the method may comprise: another compatible platform is determined to display the associated content on the second mobile device.
Particular embodiments of the subject matter described in this specification can be implemented to realize one or more of the following advantages. For example, information stored in an application page index of a native application page may be obtained from actual application page data and thus may provide a more comprehensive description of application content than that provided by metadata external to the native application and describing the native application. This may also provide the search engine with the ability to: the correlation metric is determined more accurately than the correlation metric based on metadata describing the native application. In particular, the application page index of the native application page may provide the search engine with the ability to present surface search results of the native application that take into account the actual data provided within the application page of the native application. This may be more accurate than merely relying on metadata describing the native application, such as the title and description of the native application, and may also free the content publisher from performing search engine optimization on the metadata to ensure that the native application can be identified in response to a particular query. Thus, embodiments of the subject matter described in this specification can provide improved searching and retrieval, e.g., a retrieved document more accurately matches a search query.
Embodiments that access application page data in binary form can reduce the likelihood of description errors, such as optical character recognition errors, that result when using techniques that obtain such data. In addition, accessing the data in binary form may also identify data that is to be hidden from view, such as where a scrollable element must be driven to move the view within the application environment. The collection of application page data may use native applications as a source of application page data, and thus, the collection of data describing an application may be done in a more timely manner than the manner in which metadata from multiple different websites is collected. Also, collection of application page data in this manner may be more scalable than collecting metadata from multiple different websites.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other potential features and advantages will become apparent from the description, the drawings, and the claims.
Other embodiments of these aspects include corresponding systems, apparatus, and computer programs, encoded on computer storage devices, configured to perform the actions of the methods.
Drawings
FIG. 1 illustrates an exemplary system that can be used to index native application data.
FIG. 2 illustrates an exemplary process that may be used to index native application data.
FIG. 3 is a block diagram of a computing device that may implement the processes described herein or portions thereof.
In the drawings, like reference numerals designate corresponding parts throughout the several views.
Detailed Description
According to one general implementation, given that content consumption on native applications increases significantly as the content available on a mobile device increases, a search engine will have access to user activity data generated by these native applications. In particular, in addition to user activity data such as previously submitted search queries, content accessed through a web browser, or user responses to presented search results, the search engine may also access user activity data generated by native applications that operate independently of the search engine. When the search engine takes such user activity data into account, such user activity data allows search results to be generated to reflect a significant portion of the user activity on the mobile device, which may improve search query performance.
Accordingly, techniques are described for making native application content available to a search engine for generating search results in response to subsequent search queries related to the native application content. In particular, the search engine may store a set of data associated with native application content in an index and, in response to receiving a related search query, use the stored set of data to generate a set of search results that reference the viewed content and provide a link to the viewed content, which, when enabled, runs the native application.
As used herein, a native application may generate an application page for display on a mobile device within the environment of the native application and may operate independently of the application on the mobile device. For example, a native application may be an application specifically designed to run on a particular mobile device operating system and machine firmware. Thus, native applications are different from browser-based applications and browser rendered resources. The latter may require all or at least some of the elements or instructions whenever instantiated or rendered that are downloaded from the web server. In addition, browser-based applications and browser rendered resources may be processed by all web-enabled mobile devices within the browser and are therefore not operating system specific.
To establish a data index for a native application, the system may instantiate a virtual machine that emulates an operating system running on the mobile device. Within the virtual machine, the system may instantiate a native application specific to the operating system. For example, the native application may generate an application page for display on the mobile device within the native application and may operate independently of a browser application on the mobile device.
The system may access application pages of the native application within the virtual machine. For example, the system may access the pages by using an automated process that explores various menus and options for each application page and each subsequent application page. Alternatively, the system may access a particular application page specified by a particular publisher of the native application.
For each of the application pages, the system may generate application page data describing the content of the application page. For example, the viewing content described by the application page data may include text displayed by the mobile device on the application page when the mobile device displays the application page, image data defining an image of the application page to be rendered in the native application, list/menu data describing various lists and menus of the application page, or other data describing other features of the application page.
An index may be built for application pages of a native application in an index searchable by a search engine. For example, a search engine may combine web resource search results that reference web resources that may be rendered in a browser application on a mobile device with native application search results that specify a native application. The native application search results may be generated in part in response to an index search of application pages of the native application.
The operation of the system to index the application page data and the processing of the search results for the application page is described in more detail below.
FIG. 1 illustrates an exemplary system 100 that may be used to index native application data. In general, the user 102a uses the native application 104a on the first mobile device 106a to access content, which may be sent as a data set 108a to the search engine 110 and stored in the index 120. The search engine 110 can then receive a subsequent search query 108b from the second mobile device 106b and generate a search results page 130 in response to the received search query 108 b. The user 102b of the second mobile device may then provide user input 134 on a link 132 included in the search results page 130, which then runs the native application 104b on the second mobile device 106 b. (it should be noted that the terms "first mobile device" and "second mobile device" are used purely for ease of description, and that, in principle, the first mobile device 106a and the second mobile device 106b may be the same mobile device-although FIG. 1 shows a subsequent search query 108b sent by a different mobile device 106b to the mobile device 106a using the native application 104a to access content, the subsequent search query may in principle be sent by the same mobile device 106a using the native application 104a to access content.)
In more detail, the mobile devices 106 a-106 b may be any type of mobile computing device that includes a mobile operating system, such as, for example, a smartphone, a tablet computer, or a laptop computer. The native applications 104 a-104 b may be mobile applications installed on computer-readable storage media of the mobile devices 106 a-106 b, respectively, and configured to execute on operating systems of the mobile devices 106 a-106 b. For example, the native applications 104 a-104 b may be applications included within the operating system of the mobile devices 106 a-106 b, such as an email application, a messaging application, or an application installed from an application store, such as a third-party news reader application. In some cases, the native applications 104 a-104 b may also be provided by a content provider to enable the users 102 a-102 b to access the viewing content displayed by the native applications 104 a-104 b, respectively.
In some implementations, the native application 104a can extract data that includes a representation of the viewing content accessed by the user 102a on the native application 104 a. The representation of the viewing content may include keywords extracted from the viewing content, or hyperlinks that direct the user 102a to the display of the viewing content on the native application 104 a. For example, in some cases, the keywords may be common terms within the viewed content that may be used to identify the viewed content. In other cases, the hyperlink may be a deep link that transmits an instruction to the mobile device 106a to execute the native application 104a to display the viewing content.
In some implementations, the data collection 108 can also include user information of the user 102 a. The user information may include a hardware device identifier of the mobile device 106a, account information related to a user account or subscription for the native application 104a, or other types of information that enables the search engine 110 to associate the data set 108 with the user 102 a. For example, in some instances, demographic information related to the user 102a may be collected to aggregate data collected from a particular type of content available on the native application 104 a.
In some implementations, the data collection 108 can also include an access control list that specifies whether, for example, viewed content accessed by the user 102a should be classified as private content or public content. For example, the access control list may identify particular users and specify access rights for each user that are allowed, denied, or audited. For example, data classified as private may include usage user information, such as account logins and passwords, payment information, or other types of information that the user 102a wishes to remain private. In other examples, the data classified as common may include information that may be used to aggregate user activity data from multiple users accessing particular content on native application 104 a. For example, data indicating articles read by the user 102a, or search queries provided by the user 102a on the native application 104a, may be used to aggregate data from multiple users to determine patterns of user activity related to viewing content on the native application 104 a.
As shown in the example in fig. 1, a user 102a may view content related to news on a native application 104a, which native application 104a may be a news reader application that provides news articles from digital publications to the user 102 a. As shown, user 102b may read an article entitled "Life on Mars finish a realty" using a news reader application. The news reader application may collect a data set 108a representing user activity on the native application 104a, such as information about news articles accessed by the user 102 a.
The search engine 110 may be a software system that includes a search infrastructure for receiving data sets 108 related to content on native applications 104a, and is designed to search information on the internet based on the received data sets 108a and search queries 108 b. For example, a search engine may be coupled to the search infrastructure over a network coupled with the mobile devices 106 a-106 b. The search engine 10 may be implemented in software, firmware, hardware, or any combination. For example, in some implementations, the search engine 110 may be integrated into a server, which may be in communication with or part of a web server (not shown). In such implementations, the search engine 110 may search for information on the internet through respective browsers running on remote client devices, such as, for example, the mobile devices 106a and 106 b.
The search engine 110 may access the received data set 108a to extract information from the data set 108a and store the information within the index 120. For example, the search engine 110 may generate the index 120 using a general search engine indexing technique used by search engine architectures. The extracted information within the index 120 may be stored in a viewing content information table 122.
As shown in the example in fig. 1, the viewing content information table 122 may include information related to viewing content accessed by the user 102a in the native application 104 a. As shown, for example, the viewing CONTENT information table 122 includes "TIMESTAMP (time stamp)" indicating when the user 102a accessed the viewing CONTENT in the native application 104a, "LINK INFO (LINK information)" indicating that the native application 104a used to load the viewing CONTENT, "APP ID" representing a unique application identifier associated with the native application 104a, and "CONTENT TYPE" classifying the TYPE of CONTENT appearing on the native application 104 a.
The search engine 110 may also receive search queries from users. For example, as shown in the example in fig. 1, the search engine 110 receives a search query 108b of the term "PLANET," which search query 108b is sent using the mobile device 106 b. In response to receiving the search query 108b, the search engine 110 may determine information within the view content information table 122 related to terms included in the search query 108b based on comparing terms included in the search query 108b to information included in the index 120. For example, as shown, the search engine 110 may determine that the viewed content appearing on the native application 104a is related to the search query 108b "PLANET," because the viewed content information table 122 indicates that the title "Life on Mars fine a availability" of the news article includes the related term "MARS. The search engine 110 can then generate a search results page 130 on the mobile device 106b in response to receiving the search query 108 b. For example, the search results page 130 may be displayed in a web browser on the mobile device 106 b.
As shown in the example in FIG. 1, the search results page 130 includes references to the viewed content in the native application 104a based on the search engine 110 determining that the search query 108 relates to information included in the viewed content information table 122 of the index 120. The search results page 130 includes a link 132, which link 132 may be activated by user input 134. For example, user input 134 may include: for example, a "click" using a mouse or touch input over the text of link 132. Once the link 132 is activated, the mobile device 106b runs the viewing content in the native application 104 b.
In some implementations, the link 132 can be a deep link with embedded information that provides the mobile device 106b with a set of computer-implemented instructions to run the native application 104b to depict content associated with information included in the viewing content information table 122.
In some implementations, the search engine 110 can perform additional or alternative operations related to the native application 104b in response to receiving the search query 108 b. For example, the search engine 110 may initially determine whether the viewed content in the viewed content information table 112 is responsive to the search query 108b and generate the search results page 130 in response to determining that the viewed content is responsive to the search query 108 b. In this case, if it is determined that the viewed content is responsive to the search query 108b, the search engine 110 can include only the links 132 in the search results page 130. For example, if the search query 108b does not include terms related to viewing information within the table of content information 122, the search engine may ignore the data set 108a within the index 120 in generating the search results page 130.
As shown in the example in FIG. 1, the search results page 130 includes a hyperlink to a "News Reader" native application that displays a News article entitled "Life on Mars find a availability". Upon receiving user input activating the hyperlink, the mobile device 106b may then run the "News Reader" native application to display the News article "Life on Mars find a availability". As depicted by an example, the system 100 can be used to associate common news article content between users 102a and 102b that may be of interest based on the search engine 110 receiving data indicating that the users 102a and 102b may be interested in similar topics related to space.
In some implementations, after the user 102b activates the link 132, the mobile device 106b can then transmit the data set 108c to the search engine 110, which search engine 110 then updates the view content information table 112 of shared content between the native applications 104a and 104 b. In such an implementation, the search engine 110 may recursively generate the index 120 after subsequent users have accessed the associated viewed content to collect aggregated information of the viewed content based on the content of the multiple users.
In some instances, the native application 104b may be a different application than the native application 104a that displays the same content. In this example, the content provider may provide the viewing content on different types of native applications running on the mobile device. For example, the viewing content may be news articles published on multiple mobile platforms and accessed by various native applications.
In some instances in which the native application 104b is not installed on the mobile device 106b when the user 102b activates the link 132, the system 100 may also determine another compatible platform to display the associated content. For the example in fig. 1, in addition to the mobile device 106b running the native application 104b, the mobile device 106b may display a news article on a web browser application on the mobile device 106 b.
FIG. 2 illustrates an exemplary process 200 that may be used to index native application data. Briefly, process 200 may include: receiving a data set (210), storing the data set (220), and using the stored data set (230).
In more detail, the process 200 may include: a data set is received (210). For example, the search engine 110 may receive the data set 108a from the mobile device 106a generated by the native application 104a on the mobile device 106 a. The data set 108a may include data identifying the native application 104a, a representation of the viewed content, and a link to the viewed content that, when selected, runs the viewed content in the native application 104 a. For example, as shown in FIG. 1, the viewing content may be a news article displayed on a native application 104a, which native application 104a may be a news reading application.
The process 200 may include: the data set (220) is stored. For example, the search engine 110 may store data identifying the native application 104a and a link to the viewed content in association with the viewed content. For example, as shown in FIG. 1, the index 120 may include a view content information table 122, the view content information table 122 including information from the received data set 108 a. For example, the information may include a timestamp that occurs when the user 102a accesses the viewed content, information related to a link to the viewed content, a native application identifier that identifies the native application 104a, or a category of the viewed content.
The process 200 may include: the stored data set (230) is used. For example, in response to a search query, such as search query 108b from mobile device 106b, search engine 110 may generate search results page 130 using the stored data sets on index 120. For example, the search results page 130 may reference the viewed content and may include a link 132 that, when selected, runs the viewed content in the native application 104 b. The user may select link 132 by using user input 134. In some instances, after the user input 134, the data set 108c may be transmitted to the search engine 110, which search engine 110 then updates the index 120 after the mobile device 106b accesses the native application 104 b.
FIG. 3 is a block diagram of a computing device 300 that may be used to implement the systems and methods described herein, either as a client or a server or multiple servers. Computing device 300 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers.
Computing device 300 includes a processor 302, memory 304, a storage device 306, a high-speed interface 308 connected to memory 304 and high-speed expansion ports 310, and a low-speed interface 312 connected to low-speed bus 314 and storage device 306. Each of the components 302, 304, 306, 308, 310, and 312 are interconnected using various buses, and may be otherwise mounted on a common motherboard as appropriate. The processor 302 may process instructions for execution within the computing device 300, including: graphical information for a GUI stored in memory 304 or on storage device 306 for display on an external input/output device, such as display 316 coupled to high speed interface 308. In other embodiments, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 300 may be connected together with each device providing portions of the necessary operations, e.g., as a server bank, a group of blade servers, or a multi-processor system.
Computing device 300 may be implemented in a number of different forms, as shown. For example, computing device 300 may be implemented as a standard server 320, or may be implemented multiple times in a group of such servers. The computing device 300 may also be implemented as part of a rack server system 324. Additionally, the computing device 300 may also be implemented in a personal computer, such as a laptop computer 322. Alternatively, components from computing device 300 may be combined with other components in a mobile device (not shown). Each of these devices may contain one or more computing devices 300, and an entire system may be made up of multiple computing devices 300 in communication with each other.
Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations of these implementations. Various such embodiments may include embodiments in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit instructions and data to, a storage system, at least one input device, and at least one output device. Various such embodiments may additionally or alternatively include embodiments in a computer-readable medium having stored thereon instructions that, when executed by one or more computers, cause the one or more computers to perform the method of the present invention.
The systems and techniques described here can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., as an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here, or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the internet.
A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other embodiments are within the scope of the following claims.