Patent Publication Number: US-8533178-B1

Title: Collecting information about suggestions provided to users

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority to U.S. Application No. 61/295,998, filed on Jan. 18, 2010, the contents of which are incorporated herein. 
    
    
     BACKGROUND 
     Information about user activities on a network, such as the Internet, may be useful to providers of content. 
     SUMMARY 
     In one aspect, a system includes a plurality of client devices and a server system. Each of the client devices is configured to implement at least one web browser and a panel application. The web browser is configured to access a plurality of different web pages that each provide search capability. The web pages are each configured to display search suggestions in response to character sequences entered by a user when using the search capability and the search suggestions include the character sequences. The panel application is configured to access search suggestions displayed by the plurality of different web pages at the client device and access the corresponding character sequences that resulted in the search suggestions being displayed. The panel application is further configured to send one or more indications of the displayed search suggestions and corresponding character sequences to a server system. The server system is configured to receive, from the plurality of client devices, the indications of the displayed search suggestions and corresponding character sequences; and generate, based on the received indications, a data structure that correlates character sequences to lists of phrases. 
     Implementations may include one or more of the following features. For example, the panel application may be further configured to determine a search suggestion, from among the displayed search selections, selected by the user and send to the server an indication that the selected search selection was selected. The server system may be configured to generate the data structure based on the received indication that the selected search selection was selected in addition to the received indications of the displayed search suggestions and corresponding character sequences. 
     To access search suggestions displayed by the plurality of different web pages at the client device and access the corresponding character sequences that resulted in the search suggestions being displayed, the panel application may be configured to access search suggestion requests that include character sequences and to access corresponding search suggestion responses that include the search suggestions corresponding to the character sequences. To access search suggestions displayed by the plurality of different web pages at the client device and access the corresponding character sequences that resulted in the search suggestions being displayed, the panel application may be configured to access requests issued by the web browser; apply a set of rules to the accessed requests to detect search suggestion requests from among the accessed requests, the search suggestion requests including character sequences; extract, from the detected search suggestion requests, the character sequences included in the detected search suggestion requests; access search suggestion responses received in response to the detected search suggestion requests, the search suggestion responses including search suggestions; and extract, from the accessed search suggestion responses, the search suggestions included in the search suggestion responses. 
     At least one of the lists of phrases may be a ranked list of phrases. Each of the phrases in the ranked list may be ranked according to a likelihood that a user intended the phrase for the correlated character sequence. The server system may be further configured to determine, for a character sequence, changes in the correlated list of phrases over time. The server system may be configured to generate, based on the changes in the correlated list of phrases over time, a report on changes in consumer interest. The server system may be configured to generate, based on the changes in the correlated list of phrases over time and information about changes in product offerings, a report on changes in consumer interest as product offerings change. 
     In another aspect, requests issued by a web browser executing on a client system are accessed. A set of rules are applied to the accessed requests to detect search suggestion requests from among the accessed requests. The search suggestion requests result from different web pages that are each configured to display search suggestions in response to character sequences entered by a user when using search capability provided by the web page. The search suggestion requests include character sequences. The character sequences included in the detected search suggestion requests are extracting from the detected search suggestion requests. Search suggestion responses received in response to the detected search suggestion requests are accessed. The search suggestion responses include search suggestions that include the character sequences included in the corresponding search suggestion requests. The search suggestions included in the search suggestion responses are extracted from the accessed search suggestion responses. One or more indications of the extracted character sequences and the extracted search suggestions are sent to a server system such that the server system generates, based on the received indications, a data structure that correlates character sequences to lists of phrases. 
     Implementations may include one or more of the following features. For example, the requests issued by the web browser may be HTTP requests and the set of rules may designate uniform resource locators or patterns of uniform resource locators that correspond to destinations for search suggestion requests. A search suggestion, from among the accessed search selections, that was selected by the user may be determined. An indication that the selected search selection was selected may be sent to the server system such that the server system generates the data structure based on the indication that the selected search selection was selected in addition to the indications of the extracted character sequences and the extracted search suggestions. At least one of the lists of phrases may be a ranked list of phrases. Each of the phrases in the ranked list may be ranked according to a likelihood that a user intended the phrase for the correlated character sequence. 
     In another aspect, indications of search suggestions displayed at the client devices and corresponding character sequences are received from a plurality of client devices. The indications result from a plurality of different web pages displayed at the client systems. The web pages each provide a search capability and are configured to display search suggestions in response to character sequences entered by a user when using the search capability. The search suggestions include the character sequences. A data structure that correlates character sequences to lists of phrases is generated based on the received indications. 
     Implementations may include one or more of the following features, For example, at least one of the lists of phrases may be a ranked list of phrases and each of the phrases in the ranked list may be ranked according to a likelihood that a user intended the phrase for the correlated character sequence. Changes in the correlated list of phrases over time may be determined for a character sequence. A report on changes in consumer interest may be generated based on the changes in the correlated list of phrases over time. A report on changes in consumer interest as product offerings change may be generated based on the changes in the correlated list of phrases over time and information about changes in product offerings. 
     Implementations of any of the described techniques may include a method or process, an apparatus, a device, a machine, a system, or instructions stored on a computer-readable storage medium. The details of particular implementations are set forth in the accompanying drawings and description below. Other features will be apparent from the following description, including the drawings, and the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example of a system in which a panel of users may be used to collect information about user activities on a network. 
         FIGS. 2A and 2B  are a flow chart illustrating an example of a process  200  that may be used to collect and employ search suggestions. 
         FIG. 3  is illustrates an example of a report. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates an example of a system  100  in which a panel of users may be used to collect information about user activities on a network, such as the Internet. The system  100  includes client systems  112 ,  114 ,  116 , and  118 , one or more web servers  110 , a collection server  130 , and a database  132 . In general, the users in the panel employ client systems  112 ,  114 ,  116 , and  118  to access resources on the Internet, such as webpages located at the web servers  110 . Information about this resource access is sent by each client system  112 ,  114 ,  116 , and  118  to a collection server  130 . This information may be used to understand user habits. 
     Each of the client systems  112 ,  114 ,  116 , and  118 , the collection server  130 , and the web servers  110  may be implemented using, for example, a general-purpose computer capable of responding to and executing instructions in a defined manner, a personal computer, a special-purpose computer, a workstation, a server, or a mobile device. Client systems  112 ,  114 ,  116 , and  118 , collection server  130 , and web servers  110  may receive instructions from, for example, a software application, a program, a piece of code, a device, a computer, a computer system, or a combination thereof, which independently or collectively direct operations. The instructions may be embodied permanently or temporarily in any type of machine, component, equipment, or other physical storage medium that is capable of being used by a client system  112 ,  114 ,  116 , and  118 , collection server  130 , and web servers  110 . 
     In the example shown in  FIG. 1 , the system  100  includes client systems  112 ,  114 ,  116 , and  118 . However, in other implementations, there may be more or fewer client systems. Similarly, in the example shown in  FIG. 1 , there is a single collection server  130 . However, in other implementations there may be more than one collection server  130 . For example, each of the client systems  112 ,  114 ,  116 , and  118  may send data to more than one collection server for redundancy. In other implementations, the client systems  112 ,  114 ,  116 , and  118  may send data to different collection servers. In this implementation, the data, which represents data from the entire panel, may be communicated to and aggregated at a central location for later processing. The central location may be one of the collection servers. 
     In system  100 , a monitoring application  112   b ,  114   b ,  116   b , and  118   b , also referred to as a panel application, is installed on each of the client systems  112 ,  114 ,  116 , and  118 . The monitoring application  112   b ,  114   b ,  116   b , and  118   b  collects information about various resource accesses and/or user activities and sends that information to the collection server  130 . For example, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may have access to the network stack of the client system  112 ,  114 ,  116 , and  118  on which the monitoring application  112   b ,  114   b ,  116   b , and  118   b  is installed. The monitoring application  112   b ,  114   b ,  116   b , and  118   b  may monitor network traffic to analyze and collect information regarding requests for resources sent from the client system  112 ,  114 ,  116 , and  118  and subsequent responses. For instance, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may analyze and collect information regarding HTTP requests and subsequent HTTP responses, such as those sent to web servers  110 . 
     Accordingly, when a user of one of the client systems  112 ,  114 ,  116 , or  118  employs, for example, a web browser  112   a ,  114   a ,  116   a , or  118   a  to visit, view, or interact with web pages, information about these activities may be collected and sent to the collection server  130  by the monitoring application  112   b ,  114   b ,  116   b , and  118   b . In some implementations, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may collect and send to collection server  130  information about content sent to the client system  112 ,  114 ,  116 , or  118  (for example, from web servers  110 ) in response to user interaction with a web page. 
     For instance, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may capture search suggestions provided as a user types search characters or terms into a search box on a web page, and send information about such search suggestions to the collection server  130 . Some web pages may provide a user with search functionality, such as a text box in which the user can type a search query (composed of one or more characters or terms) and a submit button that can be used to submit the search query. The search functionality may be provided, e.g., either to search the website to which the web page belongs or to search the web in general. As the user types characters in the search box, code, such as Javascript code, in the web page may capture the entered characters, either in whole or in part, and send the characters to a server, which returns search suggestions based on the characters. The code can then display those search or query suggestions to the user, and may do so in a manner that makes each selection separately selectable by the user to initiate a search using the selected search suggestion. 
     The code can, for instance, capture the text entered into the search box upon each occurrence of a keyup event (e.g., a key on the keyboard raising after being pressed down by the user) and send the text in the search box to the server, which can then return the query suggestions. Thus, query suggestions can be based on a partial set of the search term or terms, with the suggestions being refined as further letters are typed. As an example, a user may type the letter “s” into the search box, which results in query suggestions such as “swine flu,” “southwest,” and “sparky.” The user can continue by typing, for instance, a “p” as the next letter (so that the partial search term is “sp”). As a result, query suggestions such as “sparky,” “spring break,” and “speed test” may be provided. This may continue until the user selects a suggested search query or enters his or her own search query. 
     As an example, the web page may employ asynchronous Javascript and XML (AJAX) techniques to obtain and display the search suggestions. For instance, Javascript code in the webpage may detect a keyup event and, in response, capture the character sequence in the search box. The Javascript uses an XmlHttpRequest object to send a request that includes the captured character sequence to the server. When the server returns the search suggestions to the XmlHttpRequest object, the Javascript code accesses the search suggestions, and modifies the web page to display the search suggestions. 
     In general, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may analyze and capture information about the requests for the search suggestions sent to the server, and the subsequent response from the server. Some or all of the captured information can then be sent by the monitoring application to the collection server  130 . 
     For example, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  may implement a filter or set of rules that is used to detect requests for search queries. For instance, the filter or rules may designate URLs or patterns of URLs that correspond to the destinations for requests for search suggestions. The monitoring application  112   b ,  114   b ,  116   b , and  118   b  may apply the filter or rules to the URLs included in the requests that are observed by the monitoring application  112   b ,  114   b ,  116   b , and  118   b . When a URL in a request matches the filter or rules, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  can extract and record the character sequence included in the request. Once a response to the request is received, the monitoring application  112   b ,  114   b ,  116   b , and  118   b  can capture the search suggestions that were returned in response to the character sequence included in the request. 
     Some or all of the information related to the search suggestions (for example, the character sequence and corresponding suggestions) may then be sent by the monitoring application  112   b ,  114   b ,  116   b , and  118   b  to the collection server  130 . The information sent to the collection server  130  may also include an identifier corresponding to the web page, or provider of the webpage, that included the search functionality. In addition, information about the search terms searched for by the user may be sent to the collection server  130  and, to the extent the monitoring application  112   b ,  114   b ,  116   b , and  118   b  can determine the search terms search for were selected from the search selections, the information may so indicate. The information sent to the collection server  130  may be sent in an XML file, which may indicate the association among the various pieces of information. The collection server  130  may store this information as part of collection data  132   a.    
     When the monitoring application  112   b ,  114   b ,  116   b , and  118   b  is installed across a broad selection of client systems, the system  100  may collect search suggestions across multiple web pages that provide search functionality, and multiple user queries, and therefore provide information across a broad cross-section of search suggestions and corresponding character sequences that resulted in the search suggestions. 
     In some implementations, the monitoring application  112   b ,  114   b ,  116   b , and  118   b , for instance, may collect and send to the collection server  130 , either in addition or as an alternative to the information described above, visitation data such as the URLs of web pages or other resources accessed, the times those pages or resources were accessed, and an identifier associated with the particular client system on which the monitoring application is installed (which may be associated with the demographic information collected regarding the user or users of that client system). The collection server  130  receives and records this information. The collection server  130  may aggregate the recorded information from the client systems and store this aggregated information in the database  132  as collection data  132   a.    
     The collected information can be used to construct, for instance, a database or other data structure that can be interrogated with a character sequence, and return the most likely complete phrases that a user intends. This can be constructed based on the search suggestion data alone, or the search suggestion information combined with the visitation data. For instance, the collected data may reflect character sequences entered by actual users, the suggested search selections corresponding to those character sequences (as well as any refinements to the suggestions as the user continued to enter characters), the search query ultimately searched by the user (and whether those terms were selected from the set of suggested search queries), and whether the user selected any of the search results (and, if so, which results). This information may also indicate whether the user made similar searches after looking at the search results. Also, the data can indicate the changes to search suggestions over time, and/or the variation of suggestions for certain terms/character sequences among web pages that provide search functionality. 
     Some or all of this information can be analyzed to rank sets of one more phrases with respect to the likelihood that a user intends the phrases for a given character sequence, and the ranking information can be stored in a database or other data structure. The data structure can be used to provide search suggestions. Alternatively, or additionally, the data structure can be used in other applications in which it is useful to discern a user intended phrase from a set of character sequences. The data structure may also be used in combination with other panel data to build algorithms or statistical models that deliver targeted search suggestions. 
     In some implementations, the visitation data, either alone or in combination with the search suggestion data described above or other collected data, may be analyzed to determine the visitation or other habits of users in the panel, which may be extrapolated to the larger population of all Internet users. The users of the client systems  112 ,  114 ,  116 , and  118  may be a group of users that are a representative sample of the larger universe being measured, such as the universe of all Internet users or all Internet users in a geographic region. To understand the overall behavior of the universe being measured, the behavior from this sample may be projected to the universe being measured. The size of the universe being measured and/or the demographic composition of that universe may be obtained, for example, using independent measurements or studies. For example, enumeration studies may be conducted monthly (or at other intervals) using random digit dialing. 
     The users in the panel may be recruited by an entity controlling the collection server  130 , and the entity may collect various demographic information regarding the users in the panel, such as age, sex, household size, household composition, geographic region, and household income. The techniques chosen to recruit users may be chosen or developed to help insure that a good random sample of the universe being measured is obtained, biases in the sample are minimized, and the highest manageable cooperation rates are achieved. Once a user is recruited, the monitoring application is installed on the user&#39;s client system to collect the information about the user&#39;s use of the client system to access resources on the Internet and to send that information to the collection server  130 . 
     The information collected during a particular time period (session) can be associated with a particular user of the client system (and/or his or her demographics) that is believed or known to be using the client system during that time period. For example, the monitoring application may require the user to identify his or herself, or techniques such as those described in U.S. Patent Application No. 2004-0019518 or U.S. Pat. No. 7,260,837, both incorporated herein by reference, may be used. Identifying the individual using the client system may allow the usage information to be determined and extrapolated on a per person basis, rather than a per machine basis. In other words, doing so allows the measurements taken to be attributable to individuals across machines within households, rather than to the machines themselves. 
     To extrapolate the usage of the panel members to the larger universe being measured, some or all of the members of the panel may be weighted and projected to the larger universe. In some implementations, a subset of all of the members of the panel may be weighted and projected. For instance, analysis of the received data may indicate that the data collected from some members of the panel may be unreliable. Those members may be excluded from reporting and, hence, from being weighted and projected. 
     The reporting sample (those included in the weighting and projection) are weighted to insure that the reporting sample reflects the demographic composition of the universe to be measured, and this weighted sample is projected to the universe. This may be accomplished by determining a projection weight for each member of the reporting sample and applying that projection weight to the usage of that member. 
     The usage behavior of the weighted and projected sample is then considered a representative portrayal of the behavior of the defined universe. Behavioral patterns observed in the weighted, projected sample are assumed to reflect behavioral patterns in the universe. 
     Reports can be generated from this information. For example, this data may be used to estimate the number of unique visitors visiting certain web pages or groups of web pages, or unique visitors within a particular demographic visiting certain web pages or groups of web pages. This data may also be used to determine other estimates, such as the frequency of usage per user, average number of pages viewed per user, and average number of minutes spent per user. 
       FIGS. 2A and 2B  are a flow chart illustrating an example of a process  200  that may be used to collect and employ search suggestions. The following describes process  200  as being performed by the system  100 . However, the process  200  may be performed by other systems or system configurations. 
     A panel application  112   b  accesses requests issued by the web browser  112   a  executing on a client system  112  ( 202 ). For example, the web browser  112   a  may issue HTTP requests for web pages and other resources as a user of the client system  112  employs the web browser  112   a  to navigate to different web pages. During the course of navigating to different web pages, the user may navigate to different web pages that are each configured to display search suggestions in response to character sequences entered by a user when using search capability provided by the web page. When the user employs the search capability of a web page by entering character sequences, the web browser  112   a  may issue requests for search suggestions to a server and those requests may include the entered character sequences 
     The panel application  112   b  applies a set of rules to the accessed requests to detect search suggestion requests from among the accessed requests ( 204 ) and extracts, from the detected search suggestion requests, the character sequences included in the detected search suggestion requests ( 206 ). For example, as described above, the panel application may employ a set of rules that designate URLs or patterns of URLs that correspond to the destinations for requests for search suggestions. The panel application  112   b  may apply the rules to the URLs included in the accessed requests to detect those that are search suggestion requests. Once a search suggestion request is detected, the panel application  112   b  extracts the character sequence that is included in the request. For example, the panel application  112   b  may access a set of rules that define where the character sequence is included in the structure of the search suggestion request, and employ those rules to extract the character sequence. 
     The panel application also accesses search suggestion responses received in response to the detected search suggestion requests ( 208 ). In general, when a search suggestion request is sent to a server, the server sends back a search suggestion response that includes search suggestions that correspond to the character sequence sent in the search suggestion request. The returned search suggestions may all include the corresponding character sequences. 
     The panel application  112   b  extracts, from the accessed search suggestion responses, the search suggestions included in the search suggestion responses ( 210 ). For example, the panel application  112   b  may access a set of rules that define where the search suggestion results are included in the structure of the search suggestion response, and employ those rules to extract the search suggestions. The panel application  112   b  also may track which search suggestion responses correspond to which search suggestion requests so that the search suggestions can be associated with the corresponding character sequences. 
     The panel application  112   b  may determine search suggestions that were selected by the user (e.g., selected either by selecting the displayed search suggestion or by completing the typing of the search term(s) corresponding to the search suggestion) ( 212 ). For example, in some cases, the web browser  112   a  may issue a search request with the selected search suggestion or, more generally, issue search requests that include search terms, whether or not those terms were selected from a set of search suggestions. The panel application  112   b  may include a set of rules that designate URLs or patterns of URLs that correspond to destinations for search requests. The rules may also designate where the search terms are located within those request. Using those rules, the panel application  122   b  may extract the search terms, which correspond to the selected search suggestion, from the search request. 
     The panel application  112   b  can simply collect all search terms issued in search requests (for example, with an indication of which web page was used for the search terms), without specific information about whether or not such search terms were included in search suggestions displayed at the client system  112 . In some implementations, the panel application  112   b  may track that those search terms issued in search requests that were also included in search suggestions displayed at the client system  112 , and note this fact in association with the search terms. In yet other implementations, the panel application  112   b  may determine that a user affirmatively selected one of the search suggestions (for example, by clicking on the suggestion from a displayed list of the suggestions), and note this fact in association with the search term corresponding to the selected suggestion. 
     The panel application  112   b  sends one or more indications related to the search suggestions to the collection server  130  ( 214 ). For instance, the panel application  112   b  sends of indications of the extracted character sequences and the extracted search suggestions to the collection server  130 . As another example, the panel application  112   b  may send an indication of selected search suggestions. For instance, the panel application  112   b  may simply send search terms employed in a search (which will inherently indicate those that were part of the search suggestions), or may send more specific indications of whether the search terms were included in search suggestions or whether the user affirmatively selected the search terms from a list of search suggestions. 
     If just the search terms are sent, whether or not the search terms were selected from a list of suggestions may be inferred from information about the search terms and information about the search suggestions. For instance, if the information reflects that a list of search suggestions were received and the next request issued by the browser was a search request that includes search terms from the list of search suggestions, then it is likely the user selected the search terms from the suggestions. As a more specific example, a search suggestion request is sent with the character sequence “sp,” with a search suggestion response being received that includes the suggestion “sparky.” If the next search related request issued by the browser is a search request that includes the search term “sparky,” then it is likely the user selected the suggestion “sparky” from the list of suggestions. The collection server  130 , or another server, may be able to make such determinations based on the information received from the panel application  112   b.    
     The collection server  130  receives, from the plurality of client devices  112 ,  114 ,  116 , and  118 , the indications sent by the panel application  112   b , and similar indications sent by panel applications  114   b ,  116   b , and  118   b  ( 216 ). The collection server  130 , or another server forming part of a server system with the collection server  130 , generates a data structure that correlates character sequences to lists of phrases based on the received indications ( 218 ). A given list of phrases may be a ranked list of phrases, with each of the phrases in the ranked list being ranked according to a likelihood that a user intended the phrase for the correlated character sequence. 
     The collection server  130 , or another server, may employ the generated data structure ( 220 ). As described above, the data structure may be employed in a number of manners. For example, the data structure can be used to provide search suggestions. Alternatively, or additionally, the data structure can be used in other applications in which it is useful to discern a user intended phrase(s) from a character sequence. For example, in the retail environment, the data structure can be used to understand changing consumer preferences, particular as product offerings change. In general, over time, a given character sequence may correspond to a changing list of search suggestions. This may occur, for example, as users search for new product offerings, or change their interest to now search for products that may have been offered previously, but were not popular. 
     Thus, for example, a server system may use the data structure to determine, for a character sequence, changes in the correlated list of phrases over time. Based on the changes in the correlated list of phrases over time, the server system may generate a report on changes in consumer interest. Alternatively, or additionally, based on the changes in the correlated list of phrases over time and information about changes in product offerings, the server system may generate a report on changes in consumer interest as product offerings change. 
     As an example, a report may indicate frequently entered character sequences, along with the changes in associated phrases, or changes in the rankings of those phrases, over time. When the phrases correspond to products, this may indicate changes in consumer interest as product offerings change. 
     As another example, a report may simply indicate, for a given character sequence, the phrases that correspond to products. This may provide merchants insight into what products consumers are searching for in addition to products known to the merchant. For example, such a report could indicate items other than “computers” that consumers are searching for when entering the character sequence “comp.” 
       FIG. 3  illustrates an example of a report  300  that shows phrases that have increasingly been included as part of search suggestions over a particular period of time. The report  300  includes a phrase column  302 , a previous rank column  304 , a current rank column  306 , and a move score column  308 . The phrase column  302  includes the phrases. The previous rank column  302  includes the rank of the corresponding phrase in the previous time period. In general, a phrase&#39;s rank may be based on the number of times that phrase was included in search suggestions over the relevant time period. The current rank column  306  includes the rank of the corresponding phrase in the current period of time. The move score column  308  includes a move score that corresponds to the magnitude of the change in rank between the previous period and the current period, and may be calculated based on those two rankings. 
     The techniques described herein can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The techniques can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device, in machine-readable storage medium, in a computer-readable storage device or, in computer-readable storage medium for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. 
     Method steps of the techniques can be performed by one or more programmable processors executing a computer program to perform functions of the techniques by operating on input data and generating output. Method steps can also be performed by, and apparatus of the techniques can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, such as, magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as, EPROM, EEPROM, and flash memory devices; magnetic disks, such as, internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry. 
     A number of implementations of the techniques have been described. Nevertheless, it will be understood that various modifications may be made. For example, useful results still could be achieved if steps of the disclosed techniques were performed in a different order and/or if components in the disclosed systems were combined in a different manner and/or replaced or supplemented by other components. 
     Accordingly, other implementations are within the scope of the following claims.