RELATED APPLICATIONSThe present application claims priority to and is a continuation of U.S. application Ser. No. 16/056,487 filed Aug. 6, 2018, which is a continuation of U.S. application Ser. No. 14/224,002 filed Mar. 24, 2014, now issued under U.S. Pat. No. 10/042,823, which is a continuation of U.S. application Ser. No. 12/334,068 filed Dec. 12, 2008, now issued under U.S. Pat. No.: 8,682,961, which is a continuation of U.S. application Ser. No. 11/384,957 filed Mar. 20, 2006, now issued under U.S. Pat. No.: 7,529,795, all of which are incorporated herein by reference and which, in turn, incorporate by reference U.S. Provisional Application Ser. No. 60/784,141 filed Mar. 20, 2006 and U.S. Provisional Application Ser. No. 60/784,140 filed Mar. 20, 2006, all of which are incorporated herein by reference.
BACKGROUNDField of the InventionThe present invention relates to computer-implemented techniques for improving the usefulness of hyperlinks in web pages.
Related ArtWeb pages, and other kinds of hypertext documents, use textual representations of hyperlinks to indicate to the user which hyperlinks the user may follow. For example, if a web page includes the text, “Click here for more information,” the word “here” may be underlined to indicate to the user that selecting (e.g., clicking on) the word “here” will cause the web browser to navigate via a hyperlink to another web page (referred to as the “anchor” of the hyperlink).
Textual hyperlinks have proven to be extremely useful and powerful tools. In fact, in the first incarnation of the World Wide Web, web pages could only contain text. In such web pages, all hyperlinks were visually represented using text displayed with a special characteristic (e.g., underlining or a special color) indicating that the text represented a hyperlink. Textual representations of hyperlinks have the benefit, for example, of allowing hyperlinks to be visually embedded within otherwise normal prose text, such as news articles and email messages, without visually interrupting the flow of such text.
Textual representations of hyperlinks, however, have certain drawbacks. For example, the textual representation of a hyperlink may not make the destination (anchor) of the hyperlink clear to the user. In the case of the text “Click here for more information,” where the word “here” represents a hyperlink, the text does not convey the destination of the hyperlink to the user. Instead, the user only knows that clicking on the word “here” will cause the web browser to leave the current web page and navigate to another one. To identify the destination of the web page, the user may be required to navigate to that web page (by selecting the hyperlinked text) and view it, or to perform a cumbersome operation such as cutting and pasting the URL of the hyperlink into a document. In either case, it is tedious and time-consuming for the user to identify the destination of the hyperlink and therefore to decide whether to navigate to that destination.
Some have attempted to address these problems with textual representations of hyperlinks by using graphical representations of hyperlinks. For example, a picture of a person on a web page may represent a hyperlink to that person's home page. Clicking on the picture will cause the web browser to navigate to the hyperlinked home page. Graphical hyperlinks have the benefit, in comparison to purely textual hyperlinks, of providing the user with a clearer indication of the hyperlink's destination. On the other hand, graphic images must typically occupy a significant area on the web page (so-called visual “real estate”) before they can provide enough visual information to be useful to the user as an indication of the hyperlink's destination. Graphical hyperlinks, therefore, are of limited value in web pages and other situations in which visual real estate is at a premium and must be used as efficiently as possible.
What is needed, therefore, are improved techniques for providing visual representations of hyperlinks.
SUMMARYA computer program provides a first set of representations (e.g., textual representations) of a first set of hyperlinks. In response to selection by a user of one of the first set of hyperlink representations (such as by clicking on or hovering a cursor over the representation), the program displays a second set of representations (e.g., graphical representations) of a second set of hyperlinks. The user may select one of the second set of representations, in response to which the program navigates to the destination of the hyperlink. The second set of representations may, for example, be logos of companies, and the second set of hyperlinks may be hyperlinks to the companies' web sites.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a dataflow diagram of a message board aggregation system according to one embodiment of the present invention;
FIG. 2 is a flowchart of a method performed by the system ofFIG. 1 according to one embodiment of the present invention; and
FIG. 3 is a window displayed by the message board aggregation system ofFIG. 1 according to one embodiment of the present invention.
FIGS. 4A-4C are illustrations of a graphical user interface text input control for use in assisting in the completion of text input by a user according to embodiments of the present invention.
FIGS. 5A-5B are illustrations of web page hyperlinks displayed by embodiments of the present invention.
DETAILED DESCIPTIONReferring toFIG. 1, a dataflow diagram is shown of a messageboard aggregation system100 according to one embodiment of the present invention. Referring toFIG. 2, a flowchart is shown of amethod200 performed by thesystem100 ofFIG. 1 according to one embodiment of the present invention. Referring toFIG. 3, awindow300 displayed by the messageboard aggregation system100 ofFIG. 1 is illustrated according to one embodiment of the present invention.
In general, thewindow300 shown inFIG. 3 contemporaneously displays a table302 containing message table content (e.g., message title, message author, message ID, message sentiment, message time of writing, message web page source, person being replied to) andmessage content304 corresponding to a message represented by one of the entries in the message table302. In the embodiment illustrated inFIG. 3, themessage content304 is displayed in aweb page306 from a message board web site to which themessage content304 was originally posted. In the embodiment illustrated inFIG. 3, the source web page306 (containing the message content304) is displayed in afirst frame308 of theweb page300, and the message table302 is displayed in a second frame310 of theweb page300.
Theweb page306 is an example of a “source” web page as that term is used herein. The message table302 may include summaries of messages originally posted to more than one source web page. Theweb page300, therefore, provides an aggregation service which aggregates messages from a plurality of web-based message boards. Theweb page300, therefore, is referred to herein as an “aggregation” web page.
Having described certain general features of particular embodiments of the present invention, techniques that may be used to implement embodiments of the present invention will now be disclosed. Referring toFIG. 1, multipleexternal message boards102a-mare illustrated. For ease of illustration and explanation, each of themessage boards102a-mis illustrated simply as a set of messages. More specifically,message board102aincludes a set ofmessages104a, including messages106a-n;message board102bincludes a set ofmessages104b, including messages108a-n; andmessage board102mincludes a set ofmessages104m, including messages110a-n. In practice, themessage boards102a-mmay be implemented using web servers or any other appropriate kind of technology.
Furthermore, although only threeexternal message boards102a,102b, and102mare shown inFIG. 1 for purposes of example, thesystem100 may include and/or access any number of external message boards, as indicated by the variable m. Furthermore, the term “message board” is not limited to any-particular kind of communications mechanism, and includes not only web-based message boards, but also newsgroups and email. Although each of themessage boards102a-mis shown inFIG. 1 as including the same number of messages n, the number of messages may vary among themessage boards102a-m.
A single message board, such as a web-based financial message board, may include a plurality of topics, each of which may include a plurality of threads or sub-topics. For ease of illustration and explanation, each of themessage boards102a-mis illustrated inFIG. 1 as containing only a single thread of messages. This does not represent a limitation of the present invention. Rather, the techniques disclosed herein may be applied to message boards including any number of topics, threads, or other groupings of messages.
Theaggregation system100 also includes a messageboard aggregation server112 and a corresponding message board114 (which includes set116 of messages118a-n). Themessage board114 is managed by theaggregation server112 or by the same entity that manages the aggregation server. Therefore, themessage board114 will be referred to herein as an “internal” message board, while themessage boards102a-mwill be referred to herein as “external” message boards in relation to theaggregation server112. As will be described in more detail below, theaggregation server112 aggregates messages from two or more of themessage boards102a-mand114, and displays content from the aggregated messages in theweb page300.
Referring again toFIG. 2, thesystem100 ofFIG. 1 may perform themethod200 to aggregate content from themessage boards102a-mand114 to display aggregated message content in thewindow300. Auser142 uses aweb browser140 to browse over theInternet138 to a web site served by theaggregation server112. Theweb page300 is an example of a web page that may be part of such a web site. Upon visiting the web site, theuser142 selects one or more source message boards from which to view message content and summaries (step202). Theuser142 may, for example, make this selection by selecting the name of an external message board (such as one of theexternal message boards102a-m) from a selection of sources accessible in any of a variety of formats, one example of which is a drop-downlist316. Note, however, that theuser142 may select more than one source message board.
In the particular example illustrated inFIG. 3, theweb page300 combines content extracted from the single external message board indicated by the selection in the drop-downlist316 with content extracted from theinternal message board114 associated with theaggregation server112. Furthermore, in the example illustrated inFIG. 3, theuser142 may use drop-downlist318 to select the number of message summaries to be displayed in message table302.
Theuser142 selects other input parameters (such as the number of messages to be retrieved) (step203). As described in more detail below, theaggregation server112 may store the other input parameters in a set ofother preferences126.
Theuser142 selects a particular message board topic to view (step204). Theuser142 may, for example, make this selection by identifying a particular company, such as by typing the company's name or stock ticker symbol intext field312 and clickingbutton314. This is only one of many ways in which the user may select a message board topic to view.
Furthermore, in the embodiment illustrated inFIG. 3, theweb page300 also includes a directory (forum)334 user interface control which may, for example, take the form of a drop-down list. For example, thedirectory control334 may allow the user to select either a “stock” forum or a “sports” forum. If theuser142 selects the “stock” forum, then theweb page300 may enable selection of stock symbols intext field312, while if theuser142 selects the “sports” forum, then theweb page300 may enable selection of sports symbols intext field312. More generally, the user's selection in thedirectory control334 dictates which group of symbols is available for selection in thetext input field312. The use of thedirectory control334 is provided merely for purposes of example and does not constitute a limitation of the present invention.
The user's message board selection is transmitted by theweb browser140 over theInternet138 to the messageboard aggregation server112. In response to receiving the user's selection, theaggregation server112 retrieves information derived from messages in the selected source message board(s) having the selected topic (step206). In the embodiment illustrated inFIG. 3, theaggregation server112 also retrieves message content from theinternal message board114. This is not, however, a requirement of the present invention. Theinternal message board114 may, for example, be selectable or de-selectable as a source by theuser142 in the same manner as theexternal message boards102a-m.
Note further that any subset of theexternal message boards102a-mmay be selectable as a source by theuser142. Such a subset may, for example, consist of all of theexternal message boards102a-m, any one of themessage boards102a-m, or any combination of fewer than all of themessage boards102a-m.
The information extracted from the selected source message board(s) by the aggregation server may include any of a variety of information that may be of interest to theuser142. Examples of information that may be extracted from each on-topic message in the selected message board(s) includes, but is not limited to the message title, author, ID, sentiment, time of writing, web page source, person being replied to, and message statistics (e.g., the number of times others have recommended the message, or a rating of the popularity of the message).
At any time during performance of themethod200 illustrated inFIG. 2, theuser142 may select one or more fields to be displayed in the message table302 (step208). For example, in the embodiment illustrated inFIG. 3, the message table includes acolumn322alabeled “Message Titles,” which always displays the titles of the messages summarized in the table302. The table302 also includes, however, asecond column322bhaving content that may-be varied by theuser142. More specifically, theuser142 may select link320ato cause thecolumn322bto display the authors of the messages being summarized in the table302 (as illustrated inFIG. 3). Similarly, theuser142 may select link320bto cause thecolumn322bto display the times at which the messages being summarized in the table302 were posted.
The particular selection of fields allowed in the embodiment illustrated inFIG. 3 is merely an example and does not constitute a limitation of the present invention. Rather, theuser142 may be allowed to select any combination of message fields for display in the table302. Other examples of two fields from which theuser142 may select include, but are not limited to: message Title and Author fields; message Title and Time Submitted fields; and message Author and Author Attribute fields. Furthermore, a single column in the table302 may display content from more than one field. For example, a single “time and author” column may simultaneously display both message time and author.
At any time during performance of themethod200 illustrated inFIG. 2, theuser142 may select an order in which message summaries are to be sorted in the message table302 (step210). For example, in the embodiment illustrated inFIG. 3, theuser142 may select the heading ofcolumn322ato cause the contents of the table302 to be sorted by message title, or select the heading ofcolumn322bto cause the contents of the table302 to be sorted by the contents ofcolumn322b(e.g., message author or posting time). Alternatively, for example, the contents of the table302 may be sorted automatically by posting time. Once again, these particular sorting options are merely examples and do not constitute limitations of the present invention.
Theaggregation server112 keeps track of: (1) the source message board(s) selected by theuser142 in source selections1-20; (2) the topic (e.g., company) selected by theuser142 intopic selection121; (3) the field(s) selected by theuser142 infield selections122; (4) thesort order124 selected by theuser142 insort order124; and (5) anyother preferences126 specified by theuser142.
Theaggregation server112 includes anaggregation engine128, which generatesmessage content units132 based on the information extracted instep206 and the user preferences described above (step212). For example, themessage content units132 may include a content unit for each message that matches the topic selection121 (e.g., company) in any of the source message board(s) indicated by the source selection(s)120. Each of themessage content units132 may include information only for the fields specified by thefield selections122, but this is not required. Themessage content units132 may, for example, include extracted information for fields other than those specified by the field selections. Themessage content units132 may include all of the information that was extracted instep206.
As will be described in more detail below, the information in themessage content units132 forms the basis for the information displayed in the message table302 on the web page300 (FIG. 3). In the embodiment illustrated inFIG. 3, theframe308 displays aweb page308 corresponding to one of the message summaries displayed in the message table302. When theweb page300 is first displayed, the message content corresponding to the first message summary in the table302 may be displayed by default in theframe308. Thereafter, theuser142 may select any of the message summaries in the table302, such as by clicking on the title of the message incolumn322a, to cause message content for a different message to be displayed-in theframe308.
Theaggregation engine128, therefore, providesmessage content130 corresponding to the currently-selected message summary in the message table302 (step214). Theaggregation engine128 may, for example, provide thecontent130 in the form of HTML and/or other web content by copying the content130 from its source message board (e.g., one of theexternal message boards102a-mor the internal message board114). Thecontent130 may either be copied to a storage medium local to theaggregation server112, or merely passed as a reference to theclient web browser140, which may retrieve themessage content130 directly from its source and display it in theframe308, without using theaggregation server112 to serve thecontent130 to theuser142.
Theaggregation server112 includes aweb page generator134, which produces an aggregated web page136 (including HTML and/or other web content) that includes both themessage content units132 and the message content130 (or a link to the message content130) (step216). The aggregatedweb page136 may, for example, include a first frame for displaying a table including information from themessage content units132, and a second frame for displaying themessage content130.
Theaggregation server112 transmits the aggregatedweb page136 to theweb browser140 over the Internet (step218). Theweb browser140 displays a window (such as thewindow300 shown inFIG. 3) including: (1) web content (such as the web page306) representing a first message posted to a first online forum, such as theexternal message board102a; and (2) a plurality of message summaries (such as are displayed in the table302) including information derived from the first message (such as themessage summary324 of the message304) and second information derived from a second message in the plurality of messages (such as themessage summary326 of another message not displayed in the window300). The web content and the message summaries may be displayed in different frames in the same window.
As described above, themessage content units132 that are downloaded by theweb browser140 to the local machine of theuser142 may include more information than is displayed in the table302. The table302 may, for example, be designed to display only the information that is considered most important to theuser142, such as the title, author, and/or timestamp of the aggregated messages. Theuser142 may, however, read a particular one of the message summaries in the table302 and desire to obtain additional information about the corresponding message. Although theuser142 could obtain such additional information by clicking on the message summary, thereby causing the corresponding message web content to be displayed in theframe308, this requires theweb browser140 to download and render additional web content. Acquiring additional information about many messages in this way may therefore be tedious and time-consuming.
Alternatively, theweb page300 allows theuser142 to quickly obtain additional summary information about any message listed in the table302 by, for example, moving and holding (“hovering”) the mouse cursor over the message's summary. For example, in the case illustrated inFIG. 3, theuser142 has hovered the mouse cursor overmessage summary324, thereby causing theweb page300 to display atooltip328 containing additional summary information about thesource message304. In the example illustrated inFIG. 3, thetooltip328 includes additional information such as the message ID, author, sentiment, date and time, and the beginning of the message text.
Because the additional summary information has been preloaded by theweb browser140 in the process of downloading themessage content units132 from theaggregation server112, theweb browser140 may generate and display the tooltip essentially instantaneously, and without again accessing theserver112. This allows theuser142 to quickly browse such additional information for many messages listed in the table302 quickly and easily, simply by moving the mouse cursor over the corresponding message summaries.
The aggregation of messages from multiple message boards at multiple URLs into a single rich web page, including content initially is hidden and that may be displayed essentially instantaneously by theweb browser client140 without the need to make an additional access to theserver112, is made convenient by the increasing availability of broadband connectivity to users. Such broadband connectivity increasingly is available not only through wired networks at home and in the workplace but also through wireless networks accessible using mobile computing devices. By making it feasible for theclient web browser140 to download content-rich web pages without causing theuser142 to incur a significant delay before the web page is displayed, broadband connections allow theweb browser140 to provide a degree of interactivity in web pages that approaches or even matches that previously available only in client-side applications.
Note that the use of a tooltip is provided merely as an example and does not constitute a limitation of the present invention. Rather, the additional summary information may be provided in other forms, such as in a static object (e.g., a text box) on theweb page300. Furthermore, theuser142 may cause the additional summary information to be displayed using actions other than hovering, such as clicking or pressing a hotkey.
The tooltip, or other graphical user interface element that is used to display additional summary information, may be variable in size. For example, theweb page300 may allow theuser142 to select from among three sizes: small, large, and very large. The very large size may be particularly useful for users who are visually impaired. Such a feature may make it possible for visually impaired users to benefit from the features of theweb page300, without requiring the design of the web page (e.g., the font size of text in the table) to change.
Furthermore, theweb page300 may be implemented such that selecting (e.g., hovering or clicking) one of the message summaries in the table302 always causes the corresponding message to be displayed in theframe308, while the additional summary information (e.g., tooltip) is displayed. Although there may be some delay in loading and displaying the full message in theframe308, theuser142 may view the additional summary information essentially immediately, thereby enabling theuser142 to decide quickly whether to wait for the remainder of the message to load or to move on to the next message summary.
Theweb page300 may allow theuser142 to post additional messages to any-of the source message boards. For example, in the embodiment illustrated inFIG. 3, theweb page300 includes an “Add Message”button330 that theuser142 may click to add a new message. When theuser142 clicks thebutton330, a web page may be displayed which allows theuser142 to type a new message and submit it either to theinternal message board114 or to one of theexternal message boards102a-m. In either case, once theuser142 has posted a new message, the message may be displayed in theframe308, and a summary of the message may be displayed in the table302.
Similarly, theweb page300 may include a “Reply Message” button (not shown inFIG. 3) that theuser142 may click to reply to the message currently being shown in theframe308. When theuser142 submits a reply, the reply may be posted to the same message board as the message to which theuser142 has replied, whether that message board is external or internal to theaggregation server112. Alternatively, theuser142 may be allowed to choose whether to reply from theinternal message board114 maintained by theaggregation server112 or from the external message board currently displayed in theframe308.
Message summaries in the message table302 may be sorted in any manner. For example, the summaries may be sorted by time of posting by default. Theuser142 may, however, sort these messages in other ways (e.g., by message title, message author, message ID, message sentiment, message web page source, person being replied to). If the message table302 includes message summaries derived from multiple source message boards, the message table302 may nonetheless display the summaries in an aggregated sorted list. For example, the summaries may be sorted by time of posting, in which case message summaries corresponding to messages from different source message boards may be interwoven with each other according to the times at which they were posted. This feature provides theuser142 with a unified view of messages across multiple message boards.
Among the advantages of the invention are one or more of the following. The features of theweb page300 illustrated inFIG. 3 provide an improvement in speed and ease of use when accessing message table content and corresponding message content, in comparison to conventional systems for performing such functions. In particular, theweb page300 both allows theuser142 to view a message summary and corresponding message content contemporaneously, and to quickly scan additional message summary information not contained in the table302.
Furthermore, the techniques disclosed herein make it possible to read and write messages from and to multiple message board sources. Writing messages can be performed either from theweb page300, or at the original message board source in theframe308. This saves theuser142 time in comparison to reading and writing multiple message boards using distinct web browser windows for each message board.
By providing features that are attractive and useful to frequent users of financial message boards, the techniques disclosed herein provide an opportunity to generate significant revenue from advertising. An example of a banner advertisement332 for a financial services firm is shown on theweb page300 inFIG. 3. Note, however, that the web page300 (and the web site of which it is a part) may generate revenue using any mechanism, not merely banner advertisements.
Furthermore, note that content other than an advertisement may occupy the space occupied by the advertisement332 inFIG. 3. For example, theaggregation server112 may display an advertisement for basic (i.e., non-paid) users, but display additional summary information (such as the information displayed by thetooltip328 inFIG. 3) in a static object (such as a text box) in the same location as but instead of the advertisement332 for premium (i.e., paid) users. Theweb page300, in other words, may be designed to make efficient use of available screen “real estate” to tailor the content that is displayed in an attempt to maximize revenue.
It is to be understood that although the invention has been described above in terms of particular embodiments, the foregoing embodiments are provided as illustrative only, and do not limit or define the scope of the invention. Various other embodiments, including but not limited to the following, are also within the scope of the claims. For example, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions. In particular, the functions performed by theaggregation server112 shown inFIG. 1 may be further subdivided into additional components for performing the same functions.
Although certain examples disclosed herein relate to financial message boards, the present invention is not limited to such examples. More generally, the techniques disclosed herein may be applied to any kind of messaging system, such as email and newsgroups, and to messaging systems containing messages whose content does not relate to finance. Furthermore, the techniques disclosed herein may be applied to aggregate content from web sites and other communications systems that are not designed as message boards. For example, the techniques disclosed herein may be used to aggregate news articles posted to news web sites, such as the web site for the New York Times (www.nytimes.com) or the Business Week (www.businessweek.com), even though such web sites are not designed as message boards to which members of the public may post messages. The term “message, as used herein, therefore, includes not only messages posted to message boards, but more generally to any unit of communication, such as an email message, a newsgroup posting, or a news article posted by an administrator to a news web site.
As described above, theaggregation server112 extracts certain information from source message boards to produce themessage content units132. Examples of categories from which information may be derived include, but are not limited to: message title, message author, message identifier, message sentiment, message timestamp, message web address, message thread, message attribute (e.g., size), message link (links contained in the message), message keyword (keywords contained in the message), message recipient, and message statistics (e.g., the number of times others have recommended the message, or a rating of the popularity of the message). Theuser142 may be allowed to sort the aggregated message summaries displayed in the message table302 by, for example, any of the categories mentioned above.
Ease of visual cognition is key to a successful user interface. Various techniques may be combined with those described above to improve such ease of visual cognition. For example, message summaries in the table302 may be color-coded or otherwise coded (such as by the use of distinct icons or words) according to their source or to any other attribute, such as according to any of the categories mentioned above. The table302 may include any number of rows and columns. Columns may be assigned to message categories (attributes) in any way. For example, a single column may correspond to a single attribute or to multiple attributes. For example, in one embodiment, there are two columns: (1) title and (2) time and author.
Theweb browser140 is not limited to any particular web browser application. Theweb browser140 may, for example, be of any kind and operate on any kind of device (e.g., desktop computer, laptop computer, personal-digital assistant, or smart phone). Furthermore, although thenetwork138 inFIG. 1 is labeled as the “Internet,” theweb browser140 andaggregation server112 may communicate over any kind of network, such as a private intranet.
The techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.
Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be a compiled or interpreted programming language.
Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium.
Referring toFIG. 4A, an illustration is shown of a graphical user interfacetext input control400 for use in assisting in the completion of text input by a user according to one embodiment of the present invention. Thecontrol400 includes atext input field402 into which the user may type text.
In the particular embodiment illustrated inFIG. 4A, thetext input field402 is used for entering either the name of a company or the stock ticker symbol of the company. Thetext input field402 may, for example, be implemented in a financial message board aggregation web site of the kind described in the above-referenced patent application entitled “Message Aggregator”, now issued under U.S. Pat. No.: 7,529,795. Thetext input field402, however, may be used for entering text of any kind, and is not limited to use in any particular kind of computer program (such as a web browser).
For purposes of the following discussion, however, assume that thetext input field402 is used to enter either the name of a company or the stock ticker symbol of the company. The program that provides thetext input field402 may maintain a list of ticker-name tuples. For example, one tuple may include the stock ticker symbol “AAP” and the name of the company having that stock ticker symbol, namely “Advance Auto Parts Inc.” Another tuple may, for example, include the stock ticker symbol “AAPH” and the name of the company having that stock ticker symbol, namely “American Petro-Hunter Inc.” Yet another tuple may, for example, include the stock ticker symbol “AAPL” and the name of the company having that stock ticker symbol, namely “Apple Computer Inc.”
In the particular example illustrated inFIG. 4A, the user has begun to type the text “aap”. As the user types, the program that provides thetext input field402 may attempt to match the text that the user has typed so far against any of the text in the tuples maintained by the program. For example, the program may attempt to match the text typed by the user so far against both the stored list of stock ticker symbols and the list of corresponding company names.
If the program determines that the text typed by the user so far matches any of the text in a particular tuple, the program may indicate such a match to the user. For example, if the program determines that the text typed by the user so far matches either the stock ticker symbol or the company name of a particular tuple, the program may indicate to the user that a match has been found. If matches are found with text in multiple tuples, the program may indicate to the user that multiple matches have been found.
In the particular embodiment illustrated inFIG. 4A, any matches are indicated to the user by displaying a list of matching tuples, consisting of the stock ticker name followed by the company name (in parenthesis) of each matching tuple. For example, inFIG. 4A, the text typed so far by the user (“aap”) matches three stock ticker symbols (“AAP”, “AAPH”, and “AAPL”). The program therefore displays the text408a-cof the three matching tuples in thelist406a. It should be appreciated that the contents of the list may change as the user continues to type additional characters in thetext input field402 or as the user deletes previously-typed characters in thetext input field402.
Furthermore, the subset of each text item in the list that matches the input text may be visually emphasized. For example, inFIG. 4A, the text “AAP” may be highlighted (such as by color coding) in each of the matchingtext strings408a,408b, and408c. Highlighting the matching text in this way enables the user to quickly recognize the basis of each match, thereby enabling the user to quickly determine whether any of the displayed text strings408a-ccorresponds to the company for which the user was searching.
In the particular example illustrated inFIG. 4A, the text404atyped by the user in thetext input field402 only matches stock ticker symbols in the set of stored tuples. Referring toFIG. 4B, an example is illustrated in which thetext404b(“appl”) typed by the user matches company names (e.g., “Apple Computer Inc.”, “Applied Biosystems Group”, and “Applied Digital Solutions”) instead of stock ticker symbols. The list406bdisplayed inFIG. 4B, therefore, includes text410a-jcorresponding to tuples having company names that match the typedtext404b. Although the list406bis sorted by stock ticker symbol, the list406bmay be organized in any manner. For example, the list406bmay be sorted by company name. Note that the list406bdisplayed inFIG. 4B may be generated dynamically while the user types thetext404bin the same manner as described above with respect to thelist406aofFIG. 4A, namely by attempting to match thetext404bagainst both stock ticker symbols and company names.
Referring toFIG. 4C, an example is illustrated in which thetext404c(“del”) typed by the user matches both ticker symbols (i.e., “DEL”, “DELL”, and “DELT”) and company names (i.e., “Delcath Systems Inc.”, “Delta Capital Technologies Inc.”, “deltathree Inc.”, “Delhaize Group (ADR)”, “Delta Financial Corp.”, and “Delphi Financial Group Inc.”). Thelist406cdisplayed inFIG. 4C, therefore, includes both text412a-ccorresponding to tuples having ticker symbols that match the typedtext404candtext412d-jhaving company names that match the typedtext404c. Although thelist406cincludes two sections-one for matching ticker symbols and one for matching company names-the list may be organized in any manner. For example, thelist406cmay be a single list sorted by company name or ticker symbol.
Once a list of matching tuples has been displayed (such as any of the lists406a-cillustrated inFIGS. 4A-4C), the program may allow the user to select a tuple from the list to complete the text being typed in thetext input field402. For example, if the user clicks on an item in the list, the program may fill in thetext field402 with the stock ticker symbol of the tuple selected by the user. Note, however, that when the user selects a tuple from the list, the program may fill in thetext field402 with a stock ticker symbol even though the user had begun to type a company name, or vice versa. The user may also select more than one of the output strings by using the shift or control key while selecting a subset of the desired output strings.
The techniques disclosed herein may be used to reduce the number of keystrokes required to be input by the user. This may save the user effort and enable the user to use the corresponding computer program more quickly. For example, in comparison, conventional financial portal web sites typically provide a “symbol lookup” feature that allows a user to find the stock ticker symbol for a company by typing the company's name, and then clicking on a “find” button.
Examples of existing financial portal web sites, some of which provide some form of “symbol lookup” feature, but which do not include the kind of lookup features disclosed herein, include:
http://moneycentral.msn.com/investor/common/find.asp?NextPage=/detail/sto-ck quote,
http://finance.yahoo.com/lookup, http://money.cnn.com/quote/lookup/index.html,
http://www.marketwatch.com/tools/quotes/lookup.asp, http://clearstation.etrade.com/cgi-bin/symbol search, http://www.marketcenter.com/std/search.action,
http://www.marketcenter.com/std/toolbox.jsp, http://www.quote.com/qc/lookup/symbol search.aspx, http://www.wallstreettape.com/charts/custom/symbol-lookup.asp,
http://online.wsj.com/public/us, http://online.barrons.com/public/main,
http://bigcharts.marketwatch.com/symbollookup/symbollookup.asp,
http://www.esignalcentral.com/support/symbol/default.asp, http://www.hoovers.com/free/,
http://www.bloomberg.com/apps/tkrlookup, http://www2.barchart.com/lookup.asp,
http://stockcharts.com/index.html, http://tools.thestreet.com/tsc/quotes.html?pg=qcn&,
http://www.earningswhispers.com/tickerlookup.asp, http://www.whispernumber.com/index.jsp,
http://www.google.com, http://quote.morningstar.com/TickerLookup.html, http://www.fool.com,
http://www.siliconinvestor.com, http://www.investorshub.com, http://www.ragingbull.com,
http://www.boardcentral.com, http://www.briefing.com/, http://www.newyorktimes.com,
http://www.washingtonpost.com, http://www.boston.com, http://www.ft.com,
http://news.bbc.co.uk/, http://www.inc.com, http://www.forbes.com, http://www.fortune.com,
http://research.businessweek.com/ticker/create_ticker.asp, http://www.etrade.com,
http://www.ameritrade.com, http://www.schwab.com, http://www.scottrade.com,
http://www.sharebuilder.com, and http://www.vanguard.com, http://seekingalpha.com/,
http://portfolios.abcnews.go.com/guotes/getQuote, http://www.investorvillage.com/home.asp,
http://www.tickertech.com/cgi/?a=lookup, http://www.investors.com/symbol.asp,
http://www.cboe.com/DelayedQuote/Symbol.aspx,
http://personal.fidelity.com/research/stocks/content/stocksind ex.shtml?bar=c,
http://www.quicken.com/investments/tsl/,
http://www.globeinvestor.com/static/hubs/lookup.html, http://www.usatoday.com/money/search-tips.htm,
http://stockhouse.com/, http://www.thelion.com/, http://www.island.com/,
http://www.zacks.com/,
http://www.troweprice.com/common/indexHtml3/0,0,htmlid=38,00.html,
http://www.amex.com/?href=/quickquote/SymbolLookup.jsp, http://www.nasdaq.com,
http://www.nyse.com/, http://www.londonstockexchange.com/en-gb/, http://www.euronext.com,
http://www.tsx.com/, http://www.asx.com.au/, http://www.advfn.com,
http://www.mldirect.ml.com, http://www.foxnews.com/business/index.html,
http://www.quickandreilly.com/, http://www.economist.com/index.html,
http://www.kiplinger.com/, http://www.pennystock.com/, http://www.wallstreetselect.com/,
http://www.sec.gov/edgar.shtml, http://www.edgar-online.com/, http://freeedgar.com/,
http://www.thedeal.com, http://www.investools.com, http://www.activetradermag.com/,
http://www.traders.com/, and http://www.ipohome.com.
The techniques disclosed herein may also provide the user with a beneficial degree of flexibility. For example, the techniques disclosed herein provide the user with the flexibility to type either a stock ticker symbol or a company name, depending on the user's preference, or depending on which of the two the user remembers most easily. The user, therefore, is not limited to a particular mode of input dictated by the program. This may make the program easily usable by different classes of users, such as both those users who are sophisticated stock traders (and therefore likely to remember stock ticker symbols) and less sophisticated users (who are likely to remember company names rather than symbols). More generally, the techniques disclosed herein reduce the need for the user to rely on his memory to provide necessary textual input.
It is to be understood that although the invention has been described above in terms of particular embodiments, the foregoing embodiments are provided as illustrative only, and do not limit or define the scope of the invention. Various other embodiments, including but not limited to the following, are also within the scope of the claims. For example, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions.
Although certain examples described herein use stock ticker symbol and company name as the categories of text strings stored in n-tuples, the techniques disclosed herein may be applied to text strings representing any categories of content. For example, company sector (or other means of categorizing a company) is another example of a category of content to which the techniques disclosed herein may be applied.
Although particular examples disclosed herein involve the use of pairs of text strings, such pairs are merely special cases of n-tuples, in which n=2. The techniques disclosed herein may be applied more generally, to n-tuples where n>1. Furthermore, the text in the tuples may be of any kind and have any relationship to each other. For example, although stock ticker symbols typically have some textual similarity to the corresponding company names, this is not required. For example, an n-tuple may include a person's name and the person's street address, in which case there may be no textual similarity between the various text strings in the n-tuple.
In certain examples disclosed herein, the text typed by the user is matched against the beginning (leading characters) of text in the n-tuples. This is not, however, a requirement of the present invention. Rather, matching may be performed by comparing any subset of the text typed by the user against any subset of the n-tuple text. Furthermore, matching need not be performed against all elements in an n-tuple, or in the same manner against all elements in an n-tuple. For example, if n=3, matching may be performed against two rather than three of the text strings in the n-tuple. Although certain examples disclosed herein provide the user with an indication of matches by displaying a list of all text in matching n-tuples, this is not a requirement of the present invention. Rather, matches may be displayed in a form other than a list. Furthermore, displayed matches need not display all of the text in matching tuples. The user may be allowed to select a matching tuple using any kind of input mechanism.
Any kind of computer program may implement the techniques disclosed herein. For example, the techniques disclosed herein may be implemented in a web site displayed by a web browser. Although the concept of an n-tuple is used herein, the techniques disclosed herein may be implemented without storing data in structures organized as n-tuples. Rather, the techniques disclosed herein may be implemented using any kind of data structure, such as linked lists. The data against which the user input is matched may be pre-stored, downloaded over a network connection, generated on-the-fly, or produced, stored, and processed in any suitable manner.
The techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.
Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be a compiled or interpreted programming language.
Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium.
A computer program provides a first set of representations (e.g., textual representations) of a first set of hyperlinks. In response to selection by a user of one of the first set of hyperlink representations (such as by clicking on or hovering a cursor over the representation), the program displays a second set of representations (e.g., graphical representations) of a second set of hyperlinks. The user may select one of the second set of representations, in response to which the program navigates to the destination of the hyperlink. The second set of representations may, for example, be logos of companies, and the second set of hyperlinks may be hyperlinks to the companies' web sites.
For example, referring toFIG. 5A, aweb page500 is shown according to one embodiment of the present invention. Theweb page500 includes afirst frame502adisplaying a first set oftextual hyperlink representations504a, and asecond frame502bdisplaying the contents of another web page.
In the embodiment illustrated inFIG. 5A, the first set ofhyperlink representations504aincludes hypertext506a-h. In this example, the hypertext506a-hincludes text representing categories of news web sites. For example,hypertext506a(“World News”) represents the category of world news web sites,hypertext506b(“Business News”) represents the category of business news web sites, and so on. The particular number, selection, and categorization of hypertext506a-hshown inFIG. 5A is provided merely as an example and does not constitute a limitation of the present invention.
Thehyperlink representations504aenable the user to access the underlying hyperlinks to external websites by hovering over selecting any of the hypertext506a-h. The user may, for example, select a particular link either by clicking on one of the hypertext links506a-hor by hovering a mouse cursor over one of the hypertext links506a-h.
In response to receiving a selection of one of the hypertext links506a-hfrom the user, theweb page500 displays a second set ofhyperlink representations504b. In the particular example illustrated inFIG. 5A, the user has clicked on or hovered the mouse cursor overhypertext506h(“Stock Research”). In response, theweb page500 has displayed the second set ofhyperlink representations504b, which represent hyperlinks within the selected category. In other words, each of thehyperlink representations508a-lrepresents a hyperlink to a stock research web site.
More specifically, in the embodiment illustrated inFIG. 5A, each of thehyperlink representations508a-lis a graphic image of the logo of the web site that is the destination of the hyperlink. For example, hyperlinkrepresentation508ais the logo of www.bigcharts.com, and thehyperlink representation508aacts as a link to www.bigcharts.com.
Therefore, when the user selects (e.g., clicks on or hovers over) one of the second set ofhyperlink representations508a-l, the web browser displays the destination of the selected hyperlink in theframe502b. For example, if the user selectshyperlink representation508a(i.e., the logo of www.bigcharts.com), the web browser will navigate to and display the home page of www.bigcharts.com inframe502b.
Different sets of hyperlinks are displayed as the user selects (e.g., clicks on or hovers over) different ones of the first set of hyperlinks506a-h. For example, as shown inFIG. 5B, when the user selectshyperlink506d(“UK News”), theweb page500 displays aset504cof hyperlink representations510a-jdepicting logos of UK news web sites. If hovering is enabled to activate thefirst set504aof links506a-j, the user may quickly view the links in different categories by moving the mouse cursor over different ones of thefirst set504aof links506a-h. In a web browser, such a feature may be enabled using AJAX technology, through which all of the logos may be pre-downloaded with theweb page500, and then quickly displayed to the user without requiring additional accesses to the server.
The techniques just described may, for example, be implemented in conjunction with a message board aggregation web site of the kind disclosed in the patent application entitled, “Message Board Aggregator”, now issued under U.S. Pat. No.: 7,529,795.
One advantage of the techniques disclosed herein is that hyperlink representations (e.g., thehyperlinks504band504c) may be displayed to the user essentially instantaneously. Such techniques, therefore, provide the user with a method of scanning through links that is more intuitive and thus quicker for users than traditional techniques. Furthermore, the use of company logos or other graphical representations of hyperlinks facilitates the users experience, because it is likely that the user will already associate the company logo with the corresponding company name (attached to the hyperlink). The method is also visually more appealing than commonly used plain text methods.
It is to be understood that although the invention has been described above in terms of particular embodiments, the foregoing embodiments are provided as illustrative only, and do not limit or define the scope of the invention. Various other embodiments, including but not limited to the following, are also within the scope of the claims. For example, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions. In particular, the functions performed by theaggregation server112 shown inFIG. 1 may be further subdivided into additional components for performing the same functions.
The first set ofhyperlinks504amay be sorted into categories, sub-categories, and so on, in any manner. Alternatively, they may be unsorted. The hyperlinks that are displayed may be predetermined by the web page designer, determined by the user, or any combination thereof. The user may, for example, be provided with the ability to set up categories (and subcategories) comprising favorite website hyperlinks.
Any kind of computer program may implement the techniques disclosed herein. For example, the techniques disclosed herein may be implemented in a web site displayed by a web browser.
The techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.
Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be a compiled or interpreted programming language.
Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium.