Searching based on messages

While interacting with a messaging interface, keywords or other search criteria are automatically identified and used to perform a search. Search results and sponsored links (or advertisements) are displayed to the user within the messaging interface. To alleviate privacy concerns, this process will not be performed unless the user has explicitly opted-in to the search feature. In another embodiment, the user can highlight keywords in an outbound or inbound message to trigger a search without leaving the messaging interface. In another embodiment, the user can input a search keyword or phrase to trigger a search without leaving the messaging interface.

BACKGROUND

The evolution of computers and networking technologies from high-cost, low performance data processing systems to low cost, high-performance communication, problem solving, and entertainment systems has provided a cost-effective and time saving means to lessen the burden of performing every day tasks such as correspondence, bill paying, shopping, budgeting information and gathering, etc. For example, a computing system interfaced to the Internet, by way of wire or wireless technology, can provide a user with a channel for nearly instantaneous access to a wealth of information from a repository of web sites and servers located around the world. This information is accessible to the user through actively querying a search engine and/or traversing through related links.

Typically, the information available from websites and servers is accessed by way of a web browser executing on a web client (e.g., a computer). For example, a web user can deploy a web browser and access a web site by entering the web site Uniform Resource Locator (URL) (e.g., a web address, an Internet address, an intranet address, . . . ) into an address bar of the web browser

In some instances, a user knows the URL to the site or server that the user desires to access. In such situations, the user can access the site, as described above, by way of entering the URL in the address bar of the browser and connecting to the desired site. In other cases, the user will know a particular site that such user wishes to access, but will not know the URL for such site. To locate the site, the user can simply enter the name of the site into a search engine to retrieve such site. In most instances, however, users desire to obtain information relating to a particular topic and lack knowledge with respect to a name or location of a site that contains the desired information. To locate such information, the user can employ a search function (e.g., a search engine) to facilitate locating the information based upon a query. Due to an increasing amount of users becoming sophisticated with respect to the Internet, searching has become a massively important functionality.

Networks (e.g., the Internet) and computing devices have also enabled users to quickly communicate with one another through utilization of electronic messaging (e.g., email). More particularly, users can specify a subject within a subject line and generate a body of a message. The message can then be delivered nearly instantaneously to specified users. Furthermore, electronic messaging can be utilized to transfer files from a first computer to a second computer through attaching a file to an email message. Due to ease of use and ease of access, email utilization is commonplace in personal and business settings.

While e-mail and search are two of the most important applications associated with computers and networks, there has been very little intermingling between such applications. For instance, if an e-mail message includes terminology that a user is unfamiliar with or includes text in which a user wishes to obtain more information, such user typically must open a search application and manually execute a search for a word or phrase. Requiring such manual searching can negatively affect user-experience with respect to an email application as well as a search function, and often a user will not search to avoid inconvenience, leaving the user ignorant with respect to information associated with text within the e-mail message. Such problems can exist with respect to any sort of electronic document/communication, including an instant messaging conversation, a text message, and the like.

SUMMARY

A system is provided that allows keywords or other search criteria to be identified while interacting with a messaging interface. The keywords or other search criteria are then used to perform a search of the Internet (or other domain). The results are presented to the user within the messaging interface so that the user need not leave the messaging interface to access a search interface. In some embodiments, the search is automatically performed, while in others, a list of possible searches is presented to the user. Combinations are also possible. In some embodiments, to alleviate privacy concerns, the process will not be performed unless the user has affirmatively opted-in to the search feature. In one option, the user can highlight keywords in an outbound or inbound message to trigger a search without leaving the messaging interface. In one embodiment, the user can input a search keyword or phrase to trigger a search without leaving the messaging interface. That is, keywords entered into a search box in a search pane will have results displayed in the search pane.

One example of the technology described herein is implemented as part of an email system; however, the technology can be used with other systems.

One embodiment of the above-described technology includes providing a messaging user interface and providing a user with an option to consent to automatic searching while using said messaging user interface. If the user consents to the automatic searching, then search criteria is automatically determined based on at least one message in the messaging user interface and a search is caused to be performed based on determined search criteria. The results from the search are provided within the messaging user interface if the user had consented to the automatic searching. The search criteria can be anything used to perform a search.

Another embodiment includes providing a messaging user interface, automatically determining multiple search criteria options based on at least one message in the messaging user interface, providing a user with a choice of the multiple search criteria options, receiving a selection of one of the multiple search criteria options, causing a search based on the selected search criteria option, and providing results from the search within the messaging user interface.

The technology described herein can be implemented using hardware, software, or a combination of both hardware and software. The software used is stored on one or more processor readable storage devices including hard disk drives, CD-ROMs, DVDs, optical disks, floppy disks, tape drives, RAM, ROM, flash memory or other suitable storage devices. In alternative embodiments, some or all of the software can be replaced by dedicated hardware including custom integrated circuits, gate arrays, FPGAs, PLDs, and special purpose processors. In one embodiment, the software is used to program one or more processors. The one or more processors can be in communication with one or more storage devices, peripherals and/or communication interfaces.

