Abstract:
Search results are ranked by applying sub-relevancies within a search result list. This permits search result lists to be further refined into more manageable relevant groupings from a user&#39;s perspective. The sub-relevancies or ‘group-by’ parameters are derived from search result attributes. Attribute values from the attributes are employed in a ranking scheme to group the search results based on attribute value relevancy. The grouped search results can then be displayed to users via a search result page. In one instance users can select which attribute value is used to group the search result list. Ranking processes are based on object ranking algorithms that consider each attribute value as an object type. Some instances provide for search result list group condensing based on relevancy of the attribute values as well. A top-k instance can be employed to limit the search results to control the amount of time required for processing groupings.

Description:
RELATED APPLICATIONS 
       [0001]    This application is related to the co-pending and co-assigned applications entitled “TWO-DIMENSIONAL CONDITIONAL RANDOM VIEWS FOR WEB EXTRACTION,” client reference MS314689.01, filed on Dec. 16, 2005 and assigned Ser. No. 11/304500, “METHOD AND SYSTEM IDENTIFYING OBJECT INFORMATION,” client reference MS311967.01, filed on Apr. 14, 2005 and assigned Ser. No. 11/106383 and “METHOD AND SYSTEM FOR RANKING OBJECTS OF DIFFERENT OBJECT TYPES,” client reference MS311966.01, filed on Apr. 14, 2005 and assigned Ser. No. 11/106017. The above-noted applications are incorporated herein by reference. 
       BACKGROUND 
       [0002]    Communication networks, such as the Internet, allow users from different locations to access data from anywhere in the world. Because of the vastness of the amount of information, users typically employ search engines to find relevant information. This allows the vast amounts of data to be easily accessible to users in any location by simply entering a search query. Results of the query are then returned to the user in a search result list. Typically, these lists are “flat” or one dimensional. In other words, the search results are ranked solely on the search query entered by the user. 
         [0003]    The usefulness of such a search result list is dependent on several factors—adequacy of the search string (i.e., is this really what the user is interested in), accessibility of relevant data by the search engine, proper relevancy ranking of the data by the search engine. Thus, a poorly worded search string will not return favorable results to a user. And, even if properly worded, if the search engine does not have access to relevant data, the search results will be less than effective. If access is available, but the search engine lists the search results in a large one-dimensional list according to a single relevancy, the user may become overwhelmed and be dissatisfied with the search results. Users generally prefer a search engine that can return relevant data quickly, efficiently, and in an easily readable format. However, search engines do not generally provide relevancy flexibility in the presentation of the search results. 
       SUMMARY 
       [0004]    Search results are ranked utilizing multiple bases of relevancy. This allows search result lists to be further refined into relevant groupings. The ‘group-by’ parameters are derived from search result attributes. Attribute values derived from the attributes are then utilized in a ranking scheme to further group the search results based on attribute value relevancy. The grouped search results can then be displayed to users via a search result page. In one instance users can select which attribute value is used to group the search result list. This gives the user substantial control over relevancy groupings within the search result list. Ranking processes are based on object ranking algorithms that consider each attribute value as an object type. Some instances provide for search result list condensing of groupings based on relevancy of the attribute values as well. Although applicable to an infinite amount of search results, a top-k instance can be employed to limit the search results to bound the amount of time required for processing search result lists. By grouping search results based on attribute values, users are provided with an organizational means to control formatting and presentation of search results based on further relevancy in a secondary aspect to their original search. 
         [0005]    The above presents a simplified summary of the subject matter in order to provide a basic understanding of some aspects of subject matter embodiments. This summary is not an extensive overview of the subject matter. It is not intended to identify key/critical elements of the embodiments or to delineate the scope of the subject matter. Its sole purpose is to present some concepts of the subject matter in a simplified form as a prelude to the more detailed description that is presented later. 
         [0006]    To the accomplishment of the foregoing and related ends, certain illustrative aspects of embodiments are described herein in connection with the following description and the annexed drawings. These aspects are indicative, however, of but a few of the various ways in which the principles of the subject matter may be employed, and the subject matter is intended to include all such aspects and their equivalents. Other advantages and novel features of the subject matter may become apparent from the following detailed description when considered in conjunction with the drawings. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]      FIG. 1  is a block diagram of a group-by search result system in accordance with an aspect of an embodiment. 
           [0008]      FIG. 2  is another block diagram of a group-by search result system in accordance with an aspect of an embodiment. 
           [0009]      FIG. 3  is yet another block diagram of a group-by search result system in accordance with an aspect of an embodiment. 
           [0010]      FIG. 4  is an illustration of an example grouping process in accordance with an aspect of an embodiment. 
           [0011]      FIG. 5  is an illustration of an example display format for group-by search results in accordance with an aspect of an embodiment. 
           [0012]      FIG. 6  is an illustration of an example web page display format for group-by search results in accordance with an aspect of an embodiment. 
           [0013]      FIG. 7  is another illustration of an example web page display format for group-by search results in accordance with an aspect of an embodiment. 
           [0014]      FIG. 8  is a flow diagram of a method of enhancing search engine results in accordance with an aspect of an embodiment. 
           [0015]      FIG. 9  is a flow diagram of a method of providing enhanced search engine results to users in accordance with an aspect of an embodiment. 
           [0016]      FIG. 10  illustrates an example operating environment in which an embodiment can function. 
       
    
    
     DETAILED DESCRIPTION 
       [0017]    The subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the subject matter. It may be evident, however, that subject matter embodiments may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the embodiments. 
         [0018]    As used in this application, the term “component” is intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a computer component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. 
         [0019]    A result set for a given search term in traditional internet search engines is typically a flat list. However, this assumes that a user is only interested in one aspect of the search results. This is generally not the case, and, thus, it is beneficial to an end user to group search result sets by some additional aspect based on attributes of the search results. For example, a general search based on “jokes” can be grouped by writers, a shopping search based on “digital cameras” can be grouped by brands, and an academic paper search based on “data mining” can be grouped by authors and the like. Instances provided herein include methods that produce ‘group-buy’ search result listings. For example, popular attribute values can be utilized with object ranking that ranks attribute values by dynamic ranks of search results possessing these attribute values. Group-by search results can then be displayed on web pages according to their attribute values. In some instances, several results can follow each attribute value in a web page. 
         [0020]    In  FIG. 1 , a block diagram of a group-by search result system  100  in accordance with an aspect of an embodiment is shown. The group-by search result system  100  is comprised of an attribute grouping component  102  that receives search result attribute information  104  and provides grouped search results  106 . The search result attribute information  104  can include, but is not limited to, attributes, attribute values, and other attribute related information and the like. The search result attribute information  104  is typically obtained from object orientated search engines that provide search results  108  along with the search result attribute information  104 . Thus, some instances can be integrated with object oriented search engines to provide a full function group-by processing search engine. For example a scholarly object oriented search engine might return search results of academic papers for “data mining” that include author, title, publication date, and/or cite and the like. Thus, author, title, publication date, and cite can be attributes. The data associated with each attribute constitutes an “attribute value.” For author, the attribute value is the author&#39;s name. 
         [0021]    The attribute grouping component  102  takes the search result attribute information  104  and utilizes it to group search results  108  based on the attribute values to form the grouped search results  106 . The attribute grouping component  102  can utilize various algorithms to accomplish the ranking of attribute values. Typically, the search results  108  are ranked according to a general relevancy standard in a flat search result list. This ranking can be employed along with the attribute value to form a preliminary sorting list of results. The attribute values are then ranked and employed to further sort the search results  108  to construct the grouped search results  106 . The processes involved with performing the sorting is detailed infra. 
         [0022]    The group-by sorting of the search results  108  allow the group-by search result system  100  to provide users with information in a format that provides additional inherent data information. A user can almost instantly glean information from the presented format that normally would take additional searches, or data mining, to discover. For example, the scholarly academic paper search can yield two significant authors with 50 papers each listed in the grouped search results  106 . The user can easily deduce that these authors are significant contributors to this academic arena and also easily peruse their works. If a similar search showed 100&#39;s of authors with a single paper, it could be deduced that there are no single significant contributors to this area of knowledge. Thus, the user gains more from the experience of utilizing the group-by search result system  100  than just the convenience of having an author&#39;s papers grouped together. Therefore, users of the group-by search result system  100  have a significant advantage over users of traditional search engines that return flat search result lists. 
         [0023]    Looking at  FIG. 2 , another block diagram of a group-by search result system  200  in accordance with an aspect of an embodiment is depicted. The group-by search result system  200  is comprised of an attribute grouping component  202  that receives attributes  208 , attribute values  210 , and an optional top-k value  212  and provides grouped search results  214 . The attribute grouping component  202  is comprised of an attribute value ranking component  204  and a search result display component  206 . The attribute value ranking component  204  receives attributes  208  and/or attribute values  210  associated with search results  218 . The search results  218  are typically generated with an object oriented search engine (not shown). The attribute value ranking component  204  can also receive an optional top-k value  212  that can be employed to limit the search results  218  to the top-k search results, where k is an integer from one to infinity. This allows the group-by search result system  200  to reduce an overall processing time if desired. For example, the top 1000 results from the search results  218  can be considered rather than all of the search results  218 . 
         [0024]    The attribute value ranking component  204  can also accept system and/or user attribute preferences  216 . The system and/or user attribute preferences  216  can include, but are not limited to, desired attributes and/or attribute values and the like. This allows a system and/or user to influence which attributes are utilized by the attribute value ranking component  204  and, thus, subsequently influence the grouped search results  214 . The attribute value ranking component  204  sorts the search results  218  based on their associated ranking, resorts based on their associated attribute values, ranks the attribute values, and then applies the attribute value ranking to the search results  218 . This yields groups of search results  218  that are based on their associated attribute values. The attribute utilized by the attribute value ranking component  204  can, as stated previously, change based on system and/or user input and the like. 
         [0025]    The search result display component  206  receives the group-by ranking from the attribute value ranking component  204  and formats them for relaying to a user as grouped search results  214 . The relaying to the user typically consists of visual representations that allow a user to easily comprehend the groupings and, thus, the attributes and their values by a user. This can include offsetting attribute values relative to an attribute, incorporating color schemes to highlight attributes from their values, and/or other schemes to relay information to the user and the like. The search result display component  206  can also incorporate non-visual relaying to a user. This can be accomplished utilizing aural information and/or other sensory information and the like. Thus, in one instance, the grouped search results  214  can be read to a user and the like. In another instance, the grouped search results  214  can be presented in a Braille format to a user and the like. The relaying of the information by the search result display component is not limited to only those listed herein. 
         [0026]    Turning to  FIG. 3 , yet another block diagram of a group-by search result system  300  in accordance with an aspect of an embodiment is illustrated. The group-by search result system  300  is comprised of an attribute grouping component  302 . In this illustration, the group-by search result system  300  interfaces with an object oriented search engine  306 . Typically, a search query  304  is entered into the object oriented search engine  306  which then processes the request. The object oriented search engine  306  then provides attributes, attribute values, and/or search results and the like to the attribute grouping component  302 . The attribute grouping component  302  can employ system and/or user attribute preferences  310  and/or top-k value  312  as well to facilitate processing of the search results. The attribute grouping component  302  processes the search results based on appropriate attributes and attribute values to provide grouped search results  308  to a user  314 . By incorporating the group-by search result system  300  with the object oriented search engine  306 , a user is provided with a seamless, integrated tool that allows entry of the search query  304  and displaying of the grouped search results  308 . If the user  314  so chooses, they can also influence the grouped search results  308  with an input to the system and/or user attribute preferences  310 . 
         [0027]    Referring to  FIG. 4 , an illustration of an example grouping process  400  in accordance with an aspect of an embodiment is shown. In step  0   402 , search results received from an object oriented search engine are sorted based on their rank  404 . Their associated attribute values  406  are shown next to the rank  404 . In step  1   408 , the search results are sorted based on their attribute values  410  first and foremost and their rank  412  secondarily. In step  2  (not illustrated), attribute values are ranked. At this point, some instances can condense search results based on their attribute value ranking (e.g., a top-k based system, etc.). In step  3   414 , the attribute values  416  are sorted based on the determined attribute value ranking primarily and their rank  418  secondarily, yielding group-by search results. 
         [0028]    The algorithm for calculating the attribute value rank is referred to as “object ranking,” which means that each attribute value can be treated as an object and, thus, the rank of this object can be calculated. One object ranking algorithm that can be utilized for attribute value ranking is Eq. 1 where: 
         [0000]        S   attr =( R   1   ,R   2   , . . . R   k ) 
         [0000]        R   attr   =f ( S   attr ) 
         [0000]    where R 1 , . . . R k  are dynamic ranks of results which have an attribute value “attr.” The f(S attr ) can be any combination function. For example: 
         [0000]    
       
         
           
             
               
                 
                   
                     f 
                      
                     
                       ( 
                       
                         S 
                         attr 
                       
                       ) 
                     
                   
                   = 
                   
                     
                       ∑ 
                       
                         i 
                         = 
                         1 
                       
                       k 
                     
                      
                     
                       
                         R 
                         i 
                       
                       × 
                       
                         1 
                         
                           1 
                           + 
                           
                             c 
                             × 
                             i 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     Eq 
                     . 
                     
                         
                     
                      
                     1 
                   
                   ) 
                 
               
             
           
         
       
     
         [0000]    where c is a constant float number (e.g., scaling factor) that can be varied to emphasize and/or de-emphasize a ranking value. 
         [0029]    In one instance, a group-by search result process returns a list of attribute values sorted by descending attribute value rank. For each attribute value, there is typically several results which have this attribute value. Thus, some of these values can be condensed to provide a top-k search result list. In TABLE 1, below, an example sorting process is described. 
         [0000]                          TABLE 1               Example Sorting Process                                  1. Sort the results list by AttrValue + Rank, the compare function is:           int CompareResults( result1, result2)           {             if(result1.attrvalue != result2.attrvalue)               return result1.attrvalue − result2.attrvalue;             return result1.rank − result2.rank;           }         2. For each attribute value, calculate the attribute value&#39;s rank by R attr  = f (S attr ), and       collapse results of similar values.         3. Resort the list again by ValueRank + AttrValue + Rank, the compare function is           int CompareResults( result1, result2)           {             if(result1.root.valuerank != result2. root.valuerank)               return result1. root.valuerank − result2.root.valuerank;             if(result1.attrvalue != result2.attrvalue)               return result1.attrvalue − result2.attrvalue;             return result1.rank − result2.rank;           }                    
