Browsing content over the Internet typically involves providing input to a web browser application and the application retrieving a web page in response to the input. The input can be selection of a web link for another web page, selection of a button on a web page, or some other input that requires the web browser to retrieve a web page over the Internet. Typically, the web browser application only provides the requested web content to a user through the browser interface.
Some web content providers generate web pages that provide previews of content from other web pages provided by that provider. The web page provider may provide a first web page and a second web page that may be accessed separately. The first web page may list a number of links to other web pages provided by the same provider, including a web link to the second web page. For example, some web-based new services provide a first web page with a list of links associated with different news stories. Each link in the first web page may be expressed as text comprising a news headline. When a user positions a cursor over the headline link, a text box may appear near the link. The text box may include a portion of the article contained on a second web page and associated with the link headline. Thus, by placing a cursor over the headline link in the first page, it appears that a portion of the story contained in the second web page appears in a pop-up box near the headline selected.
Text boxes providing a preview of content from a second web page and provided in response to positioning a cursor over a link are generally static in nature and hard coded within the first web page. This requires that the content provider have programmers who program the content of the text box so that it appears it is a preview from a different page. The text box content and other static links or manually fed feeds provided by the web service provider is not determined dynamically. Rather, the text box content is coded into the first web page to correspond to the content in a second web page for which it is supposed to provide a preview.
The technology described herein pertains to providing a requested content page with additional relevant content that is dynamically generated. A page originally requested by a browser application, either in response to user input or some other browsing event, is generated and examined. In some embodiments, the examination may include parsing of the requested content page to determine key words, address information, and other information for which relevant content may be retrieved. The relevant content is determined based on a wide set of attributes, including the results of the content page examination and other content, connectivity and user behavior statistics. After retrieving the relevant content, the retrieved content is embedded into the requested content page and provided to the requesting user.
The retrieved relevant content may be provided to a user in several ways. For example, the retrieved relevant content may be provided with the requested content page in a designated portion within the requested content page, in the content page near related content, displayed in response to user input as a pop-up window or in a preview pane, or in some other manner. These embodiments are intended as examples, and other methods for providing the retrieved relevant content are possible and considered within the scope of the present technology. Relevant content can be determined and retrieved by a relevant content engine implemented as a server application, client application or browser application plug-in.
An embodiment provides a content page in response to receiving a request for content page data. The content page is parsed to generate parse results. Relevant content is then retrieved which is associated with selected portions of the parse results. Data associated with the relevant content is then embedded in the received content page information. After embedding the data, the content page is provided with the embedded relevant content data to a client device.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the 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 present technology, roughly described, provides a requested content page with additional relevant content that is dynamically generated. A page originally requested by a browser application, either in response to user input or some other browsing event, is generated and examined. In some embodiments, the examination may include parsing of the requested content page to determine key words, address information, and other information for which relevant content may be retrieved. The relevant content is determined based on the results of the content page examination. After retrieving the relevant content, the retrieved content is embedded into the requested content page and provided to the requesting user.
The retrieved relevant content may be provided with the requested content page in several different ways. In some embodiments, the relevant content is positioned in a designated portion within the requested content page. For example, the retrieved relevant content may be provided within a frame positioned at the bottom, side, or some other position within the requested content page. In some embodiments, the relevant content may be positioned in a content page near the related content. For example, for a content page that includes an address somewhere in the page, relevant content consisting of a map may be provided in the vicinity of where the address (the related content) is displayed in the page. In some embodiments, the relevant content is not initially displayed in the content page, but is displayed in response to user input. For example, the relevant content may be provided in a preview pane in response to receiving a mouse over input associated with the related content, as a pop-up window in text box or a new page, or in some other manner in response to user input. In any case, the content in the original web page for which relevant content exists may be highlighted or otherwise marked within a requested content page to indicate that additional relevant content is available for that element. These embodiments for providing relevant content are intended as examples, and other methods for providing the retrieved relevant content are possible and considered within the scope of the present technology.
Relevant content can be determined and retrieved by a relevant content engine. The relevant content engine may be implemented on a server or client, distributed over several machines and/or devices, or be implemented in some other way. When implemented on a server, the relevant content engine is implemented as an application residing on the server and may communicate with a remote browser application, other servers, and other hardware and software. When the engine is implemented on the client, it may be implemented as a browser application plug-in, a client application, or in some other manner and communicate with a client browser application and one or more remote servers over a network.
Client device 110 is a computing device that communicates with one or more servers such as network server 130 over network 120 and includes browser application 112. Browser application 112 may retrieve content pages from a network server, provide an interface, provide content pages in the interface and receives input through the interface. In some embodiments, browser application 112 may be provided as “Internet Explorer” by Microsoft Corporation of Redmond, Wash.
Network 120 may be implemented as a private or public network, such as the Internet, an intranet, a WAN, a LAN, extranet, a combination of these networks or other network or networks. Client application 110 and network server 130 may communicate over network 120, which may be implemented as the web.
Network server 130 provides content pages, such as a web page, and/or content page data to requesting client devices as part of a network service, such as a web service, and communicates with client 110 over network 120 and application server 140. In some embodiments, when network 120 is implemented as the Internet, network server 130 may be implemented as a web server. In any case, network server 130 may provide content pages to browser application 112 on client 110 and may be implemented as one or more servers.
Application server 140 communicates with network server 130 and data store 150 and includes relevant content engine 145. Application server 140 may be invoked by network server 130 to generate at least a portion of requested content page. In response, application server may generate at least a portion of the content page and/or invoke one or more data stores and/or other backend servers to generate data for the content page. Application server may include one or more applications and comprise one or more servers.
Relevant content engine 145 may access content pages to be sent to browser application 112 through network server 130 and network 120. After accessing a content page, engine 145 may analyze and modify the content page to include additional relevant content within the page. The relevant content added to a content page by relevant content engine 145 is dynamically determined and added to the content page to be displayed in response to user input or not.
Relevant content engine 145 may include code and/or other program instructions that may analyze and modify a requested content page. In particular, content engine 145 may examine and/or parse a content page provided to a client, detect key words, address and location information, stock symbols and other stock data, links to other content pages and other information in a content page as a result of the parsing or examination, retrieve content relevant to selected parsing results and embed the relevant content into the original content page. After content engine 145 analyzes and modifies a requested content page, the modified content page is eventually provided to requesting client 110 by application server 140 and sent to client device 110. This is discussed in more detail below.
In some embodiments, at least a portion of the relevant content added to a requested content page by relevant content engine 145 will be from a network provider or network service other than that associated with network server 130 or application server 140. For example, each of relevant content servers 160-170 may have a different domain (and be associated with a different network service provider) than application server 140 and network server 130. Relevant content engine 145 may retrieve data from relevant content servers 160 or 170, each of which may perform services to provide content to a requesting engine. The service may include providing a map from an address or location provided, perform general Internet searches for information related to a key word provided by engine 145, determine musician and album information for a particular song title, determine a current stock price and other information for a stock symbol, and other services which provide relevant content to a requesting engine.
Data store 150 may be implemented as any back-end server that provides a content page requested by a user. Data store 150 may communicate with application server 140.
Client device 110 includes browser application 112 and relevant content engine plug-in 114. Relevant content engine plug-in 114 is a plug-in for use with browser application 112 and performs similar functions as relevant content engine 145 discussed above with respect to
Unlike the systems of
Browser application 112 sends a content page request to network server 130 over network 120 in response to detecting the event at step 420. After receiving the request, application server 140 generates a content page in response to the request at step 435. To generate the content page, application server 140 may invoke data store 150 or some other server to process at least a portion of the request. The content page generated by application server 140 is that which was requested at step 420.
The generated content page is transmitted to a requesting client device at some point at step 435. The content page may be sent immediately after generating the content page at step 430 (after which the content page is processed by one of relevant content engines 114 or 116 located on client 110) or after the page is processed by content engine 145. Thus, the point in the process at which the content page is sent to client device 110 depends on the location of the relevant content engine code.
The generated content page is accessed and parsed by a relevant content engine for key words, address information, links, music files, stock symbols, and other content at step 440. In some embodiments, key words may be nouns or subjects appearing in sentences, words that appear two or more times in a sentence or other group of text, or some other word detected as a key word. In some embodiments, key words may be detected by any of several algorithms for detecting key words in a group or text or within a web page which are well known in the art. Content such as addresses may be detected as numbers followed by text which includes recognized words such as street, avenue, boulevard, or some other recognized address label. Several algorithms exist for detecting key words, addresses, music files, and stock symbols, all of which may be used in accordance with the present technology.
After parsing the generated content page, a relevant content engine retrieves relevant content from one or more remote servers, such as for example relevant content servers 160 and 170, based on the parsing results at step 450. The relevant content engine may retrieve several types of relevant content from the servers, including map data, Internet content associated with a key word, images contained on linked pages, stock prices, and other data. Retrieving relevant content from one or more relevant content servers is discussed in more detail below with respect to
A content engine provides relevant content to browser application 112 at step 460. The relevant content page may be provided to browser application 112 by relevant content engine 145 on application server 140, relevant content engine client 116 or plug-in 114.
Browser application 112 may modify the content page by embedding the relevant content into the content page, or otherwise provides the relevant content as an amendment to or addendum to the original page, at step 460. In some embodiments, relevant content is embedded to display within the content page automatically in response to receiving the request for the content page by browser application 112. In some embodiments, the relevant content is embedded and displayed in response to user input received through the browser application, such as when the user positions a cursor over a content page element related to the relevant content. Modifying a content page to embed relevant content in the page is discussed in more detail below with respect to
The browser application provides the content page and relevant content to a user through a browser interface at step 480. As discussed above, the relevant content may be embedded within the content page, provided as an addendum, or in some other manner. The relevant content itself may be initially provided within the content page or in response to user input (or an internal event) received through the
A determination is made as to whether the parsing results include a link to another content page at step 540. If the results do not include links to any other content pages, the method of
A determination is then made as to whether the parsing results include music file information at step 560. Music file information may be detected by comparing phrases and/or text within the requested content page to a list of known music files. In some embodiments, a music file may be detected by recognizing the type of file, for example an MP3 file. If the parsing results indicate that music file information is contained in the requested content page, the relevant content engine may retrieve artist, album, and/or other information for the music file at step 570. The information may be retrieved by a relevant content engine from one or more relevant content servers 160-170. After retrieving information, the method of
Content is retrieved for the most relevant key words detected in the parsed content page at step 580. Several methods may be used to detect a key word within the parsed content page. In some embodiments, a relevant content engine may examine the title, frame headlines, text, image metadata, and other information within the content page to determine one or more key words. Retrieving content from the most relevant key words is discussed in more detail below with respect to
In some embodiments, additional information may be used to retrieve relevant information associated with a requested content page. In some embodiments, information for stock symbols, company names, or other corporate information may be used to retrieve stock data, company website information or other company data as relevant content. In some embodiments, information may be detected regarding a user currently interfacing with a browser application. The information may include identifying any applications stored on the computer, open applications, the time zone of the user, and/or other information. These are intended as examples only, and other content contained in a content page may be used as a basis to retrieve relevant content.
Key words are detected in the description of a content page image or in image metadata at step 620. The metadata may be data included in the image file which is accessed by a relevant content engine. In some embodiments, in addition to analyzing the image itself, a relevant content engine may examine descriptive text associated with the image. The descriptive text may appear as text positioned within the same frame as the image or other description information for the image. Next, key words may be detected in a content page frame description at step 630.
After detecting key words within a requested content page, the most popular key words are selected by a relevant content engine at step 640. The most popular key words may be the most relevant key words, such as key words associated with a noun, place, or other element, key words that appear in the content page more than a minimum number of times, the most common set of key words, for example the most popular three or four key words in a content page, or other key words. After selecting the most popular key words, relevant content for the selected key words is retrieved by a relevant content engine at step 650. The relevant content may include search results provided by web-based engines for the key words. The relevant content retrieved by the relevant content engine is stored locally until it is embedded into the requested content page by the engine.
A determination is made as to whether the selected relevant content should be displayed near the related page content or in a designated location in the content page for relevant content at step 740. For example, for relevant content comprising a map, the related page content may be the address contained in the content page from which the map was generated. Determining whether or not to place the map by the pre-existing address in the content page may be based on a setting configured by a user, a service administrator, or pre-set. If the selected relevant content is to be displayed near the related page content, the method of
When placing relevant content portions near related content in a content page, the content page is modified by embedding the selected relevant content in the content page at a location near the related content at step 750. For example, with respect to
A determination is made as to whether more relevant content portions exist to be added to the content page at step 770. This determination identifies whether there are more maps, key word content, stock data or other relevant content to add to the content page. If no additional relevant content exists to be added, the method of
A first portion of the retrieved relevant content is then selected at step 830. A selected portion of the retrieved relevant content is then embedded into the content page as content to be provided in response to a mouse-over input for the related content at step 840. Thus, instead of embedding the relevant content within a portion of the content page to be displayed with all the other content, the relevant content is embedded in the content page in such a manner as to only be displayed in response to a particular input, such as mouse-over input. For example, the interface of
After embedding the selected portion of relevant content into the content page, a determination is made as to whether more relevant content portions exist to be added to the content page at step 850. If additional relevant content portions exist to be added, the next portion of relevant content is added at step 860 and the method of
The related links frame 950 includes a list of links associated with construction, San Francisco real estate, and other real estate information. Any of the relevant content engines of
Computing environment 1100 of
The technology described herein is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the technology herein include, but are not limited to, personal computers, server computers, hand-held or laptop devices, mobile phones or devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The technology herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The technology herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 1110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 1110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 1110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 1130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 1131 and random access memory (RAM) 1132. A basic input/output system 1133 (BIOS), containing the basic routines that help to transfer information between elements within computer 1110, such as during start-up, is typically stored in ROM 1131. RAM 1132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 1120. By way of example, and not limitation,
The computer 1110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 1110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 1180. The remote computer 1180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 1110, although only a memory storage device 1181 has been illustrated in
When used in a LAN networking environment, the computer 1110 is connected to the LAN 1171 through a network interface or adapter 1170. When used in a WAN networking environment, the computer 1110 typically includes a modem 1172 or other means for establishing communications over the WAN 1173, such as the Internet. The modem 1172, which may be internal or external, may be connected to the system bus 1121 via the user input interface 1160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 1110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
The foregoing detailed description of the technology herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. The described embodiments were chosen in order to best explain the principles of the technology and its practical application to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the technology be defined by the claims appended hereto.