DETAILED DESCRIPTION

The technology described herein allows a user to search the Internet (or another domain) while using a messaging system (e.g., email system), without having to leave the messaging system's user interface. This searching feature is end user initiated (e.g., the user explicitly opts-in), and will provide a search results and advertisements based on keywords, user information, or other search criteria in (or related to) one or more messages. In some embodiments, instead of searching the Internet, the search can be performed on a local computer, database, network, other domain, or some combination of the above.

In one embodiment, there will be three modes of operation: manual mode, first automatic mode, and second automatic mode.

In manual mode, the user will be allowed to select/highlight one or more keywords in their messages, and the system will call a search API (Application Program Interface) using the selected keywords in order to cause a search and advertisement request to be performed based on those keywords. Advertisement and search results for the selected keywords will be displayed in the messaging user interface. One example of a messaging user interface can be a web page for an email system that is displayed via a browser. In one embodiment, the system can separately call a search API and an advertisement API for search and advertisement results. The communication with the search and advertisement systems is not limited to communication via an API. Other schemes can also be used. In one embodiment, a single system can provide the email services, search services and advertisement services, of some subset thereof.

In the first automatic mode, a process will automatically select one or more keywords (or other search criteria) from one or more messages based on a relevancy rating. This process will rank the keywords in order of relevancy. The most relevant keyword (or most relevant search criteria), or all or X keywords will be provided to a search engine via an API. That search engine will return search results and/or targeted advertisement results. In another embodiment, the system will send the keywords to separate search and advertisement systems. Upon receiving the targeted advertisements and search results, the system will display the search results and targeted advertisements within the messaging user interface.

In the second automatic mode, keywords, phrases or other search criteria will be automatically identified based on relevancy rating from a particular one or more messages. The messaging system will then display those keywords in a “keywords well” within the messaging interface. A keyword well is a user interface component that lists the words extracted from the content on which to perform the search. The user will be provided the opportunity to choose one of the keywords (or other criteria) in order to trigger a search of the Internet (or other domain). In response to the user choosing a keyword (or other criteria) that keyword (or other criteria) is provided to one or more APIs in order to cause a search to be performed based on that keyword (or other criteria). Advertisements and search results are returned and displayed within the messaging user interface. In an alternative implementation, the only difference between the first automatic mode and the second automatic mode is that the user can hide the Search Pane feature in first automatic mode but not in second automatic mode.

FIG. 1provides an example of a messaging user interface100. In one embodiment, messaging user interface100is provided in connection with an email system. The embodiment depicted inFIG. 1is for a web-based email system. In other embodiments, other types of email systems can be used. In addition, the technology described herein can be used with other types of messaging systems including, but not limited to, instant messaging systems, chat systems, video conferencing systems, voice communication systems, and web log publishing systems.

Messaging user interface100includes toolbar102with several drop down menus. Each drop down menu is identified by a title such as File, Edit, View, Favorites, Tools, and Help. In one embodiment, messaging user interface100is provided within an Internet browser. One example of an Internet browser is Internet Explorer from Microsoft Corporation. Messaging user interface100also includes toolbar104, which includes several tools associated with the browser. The browser also includes an address field106and a “go” button108. By inserting an address in address field106and selecting “go” button108, the browser navigates to the address inserted in the address field106. A user attempting to use the browser to access an email system would insert the address for the email system in address field106. One example of suitable email system is the Hotmail email system from Microsoft Corporation. However, other email systems can also be used. A user wishing to access the Hotmail system will enter “www.hotmail.com” into address field106and select “go” button108. In response to that address, the Hotmail user interface will be provided to the user.

Messaging user interface100includes a search field110for entering search terms in order to search on the Internet (or within another domain). After entering a search term in field110, the user would select button112to initiate the search. Additionally, search field114is provided to enter search terms that will be used to search through various messages in the email system. By entering a search term in field114and selecting button116, that search will be commenced. User interface100also includes a series of buttons130,131,132,133,134,135and136(more or less buttons can also be used). These buttons will have various functions depending on the particular mode of the email system. For example, the buttons can be used to reply to a message, forward a message, delete a message, compose a new message, move the message to a new folder, order the arrangement of messages, or provide other tools. Messaging user interface100also includes a folder list140which lists various folders. In one example, the folders include an Inbox, Drafts, a Junk Email folder, a Sent Items folder, and a Deleted Items folder. Other folders can also be used. Folder list140includes a usage bar142, which indicates how much of the available storage is being used. The gray portion of the bar indicates storage space used and the blank portion of the bar indicates free space.

Messaging user interface100also includes message list144, which lists all the messages in a selected folder. If the Inbox is selected in folder list140, then message list144will list all the emails in the Inbox, which is referred to as the Inbox view. Similarly, if the Sent Items folder is selected in list140, then message list144will list all the emails in the Sent Items folder. The message list144will work similarly for other folders. In one embodiment, message list144will indicate the sender, the subject, date, and whether any attachment is included (e.g., by displaying a paperclip). By selecting one of the messages in the message list144(see shaded message from Amy Smith on date2), the selected message is depicted in review panel146. In one embodiment, by double clicking on a message in message list144, a separate window can be opened to view the particular message. The message can also be displayed within the email application. Review panel146shows the header portion of148and the body150of the message. Header portion148indicates who the message is from, who the message is to, and what the subject is. The body of the message150indicates the text of the message. In one embodiment, user interface100can include one or more advertisements152. In other embodiments, no advertisements are included.

User interface100also includes search tab160. By selecting search tab160(e.g., by clicking on the tab with the mouse or other pointing device), the user has ability to opt-in to the search feature described herein. If the user has not yet opted into the search feature, then when the user selects search tab160the user is provided with a message inviting the user to opt-in to the search feature. For example,FIG. 2shows user interface100after the user has selected search tab160. As can be seen, advertisement(s)152have been replaced with text seeking consent to use the automatic advertisement feature. This text explains what the feature is about and asks user whether the user wants to enable the feature. At the bottom of the text are four choices: OK button, Cancel button, Privacy link, and Help link. By selecting the OK button, the user is opting-in to the automatic search feature. By selecting the Cancel button, the user is not opting-in to the automatic search feature. If the user selects the Help link, the user is provided with support. If the user selects the Privacy link, the user is provided with a privacy statement.

If the user clicks the OK button and the system is operating in the first automatic mode, the system will automatically identify a set of keywords for the email being selected (e.g., the email depicted in review pane146). One (or more) of the keywords will then be presented to a Search System and an Advertisement System. The Search System will determine a set of search results based on the keyword. The Advertisement System will target a number of advertisements based on the keyword. In other embodiments, search criteria other than keywords can also be used. After the search and advertisement targeting have been completed, the results will be provided to the user. One example of a search system is the MSN search service at www.msn.com.

FIG. 3depicts user interface100containing the results of searching and targeting advertisements. A search pane is depicted where text170used to be. The search pane includes a keyword section180, sponsored sites section188, and search results section190. Keyword section180lists the keywords identified from the email under consideration. In other embodiments, keywords can be based on more than one email. For example, the keywords can be based on all the emails in a particular folder selected, or all the emails in the email system related to that particular user. In one embodiment, the search results are based on only one keyword or one set of search criteria. The system will determine which is the most relevant keyword and only that keyword will provided to the Search System and Advertisement System, or the system will submit all keywords to the Search System and Advertisement System. The keyword provided to the search system will then be (optionally) highlighted. For example, three keywords were identified inFIG. 3: sushi, Fremont, and fireworks. The keyword “sushi” is shown to be bold and italic to indicate that it was the keyword sent to the search system. The other two keywords were identified from the selected message, but sushi was ranked higher so it was sent to the search system. The keyword section180also includes a search field182and button184to enable a search. The user can manually type in a search in order to search the Internet or other domain. Search and advertisement results will appear in the Search Pane.

Below keyword section180is sponsored sites section188, which lists a set of advertisements (also called sponsored sites). Typically, there will be a title for each sponsored site, a link indicating the URL, and some type of tagline. Below sponsored sites section188is search results section190. The search results can be in many forms. In one example, the search results will include a title of the target site, a summary or description of the target site, and a link which indicates the URL of the target site. Other forms can also be used.

In keywords portion180, each of the keywords identified are depicted as a link. Thus, if the user selects one of the keywords that were not used for this search, the system will then send that keyword to the search and advertisement systems in order to perform searching and advertisement targeting based on the new keyword. The new results will be presented to the user in a form similar to that ofFIG. 3.

As described above, the system includes more than one automatic mode. The discussion above with respect toFIG. 3pertains to the operation of the first automatic mode. The second automatic mode includes first presenting the keywords identified in the email to the user prior to utilizing the search and advertisement systems. This is depicted inFIG. 4, which shows keyword portion192. After user has opted-in to the automatic search feature, keywords will be automatically identified for the message (or messages) under consideration. Those keywords are then displayed to the user in keyword portion192. The user then has the option to choose one of the keywords. In response to the user choosing a keyword, the chosen keyword will be provided to the search and advertisement systems. The results will then be depicted in a form similar to that ofFIG. 3. Note that some embodiments do not require a user to opt-in.

The system also includes a manual mode. In one embodiment, the manual mode allows the user to highlight text of an email while an email is being composed or read.FIG. 5provides one example of the manual mode being utilized while the email is being composed.FIG. 5shows the email system with the compose form200. In one embodiment, compose form200includes “To” field202for entering the target address of the email, “Subject” field204for entering the subject of the email, and toolbar206which includes various tools for formatting the email text. Underneath toolbar206is an area for the user to type in the text of the email.

FIG. 5shows that the user highlighted the word “sushi.” That is, instead of being black text on a white background, the text “sushi” is white text on a black background. In one embodiment, a user highlights by dragging the cursor. Other methods for highlighting can also be used. A user could also highlight a word or phrase while reading an email in the inbox. After highlighting the word “sushi,” the user right-clicked on the mouse (by selecting the right button on the mouse or other pointing device). In response to right-clicking, menu212is depicted next to cursor210. Menu212provides various options for formatting and an option for searching. If the user then selects the “search” option of menu212, the highlighted word will then be presented to the search system and advertisement system. The results from the searching and advertisement targeting will be provided in a format as depicted byFIG. 6. The interface ofFIG. 6includes keyword portion220, which shows the one keyword (or phrase) that was highlighted. Keyword portion also includes a search field222with button224to initiate a search of the Internet. The user interface also includes sponsored sites section226and search results section228that are similar to sponsored sites section188and search results section190ofFIG. 3. Note that more than one keyword may be highlighted. The function of providing menu212and initiating the search can be performed at the client using Java Script. In some embodiments, the sponsored sites section226and search results section228will include a “Insert this link” option. If the user selects this option, the associated link is added to the email message. In one embodiment, the link can be added by hyper-linking the highlighted word or phrase. If the user has not highlighted a word, then the link can be added a specified distance below the current or last cursor position.

FIG. 7is a block diagram depicting various components of one embodiment of a system that can provide a service in accordance with the technology described herein.FIG. 7shows a client computing device300which can be a computer, mobile telephone, handheld PDA, smart appliance, or other computing device. Client computing device300includes an Internet browser302or other type of browser. Browser302is in communication with an Internet-based email service. To start the interaction with the email service, browser302would first communicate with Login Server310. Login Server310communicates with User Profile Server312to verify that a username and password are correct, as part of an authentication process. After a user is authenticated, browser302communicates with Front Door Server320. In one embodiment, there may be many Front Door Servers320which are accessed via a load balancer. Front Door Server320provides the email services to browser302. Front Door Server320includes a Keyword Extractor (KEX)322, which is used to extract keywords from one or more messages for a particular user. In addition Front Door Server320includes configuration files that contain values that control availability of the feature by market and class of user, and control preferences and relevancy thresholds. Keyword Extractor322makes use of various files or other data structures, including common word file324, sensitivity word file326, and prior query log file328. Front Door Server320is in communication with User Data Server330, which stores personal information about the various users including the user's preferences, demographic information, geolocation information, behavior information, psychographic information, and email data. Front Door Server330is also in communication Search System340, which includes an Internet Search System (e.g., MSN) that can search the Internet or other domain. Search System340is in communication with Advertisement System342. In one embodiment, Front Door Server320provides one or more keywords to Search System340. Search System340performs a search of the Internet (or other domain) based on the presented keyword(s). Search System340also presents the one or more keywords to Advertisement System342. Advertisement System342uses the keyword(s) to identify a set of targeted advertisements for the user. In another embodiment, Front Door Server320can communicate directly with Advertisement System342. The operation of various components depicted inFIG. 7will be explained in more detailed with respect to the flowcharts ofFIGS. 8-15. Other examples of systems that can serve advertisements can be found in U.S. patent application Ser. No. 11/030,222, “Contextual Ad Processing On Local Machine,” Shahine and Rashid, filed on Jan. 6, 2005; and U.S. patent application Ser. No. 11/139,750, “Advertising In Application Programs” Joshua Goodman and Christopher Meek, filed on May 27, 2005, both applications are incorporated herein by reference in their entirety.

FIG. 8is a flowchart describing one embodiment of a process for initiating the email service associated withFIGS. 1-7. In step402, a user operating browser302accesses a login page for the email service. In one embodiment, that login page is accessed by entering a URL for the login page and browser202navigating to the login page by contacting Login Server310using HTTP. The login page will be provided back to browser302and displayed within browser302on client computing device300. In one embodiment, the login page will include a field to enter a username and a field to enter a password. In step404, the user provides the user name and password to the login page. That username and password are sent from client device300to Login Server310. Login Server310contacts user profile312in step406in order to access the user profile associated with the username. In step408, the login server310authenticates the user based on the username and password data stored in the user profile obtained from User Profile Server312. In step410, login server310will redirect browser302to Front Door Server320. Based on the user data passed to Front Door Server320(originally stored in User Profile Server312), Front Door Server320accesses the email information in User Data Server330associated with the identity was authenticated in step408. Based on that email data from User Data Server330, Front Door Server320will create a user interface. In one embodiment, the user interface is created using HTML, Java Script and/or various media (e.g., images, sounds, etc.). That user interface is provided to user by browser302in step414. In one embodiment, the result of step414could include messaging interface100described above (see e.g.,FIG. 1).

