Selecting and presenting user search results based on an environment taxonomy

A search engine stores different taxonomies that each specifies categories and relationships between the categories. When the search engine receives a request having a search query, the search engine determines which taxonomy, if any, it should use to generate a search engine results page. The search engine bases this determination upon information provided to it in the request, in one embodiment. For example, the search engine might select a taxonomy based on the particular environment from which the search query originated. However, the search engine can select the taxonomy based on other information, such as a role of the user. Thus, a medical researcher and a financial analyst for a particular corporation could receive search engine results pages that were generated with appropriate taxonomies for each of them.

FIELD OF THE INVENTION

The present invention relates to computer systems, and more particularly to generating search engine results pages that are based, at least in part, on a taxonomy associated with an environment from which a search query originated.

BACKGROUND

A search engine returns search results that match a search query submitted by a user. Typically, the search engine orders the search results. The order usually takes the form of a “ranking”, where the document with the highest ranking is the document considered most likely to satisfy the interest reflected in the search criteria specified by the user. Once the matching documents have been determined, and the display order of those documents has been determined, the search engine sends to the user that issued the search a “search engine results page” that presents information about the matching documents in the display order. Typically, the number of documents that match a search is so large that the user is presented with a search engine results page that only displays information about the top N ranking documents, where N may be significantly smaller than the total number of matching documents. The search engine results page typically includes a control that allows the user to retrieve information about the “next N” matching documents, in case the first N matching documents do not entirely satisfy the user's interest.

Thus, search results are typically generic in that the same search results are sent to all users. Unfortunately, the search results that have the highest ranking may not correlate well with the search results in which a particular user is interested. Thus, a user might have to wade through many pages of search results to locate results of interest. Worse yet, the search results in which a particular user is interested might have such a low ranking that the user does not find them at all.

An alternative to this technique is “taxonomy-based” searching. Briefly, a taxonomy describes categories and relationships between categories. Typically, each document (e.g., search result) is placed into a taxonomy category, which can improve the search result quality.

One type of taxonomy based searching is based on documents from a local database. Taxonomies based on local databases are sometimes specific to particular subject matter. For example, in a medical taxonomy the categories and relationships between categories reflect medical subject matter. As a particular example, a pharmaceutical company might develop a taxonomy for documents in its own databases. However, because the taxonomy only categorizes documents from the local databases, more general search results from the World Wide Web are not included.

Another technique might allow for categorizing search results from the World Wide Web into a taxonomy. However, this technique typically imposes a single general taxonomy upon all users. For example, a search engine might organize search results into a single general taxonomy that applies to all search queries. As a consequence, user's specific needs, such as medical related searches or stock market related searches do not benefit from the general taxonomy.

In view of the foregoing, improved techniques are needed for organizing search results are presenting search engine result pages to a user.

DETAILED DESCRIPTION

Overview

Techniques are disclosed herein for generating a search engine results page (“SERP”) that is based, at least in part, on a taxonomy that is specific to one or more of: an environment from which a search query originated, a user that submitted the search query, or the search query itself.

In one embodiment, a search engine stores different taxonomies that each specifies categories and relationships between the categories. For example, a medical-based taxonomy might have categories related to medical subject matter, whereas a financial-based taxonomy might have categories related to financial subject matter. The taxonomies might be specific to a particular environment. As an example, an environment might be an enterprise such as a corporation, but that is not required. The different taxonomies may be provided to the search engine by administrators for various environments. An environment may have multiple taxonomies associated therewith. As an example, an administrator for a particular corporation might provide the search engine with a medical taxonomy and a financial taxonomy that were each developed for the particular corporation.

When the search engine receives a request having a search query, the search engine determines which taxonomy, if any, it should use to generate a SERP. The search engine bases this determination upon information provided to it in the request, in one embodiment. For example, the request could specify the environment or other information, such as a role of the user. Thus, a medical researcher and a financial analyst for a particular corporation could receive SERPs that were generated with appropriate taxonomies for each of them.

In one embodiment, the search engine includes at least a portion of the taxonomy in the SERP. For example, the SERP includes organized presentation of categories that match the search results. Thus, the client that originated the search query displays a SERP with an arrangement of categories from taxonomy listed. If the user at the client selects one of the categories, the search engine responds by retuning search results that match that category.

In one embodiment, a proxy is interposed between the client and the search engine, such that the client sends the search query to the proxy, which the proxy forwards to the search engine. Rather than the search engine selecting the taxonomy, the search engine returns search results matching the search query to the proxy. The proxy determines an appropriate taxonomy to apply, based on information such as the search query and the user who submitted the search query. The proxy then generates a SERP based, at least in part, on the selected taxonomy. Then, the proxy provides the SERP to the client.

Example Web Page Based on Environment Taxonomy

FIG. 1is a portion of an example SERP100based on an environment taxonomy, in accordance with an embodiment of the present invention. The example SERP100contains at least a portion of environment taxonomy10, which contains categories and sub categories. Anytime the term category or taxonomy category is used herein, the term “category” will be understood to encompass “sub category” or the like. The portion of the environment taxonomy110that is rendered in the SERP100may be based on what search results104match the search query. For example, the search engine109determines which categories of the taxonomy110have at least one matching search result and only returns those categories in the taxonomy110. However, it is not required that all categories for which matching search results exist be displayed. For example, due to practical limitations as to how many categories can be displayed in the SERP100, only a portion of the categories with matching search results might be displayed.

The taxonomy110allows the user to “drill down” to desired search results. In this example, the user has selected sub category A1. In response thereto, search results104pertaining to category A1are presented in the SERP100.

Environment

As used herein, the term “environment” means any set of one or more electronic devices under common administration. The electronic devices may or may not be use the same hardware or run the same software. Examples of electronic devices include, but are not limited to, a web-enabled cellular telephone, a web-enabled personal digital assistant, a server running a particular operating system (e.g., Linux®, Solaris®), a personal computer running the Windows® operating system, etc.

The environment may have a device that controls access to the environment. In one embodiment, the environment has a proxy with a firewall to perform the access control. An administrator for the environment may control what software is loaded on the electronic devices. An example of an environment is a home, where the administrator may be any resident thereof, and the end users are the family members. Another example of an environment is a corporation, where the administrator is the information technology (IT) manager, and the end users are employees of the company. Still another example of an environment is a business, such as an Internet cafe, where the administrator may be the proprietor, and the end users are customers.

Environment Taxonomies

A taxonomy contains categories and relationships between the categories. Many different techniques may be used to relate categories to each other. An environment taxonomy is a taxonomy that is developed for a particular environment. The following examples of how a taxonomy might be organized are provided, but relationships between categories are not limited to these examples. The relationship may be hierarchical. For example, the taxonomy could be a tree structure with each leaf representing a category. However, the structure is not required to be a tree. Thus, in one taxonomy, a child category could be required to have only one parent category, whereas in another taxonomy, a child category could be permitted to have multiple parent categories. As an example, the child category “cellular telephone” might have parent categories “electronic device” and “communication device”. The categories of a taxonomy might be organized into groups, without an explicit relationship between the groups. The taxonomy, or portions thereof, might be an ordered list of categories.

In addition to the categories and relationships between the categories, each category may have a rule used to determine what documents match that category. For example, a rule might be that documents pertaining to “flu vaccination” belong in that category.

However, it is not required to have an explicit rule associated with a category. For example, a category can contain a set of documents without a unique rule for assigning documents to the category. If desired, additional documents can be assigned to categories by matching new documents to documents that are already categorized. For example, a comparison of keywords can be performed. Thus, a particular category does not need to have its own unique rule to have further documents assigned to it.

The document corpus for a taxonomy can be the entire World Wide Web, any domain of the World Wide Web, or a corpus other than the World Wide Web. If the document has a Uniform Resource Locators (URLs) then that URL can be associated with the category. However, the document corpus does not have to be the World Wide Web.

System for Environment Taxonomies

FIG. 2illustrates a system200for providing SERPs100based on environment taxonomies, in accordance with an embodiment of the present invention. Each environment201has one or more clients202communicatively coupled to the server208via network204. An environment201may have a proxy206, which acts as an intermediary between the client202and server208. Network204may be the Internet, although this is not required. The server208has search engine209that is able to perform a search of the World Wide Web, in one embodiment.

When a client202sends a request (via the proxy206) to the server208, the server208determines what taxonomy should be used to generate a SERP100. The server208makes the determination based on information such as the environment201from which the request originated, the user who submitted the search query, the search query itself, or other information. The proxy206may pass information to the server208to assist the server208in this determination. After the server208selects a particular taxonomy, the server208uses either the environment taxonomy table210or the environment taxonomy rules230(1)-230(n) to generate a SERP100that is based on the selected taxonomy.

The environment taxonomy table210contains, for a number of distinct taxonomies, associations between documents (e.g., web pages) and taxonomy categories. The organization of the environment taxonomy table210is as follows, in one embodiment. The table210has a column having a document identifier (e.g., a unique URL) in each row entry. Each distinct environment taxonomy has its own column. The row entries for each specific environment taxonomy identify to which taxonomy category the URL in that row belongs. For a given environment taxonomy, not all URLs will be assigned a category. Therefore, some row entries for a given environment taxonomy will contain a null entry. To construct the table210, the server208receives a mapping of URLs to categories, in one embodiment. For example, an administrator of an environment201provides this mapping to the server208.

A given set of taxonomy rules (e.g.,130(1)) comprises rules to associate documents with categories. The server208uses a particular set of environment taxonomy rules (e.g.,230(1)) to associate documents (e.g., search result items) with categories for a particular environment taxonomy, in one embodiment. The server208may apply the rules130to search results “on-the-fly”. Associations between documents and categories that are learned “on-the-fly” may be stored in an appropriate column of the environment taxonomy table210for later reference. However, the server208may apply the rules130to documents other than when search results are being processed.

Note that regardless of whether the search engine uses the table210or the rules230not all search result items will match a category in the selected taxonomy. In this case, the server208may still return these “un-categorized” search result items in a SERP100.

A proxy206may have access to environment specific taxonomies224, although this is not required. For example, proxy206(1) has access to environment specific taxonomies224. Using one of the environment specific taxonomies224, proxy206(1) is able to generate a SERP100. As an example, proxy206(1) receives a SERP100from search engine209and adds a list of taxonomy categories to the SERP100. Thus, an environment201does not need to share its environment specific taxonomy224with the server208.

Example Process Flow for Server-Side Taxonomies

FIG. 3is a flowchart illustrating a process300of server-side environment taxonomies, in accordance with an embodiment of the present invention.FIG. 3will be described with reference to the system200ofFIG. 2and the example web page100ofFIG. 1. However, the process300ofFIG. 3is neither limited to system200, nor to example web page100.

In step302, the server208stores distinct taxonomies. The server208receives taxonomies from the different proxies206, in one embodiment. In one embodiment, for a particular environment taxonomy, the server208receives and stores a set of taxonomy rules230that can be used to associate search result items into taxonomy categories. In another embodiment, for a particular environment taxonomy, the server208receives and stores document identifiers (e.g., a URL) that are associated with taxonomy categories.

In step304, the server208receives a request containing a search query that originated from a user associated with a particular environment201. The request may be forwarded to the server208from a proxy206in the particular environment201. The proxy206may provide information that can be used to select a taxonomy to apply to a SERP100. For example, the proxy206may provide an environment identifier to select the taxonomy. As another example, the proxy206provides a user role (e.g., engineer, manager, financial analyst, etc.).

In step305, the server208passes the search query to the search engine209, which determines matching search results for the search query.

In step306, the server208selects a taxonomy based, at least in part, on one or more of: the particular environment201, the user who submitted the search query, and the search query itself. As an example, the server208might select a different taxonomy for a user whose role is “engineer” than a user whose role is “finance”. For example, the server208might select a medical taxonomy that was specifically developed to meet the needs of a pharmaceutical company in response to determining that a medical researcher for that pharmaceutical company submitted the search query. The server208may use other factors to select the taxonomy, such as terms in the search query.

In step308, the server208generates a SERP100based, at least in part, on the selected taxonomy. The server208includes at least a portion of the selected taxonomy in the SERP100, in one embodiment. For example, if there is a least one search result item that matches a particular category, then that category is a candidate for inclusion in the SERP100. However, due to the large number of categories this may cover, only a portion of these candidate categories need be included in the SERP100. Because only a fraction of the search results are returned in a single SERP, many of the categories will not have a corresponding search result item in the SERP100.

In step309, the SERP100are provided to the proxy206, which passes them on to the client202. It is possible, though not required, for the proxy206to modify the SERP100prior to forwarding to the client202. An embodiment in which the proxy206performs such a modification is described below. A user at the client202may select one of the categories in the taxonomy displayed in the SERP100, and submit this to the server208.

In step310, server208receives the category selection. In step312, the search engine209generates a SERP100based, at least in part, on the selected category. For example, the search engine209determines a set of search result items that match the selected category, wherein those search result items are provided to the client202, in step309. Process300may continue by repeating steps309-312, as long as the user selects new categories.

Example Process Flow for Proxy-Side Taxonomies

FIG. 4is a flowchart illustrating a process400of proxy-side environment taxonomies, in accordance with an embodiment of the present invention.FIG. 4will be described with reference to the system200ofFIG. 2and the example web page100ofFIG. 2. However, the process ofFIG. 4is neither limited to system200, nor to example web page100.

In step402, the proxy206receives a request containing a search query from a client202and forwards the request to the server208. The proxy206need not provide any information to assist the server208in selecting a taxonomy, as the server208does not select a taxonomy, in this embodiment. However, the proxy206may request that the server208return more search results at a time that can fit into a single web page.

In step404, the server208passes the search query to the search engine209, which determines matching search results for the search query. In step405, the server208returns search results to the proxy206. As previously discussed, a server208might provide the proxy206with enough search result items to fill many web pages100.

In step406, the proxy206selects a taxonomy based, at least in part, on the user who submitted the search query and/or the search query itself.

In step408, the proxy206generates a SERP100based, at least in part, on the selected taxonomy and the search result items. The proxy206includes at least a portion of the selected taxonomy in the SERP100, in one embodiment.

In step409, the SERP100are provided to the client202. A user at the client202may select one of the categories in the taxonomy displayed in the SERP100, and submit this to the server208.

In step410, proxy206receives the category selection. In step412, the proxy206generates a SERP100based, at least in part, on the selected category. In one embodiment, the proxy206determines a set of search result items that match the selected category from the search result items that were previously provided by the server208. The proxy206then provides the SERP100to the client202, in step409. Process400may continue by repeating steps409-412, as long as the user selects new categories.

Hardware Overview