“Result.root” points to a result which has the same attribute value and the highest rank. In  FIG. 4 , the root of result 3  is result 1 ; the root of result 5  is result 2 . The time utilized for the group-by process is O(n*log(n))+O(n)+O(n*log(n)).
 
         [0030]    In  FIG. 5 , an illustration of an example display format  500  for group-by search results in accordance with an aspect of an embodiment is depicted. In this example display format  500 , attribute values  502  are illustrated offset from search results  504  that are listed beneath each value. This allows a user to immediately recognize which attribute has been utilized to sort the search results  504  and how many search results  504  are associated with each of the attribute values  502 . Thus, the user is provided with an easily comprehended listing of group-by search results and also inherent information that does not need to be data mined separately. As described supra, this allows a user to obtain valuable additional information that ordinarily would require additional searches. 
         [0031]    For example, a user might search on “data mining” and then peruse the traditional search result list and count how many times an author appears (which might entail several thousand search results) to get the same information as that shown in the example display format  500 . The example display format  500  can also be enhanced with selectable options to allow user selection of which attribute is utilized. It can be appreciated that offsetting the attribute values  502  is not required. Other forms of distinguishing the attribute values from the search results  504  such as, underlining, bolding, font enlargement, and/or italicizing and the like are within the scope of the instances disclosed herein. 
         [0032]    Looking at  FIG. 6 , an illustration of an example web page display format  600  for group-by search results in accordance with an aspect of an embodiment is shown. The web page display format  600  includes a selectable attribute field  602 . The selectable attribute field  602  in this example allows the attributes “comprising papers,” “authors,” “conferences,” “journals,” and “interest groups” to be selectable by a user. In this example, “authors” is a currently selected attribute  606  and a search query  604  is ‘data mining.’ The selected attribute  606  displays “author” before listing attribute values  608  and search results  610 . In this example, the attribute values comprise names of authors and the search results  610  are papers associated to the query “data mining.” It can be appreciated that additional data associated with the attribute values  608  can also be displayed in proximity of the attribute values  608 . 
         [0033]    Referring to  FIG. 7 , another illustration of an example web page display format  700  for group-by search results in accordance with an aspect of an embodiment is depicted. The web page display format  700  includes a selectable attribute field  702 . The selectable attribute field  702  in this example allows the attributes comprising “relevance,” “date-oldest,” “data-newest,” “author,” “journal,” and “conference” to be selectable by a user. In this example, “author” is a currently selected attribute  706  and a search query  704  is ‘data mining.’ The selected attribute  706  influences what attribute value  708  and search results  710  are displayed. In this example, the attribute values comprise names of authors and the search results  710  are results associated to the query “data mining.” This web page display format  700  allows multiple search results  710  to be displayed for each attribute value  708 . It can be appreciated that other variations are within the scope of the instances provided herein. 
         [0034]    In view of the exemplary systems shown and described above, methodologies that may be implemented in accordance with the embodiments will be better appreciated with reference to the flow charts of  FIGS. 8 and 9 . While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the embodiments are not limited by the order of the blocks, as some blocks may, in accordance with an embodiment, occur in different orders and/or concurrently with other blocks from that shown and described herein. Moreover, not all illustrated blocks may be required to implement the methodologies in accordance with the embodiments. 
         [0035]    The embodiments may be described in the general context of computer-executable instructions, such as program modules, executed by one or more components. Generally, program modules include routines, programs, objects, data structures, etc., that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various instances of the embodiments. 
         [0036]    In  FIG. 8 , a flow diagram of a method  800  of enhancing search engine results in accordance with an aspect of an embodiment is shown. The method  800  starts  802  by obtaining a search result list from an object oriented search engine sorted by rank  804 . Object oriented search engines generally produce a search result list with attributes and attribute values. This attribute information can then be utilized for further processing. The search result list is then sorted by attribute value and rank  806 . The attribute value is utilized for primary ranking while the rank is utilized secondarily. The attribute value&#39;s rank is then calculated for each attribute value  808 . Various ranking algorithms can be employed to rank the attribute values. The attribute values can be treated as objects and ranked utilizing object ranking processes as well (see supra). The search result list is then resorted based on the attribute value rank, attribute value, and search result rank  810 , ending the flow  812 . The attribute value rank is the primary sorting determination followed in order by the attribute value and search result rank. Examples of group-by ranking have been provided supra for various attributes. 
         [0037]    Turning to  FIG. 9 , a flow diagram of a method  900  of providing enhanced search engine results to users in accordance with an aspect of an embodiment is depicted. The method  900  starts  902  by obtaining a search result list from an object oriented search engine sorted by rank  904 . The search result list is then grouped based on, at least in part, attribute information  906 . The attribute information is typically obtained as part of the search result list provided by the object oriented search engine. Group-by processes have been discussed in detail supra and can be incorporated here as well. The groupings are then displayed to a user on a search result page  908 . Various example formats have been provided supra. These can include, but are not limited to, visual representations where attribute values are offset from search results to allow for easy comprehension of the groupings as well as relaying inherent information. It can be appreciated that visual representations are not the only means of relaying information to a user and, for example, audio and/or other sensory means are within the scope of the instances provided herein. 
         [0038]    A user selectable attribute input is then provided for the grouped search result list  910 . In some instances, the user selectable attribute input is a listing of possible attributes on a web page. The listing can have names of attributes that are clickable or otherwise selectable via an input means such as, for example, a mouse, keystroke, visual queuing system, and/or voice command and the like. Other instances can allow direct user input of attribute names in a text field and the like. Still other instances can allow other means of selection and/or input. The search result list is then regrouped based on the selected attribute when prompted  912 , ending the flow  914 . When a user (or even a system) selects a different attribute, the search results are resorted based on the selected attribute. In this manner, a user can effortlessly mine the search results for additional information. For example, a user can select ‘conferences’ and determine who attended (even though a search query was based on various paper topics) and then select ‘journals’ to see which authors publish on topics related to the search query and the like. These types of information can be easily obtained by utilizing group-by search result processing. This greatly increases the value of a search engine and substantially enhances user satisfaction. 
         [0039]    Instances provided herein can utilize disparate locations to accomplish various methods and/or functions. Communications between these disparate entities can include global communication means such as the Internet and the like. Often this type of communication means utilizes server and client relationships.  FIG. 10  is a block diagram of a sample computing environment  1000  with which embodiments can interact. The system  1000  further illustrates a system that includes one or more client(s)  1002 . The client(s)  1002  can be hardware and/or software (e.g., threads, processes, computing devices). The system  1000  also includes one or more server(s)  1004 . The server(s)  1004  can also be hardware and/or software (e.g., threads, processes, computing devices). One possible communication between a client  1002  and a server  1004  can be in the form of a data packet adapted to be transmitted between two or more computer processes. The system  1000  includes a communication framework  1008  that can be employed to facilitate communications between the client(s)  1002  and the server(s)  1004 . The client(s)  1002  are connected to one or more client data store(s)  1010  that can be employed to store information local to the client(s)  1002 . Similarly, the server(s)  1004  are connected to one or more server data store(s)  1006  that can be employed to store information local to the server(s)  1004 . 
         [0040]    It is to be appreciated that the systems and/or methods of the embodiments can be utilized in search result enhancement facilitating computer components and non-computer related components alike. Further, those skilled in the art will recognize that the systems and/or methods of the embodiments are employable in a vast array of electronic related technologies, including, but not limited to, computers, servers and/or handheld electronic devices, and the like. 
         [0041]    What has been described above includes examples of the embodiments. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the embodiments, but one of ordinary skill in the art may recognize that many further combinations and permutations of the embodiments are possible. Accordingly, the subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.