In step416ofFIG. 8, Front Door Server320creates, populates and stores a cache of keywords for the user. In one embodiment, that cache of keywords is stored as a cookie on client computing device300. The contents of the cache will include a set of default keywords that can be used when no keywords can be identified by Keyword Extractor322. In one embodiment, the default keywords are based on relevancy to the stored messages in User Data Server330. In another embodiment, the default keywords can be based on user demographics, user profile information, or user suggestion/input.

Once the user interface is depicted to the user, the user can choose a folder (from folder list140) or an email (from message list144). In response to a message being selected, the process inFIG. 9is performed. In one embodiment, the process ofFIG. 9is performed as part of the process of reading email in the user's Inbox or other folder.

In step450ofFIG. 9, a particular message is selected. In step452, that message is displayed, as depicted inFIG. 1or in another suitable manner. In step456, folder list140and message list144are displayed. In step458, other remaining portions of the user interface are displayed. In step460, it is determined whether the search pane is open. In one embodiment, there can be a cookie on the client device300indicating whether the search pane is open or closed. For example,FIG. 1shows the search pane closed, whileFIGS. 2-4show the search pane open. If the search pane is not open, then the system waits for the search tab160to be selected (step462). After the search tab has been selected, it is determined in step464whether the search feature has already been consented to (whether the user has opted in). In one embodiment, there can be a cookie stored in the client device or a flag stored in the user profile in User Data Server330indicating whether the user has consented to the search function. If the search feature has not already been consented to, then in step470, the consent text is displayed. For example, consent text170ofFIG. 2is displayed. The system then waits for the user to make a selection between approving the consent text (e.g., selecting the “OK” button), disapproving of the consent text (e.g., selecting the “Cancel” button), or requesting further information (e.g., selecting the “Privacy” link or “Help” link). If the user does not approve of the consent text (e.g., selecting the “Cancel” button), then the Search pane is closed in step474and display advertisement152is added back to the user interface. If the user asks for other information, then the other information requested (e.g., “Help” or “Privacy”) will be displayed in step476. If the user does consent to the using of this search feature, then that consent is stored in the cookie or flag discussed above (step480). After storing the consent, the process continues in step482. Similarly, if in step464it is determined that that search feature was already consented to, then the process continues at step482.

In step482, keywords or phrases are automatically identified for the particular message selected. In another embodiment, step482is performed for the message selected. In another embodiment, step482is performed for all messages within the selected folder. In another embodiment, step482is performed for all messages associated with the user. Step482can include identifying one keyword or multiple keywords. In addition, search criteria other than or in addition to keywords can also be identified. In step484, Front Door Server320presents the keyword(s) to Search System340and Advertisement System342. If operating in the first automatic mode, the most relevant keyword is (or all keywords are) automatically provided to Search System340and Advertisement System342. The results from Advertisement System342and Search System340are presented back to Front Door Server320, which provides those results to browser302in step486. Those results are presented to the user via browser302. For example, the interface ofFIG. 3can be provided to the user. In response to that interface, the user may select one of the other keywords presented in keyword portion180. If so, the process loops back to step484and a new search is performed based on the new keyword selected. In alternative embodiments, the searching on the Internet (or other domain) and identification of advertisements can be based on information other than the text of a message; for example, message characteristics (e.g., length of message, presence of an attachment, etc.), images found in or associated with the message, audio found in or associated with the message, video found in or associated with the message and user behavior can also be used. In some implementations, these other sources of information can be used to identify search criteria that is used for subsequent searching and identification of advertisements.

FIG. 10is a flowchart describing more details of the process of identifying one or more keywords (e.g., step482ofFIG. 9). The contents of the emails are stored on User Data Server330and accessed by Front Door Server320in order to create the HTML interface depicted on browser302. Keyword Extractor322has access to the email data from Use Data Server330. In step520, Front Door Server322determines whether the particular email message under consideration is junk email or otherwise unsafe email. In one embodiment, an unsafe message can be a message with a virus or other malicious software. If the email message under consideration is determined to be junk or unsafe by any process (step522), Front Door Server320will not request Keyword Extractor322to identify keywords. Instead, Front Door Server320will access the cache stored as a cookie on client device300in order to choose one or more of the default words in step524. These words from the cookie will be returned as a result of the process ofFIG. 10in step526.

