This application claims priority from: united states provisional application No. 60/426,806 entitled "software to initiate and enhance communication and functionality at a client computer" filed on 2002, 11, 18; united states provisional application No. 60/427,944 entitled "keyword and search navigation" filed on 21/11/2002; U.S. provisional application No. 60/471,337 entitled "smart box" filed on 19/5/2003; U.S. provisional application No. 60/471,338 entitled "smart box" filed on 19/5/2003; and U.S. provisional application No. 60/488,400 entitled "smart box" filed on 21/7/2003. Each of these applications is incorporated by reference.
Detailed Description
The Internet has access to a large amount of content. A key challenge in providing a better access experience for users is enabling users to retrieve results with minimal effort, while accessing information that is most relevant to their interests.
To assist the user, an application enables the user to enter a character stream in an application (e.g., in a web browser). The character stream includes incomplete characters, which are characters that the user types in an area or form before entering a complete character, such as an Enter (e.g., the "Enter" key). The application may exchange the character stream with the host so that the host may analyze the character stream. The host analyzes the character stream and produces results that are of interest to the intended user. For example, when the character stream includes the string "plumbbe," the host may generate access to the yellow pages database and retrieve a plumber list that may be used to support the user. Note that the results can be recognized without waiting to receive a complete character stream of "plumber" or "plumber".
In another example, the user may enter "20005" as a character stream. The host computer may retrieve maps and business introductions located in the Washington, DC region within zip code 20005. Note that in this example, the user does not recognize the map label or include the word "zip code" to retrieve the results of zip code 20005. Rather, the character stream is analyzed so that possible map results can be considered and/or displayed.
In any case, regardless of the results identified in the host, the results are returned to the client, which may display all or a portion of the results. The results are displayed in such a way that the user can select one of the results to launch a code segment related to the selected item. For example, if the displayed results include a list of plumbers available to support the user, selecting one of these entries may launch a web page operated by the particular plumber. In another example, a telephone call, email message, or instant message may be transmitted to the plumber of the entry selected from the results list.
The user may continue to enter one or more characters in the character stream and may modify the results based on the most recently received character. For example, when the character stream is analyzed preliminarily after "spring" is entered, spring-related results and products using the term "spring" may be returned. When the user types the character "f," the character "f" may be transmitted to the host, which in turn produces a result related to "springf. In one example, the previous results related to "spring" are filtered to generate a new list that includes only content related to "spring. In another example, a new query would be run to identify terms related to "springf".
Regardless of how the query is constructed, the host will identify results associated with "springf", which may include one or more selections associated with a town called Springfield. The portion of the application that the user accesses may give the results of multiple towns. In one example, the user may be allowed to select one of the results to generate a map associated with the selected Springfield. In another example, the entries "Springfield, MA" and "Springfield, IL" may be submitted to the user. The user may continue to type characters in the character stream. When the user types the character "I" after "Springfield" is recognized, the entry "Springfield, MA" may be deleted. The user may then select the entry "Springfield, IL" to retrieve a map of Springfield, IL.
Fig. 1 illustrates a communication system 100 capable of intelligently displaying results associated with a character stream. Typically, the client 110 exchanges information about the character stream of the incomplete characters with the host 130 using the network 120. The host 130 analyzes the character stream using, for example, a database 140 (e.g., a yellow pages directory or a map system) to produce results associated with the character stream. The host 130 provides one or more results to the client 110, which in turn displays the results.
In general, client 110 comprises a computing device that enables users to exchange information in a communication network. Client 110 may include one or more devices capable of accessing content in host 130. Client 110 may also include a controller (not shown) that processes instructions received from or generated by a software application, program, code, device, computer system, or combination thereof, that independently or collectively direct the operation of client 110. These instructions may be embodied permanently or temporarily in any type of machine, component, device, storage medium, or propagated signal that is capable of being delivered to the client 110 or that may reside in a controller of the client 110. Client 110 may include a general purpose computer (e.g., a Personal Computer (PC)), a workstation, a laptop, a PDA ("personal digital assistant"), a wireless telephone, a component, other device, or some combination thereof capable of responding to and executing instructions in a prescribed manner.
In one embodiment, clients 110 include one or more information retrieval software applications (e.g., a browser, a mail application, an instant messaging client, an Internet service provider client, or an AOL TV or other integrated client) capable of receiving one or more data units. The information retrieval application may run on a general-purpose operating system and a hardware platform that includes a general-purpose processor and specialized hardware for graphics, communications, and/or other capabilities. In another embodiment, client 110 may comprise a wireless telephone running a micro-browser application on a reduced general-purpose operating system and hardware specific to the mobile environment.
Client 110 includes one or more character stream code segments that analyze a character stream input into an information retrieval application. The character stream code segment receives the stream and exchanges the character stream with other software applications in the client 110 and/or host 130. For example, the character stream code segment may first wait until X initial characters are received before issuing a transmission to the host 130. The character stream code segment may then issue updates to the host every Y subsequent characters. Alternatively, the character stream code segment may include a delay feature means to send an update to the character stream if the user is stationary for Z seconds. Thus, when X is 5 ("five") characters, Y is 2 ("two") characters, and Z is 1 ("one") second, the user's character stream code segment that typed "DULLES GAS STAT" would require the result 1) to follow "DULLE" 2) after "DULLES", "DULLES GA", "DULLES GAS ST", and "DULLES GAS STAT". In the same example, if the user types "DULLES GAS S" and pauses for more than 1 second (when Z ═ l seconds and the delay feature device is being used), the character stream code segment will issue the string "DULLES GAS S" to the host for analysis.
The client 110 may include a preliminary analysis code segment to analyze the character stream and issue periodic updates. The preliminary analysis code segment filters the character stream to improve the effectiveness of the results produced for the character stream. In one example, the preliminary analysis code segment identifies one or more databases or program segments that may be relevant to the user's expected interest. Thus, when "20005" is entered, the preliminary analysis code segment may issue an instruction in transit to the host 130 to poll the geographic information associated with zip code 20005. Other examples may include the preliminary analysis code segment identifying a service industry (e.g., plumber), a segment (e.g., online music), or a combination of factors related to the user's search results (e.g., plumber within zip code 20005). With the preliminary identified factors, the transmission may be sent to an appropriate database, or the query may be modified as a result of performing the preliminary analysis.
In another example, the preliminary analysis code segment may also associate known information about the user with the character stream. If the client is deemed to be operating within a particular area (e.g., based on billing information for the user), the character stream may be modified to indicate that the host 130 should respond to the user's recorded address as a result. Similarly, the preliminary analysis code segment may interface with a cache or user history to better identify the results of the user. Thus, if the history of user activity indicates that the user is interested in the national football league sporting event, the preliminary analysis code segment may process the results according to a relationship to the results for American football rather than International football (soccer). The preliminary analysis code segment may also retrieve and display locally saved results prior to accessing the host 130.
The client 110 may include a communication code segment that interfaces with an information retrieval code segment (e.g., a browser or keyword tool) to modify the character stream results to reflect the client's network environment. For example, when client 110 comprises a bandwidth-constrained wireless telephone, the communication code segment may establish a communication exchange to limit the amount of data in the returned results from not overwhelming network 120. This may include filtering the results so that no more than a certain number of results are returned. Similarly, the format of the results may be modified to reduce the bandwidth of the results. For example, the results transmitted to the client 110 may remove graphics or images from the application.
The client may include a display code segment for processing results for a display device (e.g., a monitor or LCD ("liquid crystal display")). The display code segment may manage the appearance of the results to give only the most likely result. The display code segment may interface with the host 130 so that the number of results does not exceed the capabilities of the client's memory or display. In one example, the display code segment may instruct the host 130 to send no more than a certain number of results. In another example, the display code segment may instruct the host 130 not to return any result items that are larger than a particular size.
The client 110 may include one or more media applications. For example, the client 110 may include a software application that enables the client 110 to receive and display a stream of audio or video data. The media application may include controls that enable the user to configure the user's media environment. For example, if the media application is receiving Internet radio stations, the media application may include controls that enable the user to select an Internet radio station, for example, by using a "preset" icon that indicates the type of station (e.g., country) or preferences.
Network 120 may include hardware and/or software capable of initiating direct or indirect communication between client 110 and host 130. Likewise, network 120 may include a direct link between client 110 and host 130, or it may include one or more networks or subnets (not shown) therebetween. Each network or sub-network may include, for example, a wired or wireless data channel capable of transmitting and receiving data. Examples of networks include the Internet, the world wide web, a WAN ("wide area network"), a LAN ("local area network"), analog or digital wired and wireless telephone networks, radio, television, cable, satellite, and/or any other transmission means for transmitting data.
The host 130 is typically capable of executing instructions under the direction of a host controller (not shown). The host 130 may include one or more hardware elements and/or software elements. An example of a host 130 is a general purpose computer (e.g., a server or mainframe computer) capable of responding to and executing instructions in a prescribed manner. Other examples include a special purpose computer, a workstation, a PC, an appliance, a component, other physical or virtual device, or some combination thereof capable of responding to and executing instructions.
The controller is a software application loaded onto host 130 for commanding and directing communications exchanged with client 110. Other examples include programs, code, instructions, devices, computers, computer systems, or combinations thereof, to independently or collectively instruct the client 110 or host 130 to interact and operate as described. The host 130 may be embodied permanently or temporarily in any type of machine, component, physical or virtual device, storage medium, or propagated signal capable of providing instructions to the client 110 or host 130.
The controller may include one or more information providing applications to support information retrieval requests sent from clients 110. The informative application may include a results code segment that receives the character stream from client 110 and produces results responsive to the expected interests of the individual user. In this way, the results code segment may generate one or more results based on the character stream exchange received from the client 110.
The results code segment may also receive character stream modifiers received from the preliminary analysis code segment, the communication code segment, the display code segment, and/or other code segments that modify the character stream transmitted by the client. The result code segment may process the character stream in accordance with the modifiers. The host 130 may also operate code segments that perform operations similar to the feature settings in the preliminary analysis code segment, the communication code segment, and the display code segment. Host-oriented versions of these code segments may interface with the results code segment to modify the analysis performed and/or the results returned. For example, the host 130 may first access a cache of content that the user has previously requested. The previously returned results may be analyzed for relevance before additional analysis is performed or additional systems are polled.
The host 130 may interface with a database 140 to analyze the character stream. In general, database 140 includes memory for large amounts of data and a processing engine that enables the data to be saved, searched, and analyzed. The database may be organized according to functional criteria. For example, a map database may be organized by geographic region, while a yellow pages database may be organized by business as well as geographic criteria. In one example, a database may be constructed to perform more detailed analysis of the character stream provided by the host 130. For example, the host 130 may receive a character stream from a client and redirect the query to one or more databases 140. Each redirected query may be modified to further refine the redirected query. For example, a query that is redirected to a yellow pages directory may have zip codes added as a selection condition. Similarly, a query to a database that provides stock quotes may include references that describe which stocks are of interest to the user (e.g., stocks held by the user).
Referring to fig. 2, a flow chart 200 shows how the client 110 may use the host to intelligently present results related to a character stream of incomplete characters. Generally, the system in flowchart 200 is related to the system described in FIG. 1. The flow chart 200 shows how the client 110 receives the character stream (step 210) and exchanges the character stream with the host (step 220). Host 130 receives the character stream (step 230), analyzes the character stream (step 240), and exchanges results with client 110 (step 250). Client 110 receives the results (step 260), displays the results (step 270), receives the user's selection (step 280), and launches a code segment associated with the selected results (step 290).
First, the client 110 receives a character stream of one or more noncompletion characters (step 210). Typically, receiving a character stream of one or more incomplete characters includes receiving and organizing keystrokes entered into a user of the user application. For example, the user may type an entry in the address bar of a web browser, or in a keyword entry area in a keyword tool. Receiving the character stream may include constructing the character stream into transmissions to be exchanged with the host 130. For example, after entering a predetermined number of characters, the client application may organize the transmission into a first message. After a predetermined number of additional characters are entered or a predetermined time elapses between the characters entered by the user, the client application may construct an additional message. The incomplete label indicates that the user does not indicate that the character entry processing has been completed. In other words, a character stream with incomplete characters indicates that additional characters may be received to modify search results displayed in response to the user's expected interest. Instead, the Enter or "Enter" key is typically used as a completion character, which enables the user to accurately produce a result based on the completed character. In addition, carriage return is a completion character because the extra characters do not cause the results to be modified.
Regardless of how the transmission between the client 110 and the host 130 is structured, the client 110 issues a character stream to the host (step 220) which the host receives (step 230). Host 130 then analyzes the character stream (step 240). Typically, analyzing the character stream includes correlating the received character stream with one or more results responsive to the user's expected interest. In one example, the character stream may be compared to metadata tags used to describe content accessible to the host 130. For example, when the character stream includes "Nashvill," host 130 may expect that "Nashvill" will eventually become "Nashvill, TN," and identify web pages that are characterized as Nashvill, TN in the web page and/or summarized by a metadata tag with "Nashvill, TN. However, the host 130 need not find exact identical character matches. For example, host 130 may predict that user input "Nashvill" is a precursor to an interest in rural music. Thus, when the host 130 analyzes the results, the host 130 may also identify results related to country music, even if the results are not related to Nashville, TN. In another example showing how supplemental information may be used to analyze a character stream, the results may be converted to include country music only when the host determines that the user is not from Tennessee.
Analyzing the character stream may include sorting the relative relevance of the results. For example, a widely visited Nashville web site (e.g., Nashville tour board) is considered to be more highly associated with a non-Nashville resident than a web site that includes a Nashville resident personal web log ("blog"). The results may be generated such that more relevant results are returned before less relevant results.
Using the analyzed character stream and the recognized results, host 130 exchanges results with client 110. The results may be controlled to comply with display constraints of the network or the client. For example, if the network has limited bandwidth or the client has limited display capabilities, the host 130 may construct a transmission to avoid network congestion or may modify the results to provide more appropriate results (e.g., by deleting images from the returned results).
The client 110 receives the results (step 260). The client 110 may perform additional processing to check the results to increase the effectiveness of the display. For example, the client 110 may correlate the returned results with the user profile and process the results for display accordingly. In another example, the client may analyze the results to better display user profiles and interests to increase the effectiveness of subsequent character stream operations. Whether or not the results are subject to intermediate processing, the client 110 displays the results (step 270). The results are displayed to enable the user to select one of the results rather than completing their predetermined character sequence. For example, when a user types an entry in a keyword retrieval application, a drop down window may appear in the keyword retrieval application along with one or more possible results. As the user continues to type, the results appearing in the drop down window are processed to reflect the most recent analysis of the character stream. When the user sees a result of interest, the user can select the result (step 280). Selection of a result causes the application to launch a code segment associated with the selected result (step 290). For example, when a user selects a result describing a map of an area, a web browser accessing a map website may be launched to display the map in relation to the entered character stream.
Fig. 3 shows a flow chart 300 illustrating how the client 110 exchanges character streams with the host 130 to retrieve map information located in the database 140. In general, the system and operation described in fig. 3 is related to the system and operation previously described with respect to fig. 1 and 2. However, FIG. 3 shows how the host 130 may interface with the database 140 to retrieve the results of the client 110. Client 110 exchanges character streams with host 130. In turn, the host uses the database 140 in its analysis of the character stream to produce results. The host provides the results to the client 110, which in turn, the client 110 presents the results and launches the appropriate code segment when the user selects the result of interest.
First, the user of the client 110 enters the character stream "Dulles" (step 305). The client exchanges the character stream with the host 130 (step 310), which receives the character stream "Dulles" (step 315). Host 130 analyzes the character stream "Dulles" (step 320). The host 130 may perform local analysis of the character stream to compare the character stream to popular results cached in the host 130 while assigning customized queries to private databases to identify more relevant results. For example, in flow diagram 300, analyzing the character stream includes polling a map database associated with "Dulles" (step 325). Although the flow diagram 300 depicts one database 140 to be accessed, multiple databases may be polled. Examples of other databases that may be polled include, but are not limited to, message databases, directory services, yellow pages, and financial databases.
Database 140 receives a poll for "Dulles" (step 330). Then "Dulles" is analyzed (step 335) and the results retrieved. For example, multiple maps associated with Dulles of virginia may be identified and/or retrieved. This may include a map of Dulles town, directions to Dulles international airport, and directions to various corporate offices located in Dulles, virginia. The results are then returned to the host 130 (step 340).
Upon receiving the results (step 345), the host 130 exchanges the results of "Dulles" with the client (step 350). Exchanging the results with the client may include synchronizing the results received from the multiple databases and identifying the result of the greatest degree of association. For example, multiple databases may be polled to analyze the character stream. The total number of results returned from the client 110 may also be large for the client 110 to process and/or display. Accordingly, the host 130 may filter and identify only those results that are relevant to the host. In one example, the most relevant results are returned to the client 110, while the library of results is still available for analysis based on subsequently received characters in the character stream. In another example, results from the database are received at different times. For example, a query that exactly expands and then matches the user's demographics may take longer than a query that compares results to the most commonly retrieved results. Exchanging results may include first giving the most commonly retrieved results, then giving longer query results when available.
The client receives the results of "Dulles" (step 355) and displays them (step 360). As shown, when client 110 receives a user selection to launch a mapping application associated with "Dulles" (step 365), client 110 launches the mapping application for the selected "Dulles" result (step 370).
FIG. 4 shows a flow chart 400 illustrating how the client's display may be modified based on updates to the character stream. In general, the system and operation represented in FIG. 4 are related to the systems and operations previously described with respect to FIGS. 1-3. However, the flow diagram 400 shows how the updating of the character stream may produce different results with which the user may interact. In particular, subsequently received characters in the character stream may produce a different set of results that are displayed by the client. In this way, the user can modify the character stream and observe new results in real time based on the modifications.
First, the client receives the character stream "Spring" (step 405), and exchanges the character stream 410 with the host 130 (step 410). The host 130 receives the character stream "Spring" (step 415) and analyzes the character stream "Spring" (step 420). Host 130 and/or database 140 identifies the map results for the character stream "Spring" (step 425) and returns these results to client 110 (step 430). The client receives the results associated with "Spring" (step 435) and displays them (step 440).
The client then receives and exchanges additional characters in the character stream (step 445). For example, although the string "Spring" may identify information related to some Springfield markets, the user may enter additional information to confirm that Springfield is considered by the user and that Springfield is of interest to the user. Thus, the user may enter the field "I" as the next character to indicate an interest in Springfield, Illinois. The host 130 and/or database 140 receives and analyzes the additional characters (step 450). Host 130 and/or database 140 generate a new set of results associated with the update that are exchanged with client 110 (step 455). In the example using Springfield, Illinois, map and yellow page information relating to the town of Springfield, Illinois may be exchanged.
The client 110 receives the update (step 460) and initiates a user interaction based on the update (step 465). For example, a list of maps, services, and other information related to Springfield, Illinois may be displayed.
Referring to FIG. 5, typical results associated with a character stream having incomplete characters are displayed in GUI 500. In general, GUI 500 depicted in FIG. 1 may be displayed on client 110 based on the operations described in FIGS. 2-4. GUI 500 represents code segments that may be invoked in a results page when a character stream enters a user application, such as a web browser. In particular, text entry area 510 receives the character stream "aol" without carriage return, which is represented by a cursor "|". GUI 500 includes a result 520 that enables a search for the string "AOL" to be initiated, a result 530 that enables a code segment of the AOL keyword "AOL" to be initiated, and a result 540 that enables a code segment that retrieves a stock quote for "AOL" that represents a trade at $ 15.32 in a stock market exchange.
Referring to fig. 6, an exemplary result of the character stream "Arlington, VA 22209" is shown in GUI 600. Generally, GUI 600 pertains to the systems, operations, and displays previously described with respect to FIGS. 1-5. However, GUI 600 represents different databases and/or applications that a user application may access. For example, when "Arlington, VA 22209" is inserted in the text entry area 610, the search code segment may be launched using the result 620 and the map code segment may be launched using the result 630.
In one example, the displays associated with results 620 and 630 have been retrieved by client 110. Alternatively, it may be necessary to download the content in the display associated with results 620 and 630 (e.g., from host 130 and/or database 140).
Fig. 7 shows a GUI 700 associated with the character stream "dentist". Generally, GUI 700 pertains to the systems, operations, and displays previously described with respect to FIGS. 1-6. However, GUI 700 represents how a character stream may be analyzed to identify yellow page entries associated with the character stream.
GUI 700 includes results 710 that enable a user to launch a code segment to search the character stream "dentist". Note that although the character stream includes complete text of the dentist in GUI 700, shorter strings such as "dentists" or "dentist" may also be analyzed and used to generate results that initiate a search for the character string "dentist" or "dentist". Results 720 enable the user to launch a code segment so that the client can "turn" to the AOL keyword "Dentist".
Results 730 enable the user to launch a code segment to search for AOL yellow pages for "Dentist". Note that while the result 730 features initiating a yellow page search for "dentist," other GUIs may include a list of available dentists. For example, if the user's location is known, a list of dentists categorized and introduced by expertise within the user's zip code may be given. The results from the GUI may be selected to launch a dentist's web page, to launch a messaging application to exchange communications with the dentist, or to launch a calendar application to create a dentist's appointment.
Referring to fig. 8 and 9, GUIs 800 and 900 show how the displayed results may be changed when additional characters in the character stream are received. In general, GUIs 800 and 900 relate to the systems, operations, and displays previously described with respect to FIGS. 1-7. However, GUIs 800 and 900 differ from the previous display in that the results are not displayed in a drop down window as appears in FIGS. 5-7. Moreover, GUIs 800 and 900 represent how results can be generated and displayed using a portion of a desired character stream, and how updates to the character stream need not follow the previous character stream to accurately construct the string of interest. GUI 800 represents a plurality of results 820 available after entering "Spring" in text entry area 810. GUI 900 shows that after "I" is next entered in text entry area 910, the results may be filtered so that only result 920 "Springfield, Illinois" is displayed. Note that the inserted character (e.g., Spring)field,IlField in linois ") is not included in the character stream.
Although GUIs 800 and 900 represent map resources being accessed, the operations described in fig. 8 and 9 are applicable in other applications and environments. Because the user entered the character stream in the mapping application, the results may be processed to search for map results. This may be done by searching the map database or by polling the host 130 with a modifier indicating that the map results should be retrieved. While GUIs 800 and 900 do not require or allow a user to specify map requirements or restrictions, other GUIs may allow a user to specify a database (not shown) for analyzing a character stream.
Referring to fig. 10, GUI 1000 is an exemplary messaging display that enables users to exchange messaging communications. Generally, GUI 1000 pertains to the systems and profiles previously described with respect to FIGS. 1-9. However, GUI 1000 represents messaging results that may be displayed when the character stream relates to messaging information. For example, when a user types "chattingchuck" in a text entry area (not shown), GUI 1000 may be displayed enabling the user to post mail, post instant messages, add "chattingchuck" to the contact list, block mail and instant messages from "chattingchuck", and/or view the status or interest of "chattingchuck". Although fig. 10 shows that the messaging application or operation is associated with a user called "chattingchuck," results associated with more than one user may be displayed. Similarly, when the user enters the character "@" (an AT character associated with the Internet mail system), options unrelated to email messaging may be deleted.
Other embodiments are within the scope of the following claims. For example, although an example of retrieving results of operations related to a character stream is described, the results need not include information that will ultimately be displayed when the code segment is launched. Conversely, the results may include a label indicating that the results may be subsequently examined, if possible.
Similarly, the client and host applications may include assistants and spelling correction agents to increase the effectiveness of the retrieved results. The helper may assist the user by retrieving similar results that relate to the predicted character stream meaning. For example, if the character stream includes "German cars," results including famous manufacturers of German cars, including Mercedes, BMW, and Audi, may be retrieved. The spelling correction agent may identify errors that the user may enter into the press. In response, the spelling correction agent may correct the character stream by changing the character stream entered on the desktop and/or by retrieving results associated with the predicted entry.
Similar to the spelling correction agent, the system may include a confirmation agent that may be used to confirm a URL ("Uniform resource locator") in the input character stream. For example, when a user enters the address of a web site, the address of the web site may be analyzed to determine if device and file information actually exists and/or is correct. When the URL information is incorrect, the system may parse the character stream to identify the correct or relevant URL address.
The client 110 can be used to intelligently present results related to media communications, such as streaming audio and video communications. For example, a content provider or service provider may be assigned a number of discretely represented "channels" or frequency bands. A user may wish to examine channels to find channels that provide information most relevant to the user's interests. Accordingly, the user can input a character stream related to the content the user finds interesting. For audio content, the character stream may relate to the name of an artist, album, or selection (e.g., song). For video content, the character stream may relate to a particular news league (e.g., TIME or CNN), description, event, or topic. In any case, regardless of the underlying content, the character stream may be used to retrieve results that are relevant to the user's interests as represented in the character stream. This may be done by comparing the input character stream with metadata or subtitles associated with a particular media selection. In one example, the character stream may be compared to subtitles of available program listings to identify a result desired by the user. Thus, when a user enters the name of a newsgroup in a character stream, the subtitles of all available program listings (including on-demand and broadcast streams) may be searched to identify media streams that are characteristic of the newsgroup.
The composite media stream may be presented in various forms. In one example, a drop down menu appears to enable the user to launch a media application associated with the retrieved results. In another example, when the media stream includes a video stream, a tile of the video stream may be displayed in a similar direction to the tile in fig. 8. The video stream tiles may include reduced bit rate images to provide a user with a brief description of the available video content. When the user selects one of the video tiles, an example of the video selection may be given at a higher bit rate.
The system and operation may be modified to operate in an intranet or trusted environment. For example, instead of searching a common database, the system may be configured to incorporate security programs and instances associated with trusted environments. In this way, sales employees may be allowed to access customer and market databases when analyzing character streams. Engineers may be allowed to review the technology and run the support database to support their tasks, but may be prevented from analyzing the character stream using the sales database. Management and/or investigators may be allowed to access most or all of the databases when analyzing the character stream.
The results may be stored on the client 110 and/or the host 130. For example, the host 130 may cache previously returned results that may be used when analyzing subsequent character streams. In another example, the previously selected results may be saved on the client and the subsequent character stream may be accessed first using the previously saved results.
The client 110 may enable a user application to launch a messaging code segment. Alternatively, the user may enter the character stream in a messaging application. For example, a user may enter a character stream in an instant messaging application. The instant messaging application may send the character stream to the host 130 for analysis. The client 110 may receive the results and enable the client to send an instant message when the results indicate that a certain identified user is online.
The exchange update may include exchanging only portions of the character stream that have changed since the last exchange of the character stream. For example, because the user first types information into the first application, the first application may send a message to the host 130 with the first entered character stream (e.g., "Spring"). As the user enters updates to the character stream (e.g., by typing "field" after "Spring"), the client 110 may issue new information without issuing old information (e.g., the client 110 then issues "field" instead of "Springfield"). Alternatively, the client 110 may emit the current character stream. For example, the client 110 may first send out "Spring" and then subsequently send "Springfield".
The client 110 and/or host 130 may determine that there are no relevant results and operate to exclude additional processing resources from current use. For example, the user may enter a character stream where the host 130 has no information and no results. When the host 130 determines that there is no information, the host 130 may interface with the client 110 to prevent the exchange of additional updates. This will occur when the user enters a character stream that is independent of the content accessible to the host 130. For example, host 130 may determine that CHARACTERSTREAM1 does not produce any results, and that an extension of CHARACTERSTREAM1 does not produce any results. If the user enters additional information, such as CHARACTERSTREAM123, the first application will not issue any updated information to the host 130. However, if the user uses the DELETE key to modify the character stream to convert CHARACTERSTREAM1 to CHARACTERSTREAM, the character stream may be swapped.
The client 110 may perform a preliminary analysis to avoid analyzing common character streams that produce results that are not responsive to the user's expected interest. For example, when "the" appears in the character stream, particularly in the initial portion of the character stream, using the character stream "the" to produce results may produce too many results, with little, if any, response to the user's intended interest. Therefore, it may be useful to delay exchanging the character stream until the character stream is meaningful. In this way, swapping the character stream "the" may be delayed until the character stream reads "the greens islands" or another character stream that may produce meaningful results. Similarly, the character stream may be adjusted to delete strings in the character stream that are unlikely to be helpful for analysis (on the client 110 or host 130). Thus, strings that appear in the character stream, such as "the", "a", and "this", may be removed from the character stream before the character stream is exchanged.
Displaying the results may include displaying the results directly, in addition to a tag that displays the results of a code segment that can launch the results. For example, the results may include the actual stock quote rather than the tags of the code segments that generated the stock quote. The displayed results may include a summary or brief summary of the news event. When the user selects the news event, the summary may also be configured to retrieve more detailed articles about the news event.
Other examples of results that may be retrieved may include, but are not limited to, telephone numbers and/or keywords. The result of clicking on the available telephone number may allow an Internet telephone call to be initiated. The telephone call may be bridged to a telephone network or connected to an IP phone (e.g., a virtual phone application located in the called user's PC).
Results and additional information that account for previously returned or selected results may be stored in the client 110 and/or host 130. For example, the results of the most recent accesses may be cached in the client 110, while the more extensive historical results may be cached in the host 130. The saved results can be accessed and used to analyze and generate results responsive to the user's expected interests.
To indicate how the saved results may be used to analyze subsequent character streams, a previous search related to the National Football League (NFL) may generate a series of metadata tags. These metadata tags may be stored in a profile associated with the user. For example, a user searching for NFL-related information may add the metadata tags "NFL" and "Football" to their user profile. The metadata tags may be used for subsequent analysis. Thus, when a user types in "Falcons," additional metadata tags related to multiple meanings of "Falcons" may be generated and analyzed using previously generated metadata tags. Examples of metadata tags associated with Falcons may include terms such as "NFL", "Audubon Society" and "sports". The metadata tag from a previous search for NFL may be compared to the metadata tag generated by entering "Falcons". By correlating the results of the previous search with known metadata tags for the term of interest, results that are likely to be more responsive to the user's expected interest may be returned. In this example, correlating results from previous searches with current searches may produce results related to the Atlanta Falcons of NFL.
The results produced by multiple users may be used to determine results that are more responsive to the expected interests of a different user. For example, if most users enter "Falcons" as a character stream intended to be of interest to NFL, a default rule may be created and employed that returns results related to the NFL sports team in response to "Falcons". By stopping the default rules, more detailed analysis can be performed when the user profile or representation thereof is interested in other, "falcons" non-motion aspects or uses modifiers such as "birds", "Audubon Society" or "kestrels".
Other embodiments are within the scope of the following claims.