If the email was not Junk email or unsafe email (step552), then Front Door Server320will access the text of the body and subject of the email (step530) and perform a HTML filter in step530. That is, the text will be passed through a filter that removes non-text elements. For example, if there are HTML tags within the text then the HTML tags will be removed. In addition, the system will remove all standard message headers from a message thread (e.g., To and From headers). Note that if the email is not in HTML format, the HTML filter need not be performed. Some messages (e.g., non-English messages) are encoded (e.g., base64, quoted-printed, uuencoded, etc.). For those messages, the system may decode the data and then perform HTML decoding (e.g., from &amp; −>‘&’) before removing HTML tags. In step534, the text that resulted from the HTML filter will be provided to the Keyword Extractor322. In step536, the Keyword Extractor322will perform a sensitivity filter based on sensitive words file326. If the email includes certain sensitive words related to obscene issues, sad issues, etc., the words identified by the sensitivity filter can be removed from consideration. Alternatively, the email can be discarded from keyword extraction if it fails the sensitivity filter. For example, if the email is about death, it may not be appropriate to do searching or targeting of advertisements based on the email. Similarly, if the email is obscene, the obscene content should not be used to perform searching on the Internet. If the email is discarded from keyword extraction, default words can be used for searching. In one embodiment, the sensitivity filter will use a off-limits keyword list that identified words that cannot be used as keywords. This list can be pre-populated by the distributor of the software, populated by the search system over time, populated by a user who can mark words to add to the off-limits keyword list, or a combination of the above. In one embodiment, a user can define a list of keywords that the user does not want to search on so that the sensitivity filter will remove those words from consideration.

In step538, Keyword Extractor322will count the number of times each word appears in the email text provided. The count for each word will be decremented if the word is a common word, as identified by common word file524. In step542, the counts are adjusted based on previous search data stored in log328. In one embodiment, log328is populated by information from Search System340. In another embodiment, log328can be residing on Search System340. If a particular set of one or more keywords are the same as or similar to past search queries, then the count for those particular searched keywords will be incremented. In another embodiment, any keyword that is similar to a prior search will automatically be selected as a keyword. In another embodiment, if there are no keywords or no keywords that meet the threshold (see below), then keywords identified from previous emails can be used. In another embodiment, words associated with quality queries can be given preference, where a quality query is a query that generates search results with high user satisfaction ratings. In step544, the keyword counts can be adjusted based on demographics. For example, if a keyword matches particular demographics data stored in the user profile, then the count for that keyword can be incremented. In step546, the Keyword Extractor322will return a ranked list of words. The ranking will be based on the counts for each word. In step547, post processing will be performed. In one embodiment, the post processing includes preventing words which look like duplicates or near-duplicates from being used. If a word is determined to be a duplicate, it will be deleted from the ranked list. In step548, Front Door Server320, which received the rank list of words from Keyword Extractor322, will compare the counts for each word to a threshold value which can be set by an administrator (based on trial and error). Any word having a count below the threshold will be removed from the list in step548. If there are no words above the threshold (at550), that is no words are left on the list after step548, then the process continues at step524by accessing the default words from the cache stored in the cookie in client computing device300. If there are one or more words remaining on the list after in step548, then in step552, those words remaining on the list are added to the cache stored in the cookie on computing device330. In step554, the words that were remaining on the list after step548and stored in the cache in step552are returned as the keywords to be used for future searching.

In other embodiments of the keyword extraction process, greater weight can be provided to words from different portions in the email. Additionally, more weight can be provided to words that are relevant to preferences in a user profile. In another embodiment, the keyword extraction process can be performed on client computing device300.

Other processes for identifying keywords can also be used. More information about keyword identification can be found in U.S. patent application Ser. No. 11/218,124, filed on Sep. 1, 2005, titled “Implicit Queries For Electronic Documents,” inventors Joshua T. Goodman, Kristin D. Bromm, Denise D. Hui, Vitor Rocha de Carvalho, incorporated herein by reference in its entirety.

FIG. 11Aprovides a first embodiment of a process for performing the searching of step484ofFIG. 9. In step602ofFIG. 11A, one or more keywords that have been previously identified are transmitted by Front Door Server320to Search System340. If the system is operating in the first automatic mode, then the most relevant (e.g., highest ranked) keyword is sent. In one embodiment, the keywords are provided to Search System340with a request to search using an API for Search System340in the SOAP protocol. The message requesting the search will also include a value indicating the number of advertisements to return with the search results and a value indicating the number of search results to return. If the number of advertisements is zero, then Search System340will understand the request to not include a request to target advertisements. In step604, Search System340sends the keyword with a request to target advertisements to Advertisement System342. In response to the request from Search System340, Advertisement System342will identify advertisements most relevant to the keyword and provide those advertisements to Search System340in step608. Search System340will identify sites on the Internet that are most relevant to the keywords and package those search results with the advertisements into an XML file. The XML file will be returned to Front Door Server320in step610.

In another embodiment, Front Door Server320can talk directly to Advertisement Systems342, rather than communicating with Advertisement System342via Search System340.FIG. 11Bdepicts a process for searching in accordance with that embodiment. In step630, Front Door Server320sends the keywords to the Search System340via the API and SOAP (or other) protocol in order to request a search be performed. In step632, Front Door Server320sends the keyword(s) directly to Advertisement System342, via an API for Advertisement System342. Steps630and532can be performed serially or synchronously. In step634, Search System340performs the search for presented the keyword(s) provided in step630. In step636, Search System340returns the search results to Front Door Server320. In step638, Advertisement System342targets advertisements in response to the keywords. In step640, Advertisement Server342returns the targeted ads to Front Door Server320in an XML file or other format.

FIG. 11Cprovides another embodiment of a process for searching. In this embodiment, Search System340identifies that the keyword presented to it was misspelled and displays a proposed correction with search results for that correction. In step660inFIG. 11C, Search System340performs a spell check of the keyword provided to it and identifies a spelling mistake. Search System340may determine various proposed spelling corrections. For example, if the user provided the word “sishi,” then Search System340may determine that there is a spelling mistake and propose a spelling correction of “sushi.” The search system will perform a search based on the proposed spelling correction. Search System340provides the proposed correction and the search result based on that proposed correction to Front Door Server320in step662. Front Door Server320presents the proposed correction and search results to the user via browser302(or other communication means) in step664. The user can accept the correction and results in step666, or refine the search in the Search box in the Search Pane.

FIG. 12is a flowchart disclosing one embodiment of a process for displaying search results (step486ofFIG. 9). In step700, the keywords identified by Keyword Extractor322are displayed. For example, keyword section180ofFIG. 3is depicted. In step702, the keyword that was selected for the search is identified (e.g., by bolding and italicizing, or other means). In one embodiment, the first keyword on the list of ordered keywords is the one initially sent to the Search System. In step704, the targeted ads received from Advertisement System342are depicted. For example, sponsored site section188can be created and displayed. In step706, a subset of search results are displayed. For example, search results section190ofFIG. 3can be displayed. Note that Search System340may respond to Front Door Server320with many search results. The real estate provided in user interface100to display search results190may not be big enough to include all the search results. Thus, only the most relevant search results will be displayed. In another embodiment, Search System will initially only send a small subset of search results that fit in search results section190. At the bottom of the search results section190will be a link “show more results.” That link will be displayed in step708. If user selects that link, then user interface100will navigate to a search page which will display the full set of results or a bigger subset of results from the search.

Note that the above discussion with respect toFIGS. 11A,11B,11C, and12relate to the first automatic mode, where the system automatically determines a set of keywords, automatically chooses the most relevant keyword, and automatically sends that most relevant keyword to the Search System. As described above, the system also includes a second automatic mode in which after the keywords are identified, the user is provided with an opportunity to select the particular keyword to search on. In this mode, the process ofFIG. 10will be used to identify the appropriate keywords. However, after the keywords have been identified in step482ofFIG. 9, and prior to searching in step484ofFIG. 9, the process ofFIG. 13will be used to choose which keyword to search on. In step740, the keywords will be displayed to the user. For example, the keywords can be displayed as depicted inFIG. 4. In step742, the user chooses a keyword by selecting one of the keywords using the mouse or other pointing device. In step744, the list of keywords is reordered so that the chosen keyword is considered the highest ranked keyword. The chosen keyword is sent to Search System340in step484ofFIG. 9. The process ofFIG. 9is otherwise performed as described above.

As described above, the system also includes a manual mode where a user can manually choose to have a search performed based on text within a message.FIG. 14is a flowchart describing one embodiment of a process for performing a search in the manual mode. In step800, the system receives a request to compose a message. For example, the user may choose one of the buttons in130-136associated with composing a new message. Alternative, step800may include receiving a request to read a message. The process inFIG. 14can be performed while composing a message or reading a message. In step802ofFIG. 14, the message form used to compose the message is provided to the user, and the user is allowed to insert text into the message. For example, the user interface ofFIG. 5can be provided with message form200. The user will then type in text into message form200. The user can highlight a word or phrase in step804. For example,FIG. 5shows the word “sushi” highlighted. In step806, the user will request that a search be performed. For example, the user can select the “Search” option from menu312. In one embodiment, after highlighting text, the user can right-click on the mouse (or other pointing device) and receive menu212. In step808, the keyword or phrase highlighted will be used to perform a search for content and advertisements as discussed above (seeFIGS. 11A,11B and/or11C). In step810, the highlighted word or phrase is displayed in the search pane. In step812, the targeted advertisements are displayed. In some embodiments, an “Insert this link” is added for each advertisement result. In step814, the search results are displayed. In some embodiments, an “Insert this link” is added for each search result. In step816, a link to more search results is displayed, as explained above. The result in steps810,812,814and816can be depicted as inFIG. 6. If user selects the link to more results, then the system will navigate to a search page and display more results in step818, as discussed above. If the user selects “Insert this link,” the associated title and link will be inserted into the message being composed.

As shown inFIGS. 1-6, messaging user interface100may include a search box114to enter text to perform a search within e-mail messages after selecting button116. The system will then search through all the messages in a folder or all messages associated with all folders to find matches that have the identified text. In one embodiment, the system will also automatically perform a search on the Internet or other domain using the same text. This process is depicted with more detail in the flowchart ofFIG. 15. In step840, the user requests a search of the messages by entering text in text box114and selecting button116. In step842, a search is performed within the messages in the particular folder or all folders. In step844, the search results are provided to the user. In one embodiment, all the messages that include the searched text will be included in the message list144. In step848, a search for content and advertisements are automatically preformed based on the keyword or phase used to search messages (the words entered into box114) if the Search pane is open. In another embodiment, the user can be asked whether to perform a search on the Internet. The searching for content and advertisements are performed as discussed above with Front Door Server320communicating with Search System340and Advertisement System342. In step850, the searched word or phrase is depicted in the search pane. In step852, the targeted ads are displayed. In step854, the subset of results from the search is displayed. In step856, the link to additional results is displayed. The results of steps850,852,854, and856can result in a user interface as depicted inFIG. 6. If the user selects the link to show more results, then the system will navigate to the search page and display more results in step858, as described above. In one embodiment, the terms typed into box114will be displayed in the Search Pane keywords well and system will perform an internet search if the user has already opted into search feature. If the search pane was closed at time (e.g., displaying an advertisement instead), the user did the email search and the user had previously opted in, the search pane will open and show results. If search pane was closed and user had not previously opted in, the search pane will open but show the opt-in text. If the user then opts-in, the search will be performed and the results subsequently displayed.

FIG. 6shows a search box112for searching the Internet and a search box116for searching emails. In one embodiment, there will be one search box, whose use will be contextual. For example, if the interface shows emails, then the search will be for emails related to the keywords entered. At the same time, it will trigger a web search with results displayed in the search pane.

Note that in the above-described flowcharts (FIGS. 8-15), the steps are depicted in a particular order. However, the order depicted in the flowcharts is not required. The steps can be performed in other orders.

FIG. 16illustrates one example of a suitable general computing system900that may be used to implement the components ofFIG. 7. For example, computing system900can be used to implement client300, Login Server310, User Profile Server312, Front Door Server320, User Data Server330, one or more of the components of Search System340and/or one or more of the components of Advertisement System342. Computing system900is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the technology described herein. Neither should computing system100be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system900.

The technologies described herein are 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 include, but are not limited to, personal computers, server computers, hand-held or laptop devices, personal digital assistants, telephones (wired, wireless, or cellular), 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.

With reference toFIG. 16, an exemplary system includes a general purpose computing device in the form of a computer910. Components of computer910may include, but are not limited to, a processing unit920(which can include multiple processors), a system memory930, and a system bus921that couples various system components including the system memory to the processing unit920. The system bus921may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.

The system memory930includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)931and random access memory (RAM)932. A basic input/output system933(BIOS), containing the basic routines that help to transfer information between elements within computer910, such as during start-up, is typically stored in ROM931. RAM932typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit920. By way of example, and not limitation,FIG. 16illustrates operating system934, application programs935, other program modules936, and program data937.

The computer910may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 16illustrates a hard disk drive941that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive951that reads from or writes to a removable, nonvolatile magnetic disk952, and an optical disk drive955that reads from or writes to a removable, nonvolatile optical disk956such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive941is typically connected to the system bus921through a non-removable memory interface such as interface940, and magnetic disk drive951and optical disk drive955are typically connected to the system bus921by a removable memory interface, such as interface950.

The drives and their associated computer storage media discussed above and illustrated inFIG. 16, provide storage of computer readable instructions, data structures, program modules and other data to program the processor(s) to perform the methods described herein. InFIG. 16, for example, hard disk drive941is illustrated as storing operating system144, application programs945, other program modules946, and program data947. Note that these components can either be the same as or different from operating system134, application programs935, other program modules936, and program data937. Operating system944, application programs945, other program modules946, and program data947are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer through input devices such as a keyboard962and pointing device961, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit920through a user input interface960that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor991or other type of display device is also connected to the system bus921via an interface, such as a video interface990. In addition to the monitor, computers may also include other peripheral output devices such as speakers997and printer996, which may be connected through a output peripheral interface990.

The computer910may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer980. The remote computer180may 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 computer910, although only a memory storage device181has been illustrated inFIG. 16. The logical connections depicted inFIG. 16include a local area network (LAN)971and a wide area network (WAN)973, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, computer910is connected to LAN971through a network interface or adapter970. When used in a WAN networking environment, computer910typically includes a modem972, network interface or other means for establishing communications over the WAN973, such as the Internet. The modem972, which may be internal or external, may be connected to the system bus921via the user input interface960, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer910, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 16illustrates remote application programs985as residing on memory device981. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.

In some embodiments, users are required to opt-in to the search feature. Alternatively, in other embodiments, privacy concerns are alleviated by providing the user with the ability to opt-out of the search feature.

The examples discussed above mostly relate to email message. However, the technology described herein also pertains to other types of communication such as an instant messages, chat streams or voice messages.

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 above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. It is intended that the scope of the invention be defined by the claims appended hereto.