WO2001075681A1 - Method, apparatus, and system for creating and maintaining a shared hierarchical directory system - Google Patents

Method, apparatus, and system for creating and maintaining a shared hierarchical directory system Download PDF

Info

Publication number
WO2001075681A1
WO2001075681A1 PCT/US2001/011034 US0111034W WO0175681A1 WO 2001075681 A1 WO2001075681 A1 WO 2001075681A1 US 0111034 W US0111034 W US 0111034W WO 0175681 A1 WO0175681 A1 WO 0175681A1
Authority
WO
WIPO (PCT)
Prior art keywords
category
user
search
categories
ofthe
Prior art date
Application number
PCT/US2001/011034
Other languages
French (fr)
Other versions
WO2001075681A9 (en
Inventor
Steve Thomas
Darrin Skinner
Chester Dewitt Rose
Original Assignee
Wherewithal, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wherewithal, Inc. filed Critical Wherewithal, Inc.
Priority to AU2001249878A priority Critical patent/AU2001249878A1/en
Publication of WO2001075681A1 publication Critical patent/WO2001075681A1/en
Publication of WO2001075681A9 publication Critical patent/WO2001075681A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3322Query formulation using system suggestions
    • G06F16/3323Query formulation using system suggestions using document space presentation or visualization, e.g. category, hierarchy or range presentation and selection

Definitions

  • the present invention relates to the processing of information. More specifically, the present invention relates to a method, apparatus, system, and machine-readable medium for creating and maintaining a shared hierarchical directory system containing various categories of information.
  • the Web is a global network of millions of pages of diverse information (e.g., the web pages or web documents) created by millions of users of the Internet. i order to make the Internet more useful as a means of information processing and commerce transacting, various technologies have been developed and implemented that allow for the searching of information on the Web.
  • search engine typically embodied within a public web site, and often referred to as a "search engine” — allow a user to enter one or more search terms to initiate a search for certain information that may be of interest to the user. Upon the user's initiation ofthe search, these systems will perform a search of their databases and display links to web sites that the systems deem relevant to the terms entered by the end-user.
  • search engine One ofthe search mechanisms used is referred to as a "web crawler", which is combined with a free text searching mechanism, hi general, the "web crawler” continually scans the Web and builds an indexed database of every page it finds.
  • this kind of search engine will perform a scan of its database and display links to the web documents that it deems relevant.
  • the relevance is determined by scanning the text contained within each web document, and finding words that are alike or nearly alike the words the user entered as search terms.
  • the problem with this approach is that it does not adequately determine the relevance to an end-user based on search terms, hi addition, this approach typically returns far too many results that are difficult for the end users to thoroughly review. This approach to searching for relevant information is ineffective and inefficient.
  • Another approach to assist the end users in locating the desired information on the Internet is to create a "directory", or categories of web sites organized in a hierarchical fashion.
  • Many search and/or directory service providers on the Internet utilize this approach in helping the end users to locate the information that is potentially of interest to them.
  • Some of these providers also combine the Directory approach with the Web Crawling approach.
  • the basic problem with this approach is that there is no possible way for any of these companies to accurately and adequately index and categorize the entire Web. There are currently millions of documents on the Web, and this number continues to grow at a very rapid rate. Even if these companies could hire a staff large enough to index and categorize the documents available on the Web, there is still another problem with this approach.
  • these search engines are tasked with classifying every document on the Web. As such, they must choose one (or a very small number of) classification hierarchies for all Web documents.
  • Another approach to a web search engine is a variant ofthe second approach — the Web Directory — but one in which the classification of web documents is done by volunteers from across the Internet.
  • This approach also has many problems.
  • the first problem is that, although the contents of a given category are, under this approach, maintained by a volunteer, the central authority must still be a "middle man" in determining what categories are valid, which category maintainers are the best for a given category, and to some extent, how the categories are arranged hierarchically.
  • the central authority can be one or more entities that are designated to orgaiuze and coordinate the various categories maintained in the system.
  • the third problem with the current implementations of this approach is that they do not adequately allow for the specification of keywords and other information about the contents of a given category, and they do not have any mechanism for diverse sharing of those keywords.
  • the lack of an adequate mechanism makes the sharing of categories much more difficult, and precludes the use of a more intelligent search based on the way an end-user might structure his own information.
  • the fourth and most practical problem with this approach is that volunteers run the core of the system. Because they have no economic incentive to do a better or worse job, there is no guarantee that each category maintainer will do a good job of maintaining his category, hi addition, this approach precludes the existence of professional category maintainers, as well as maintainers that are part of well-known commercial enterprises and editorial entities.
  • the first is simple "untargeted” advertising, in which a buyer of advertising placements purchases the right to display his advertisement to an unspecified audience.
  • the problem with this method of advertising is that the advertising buyer has no way to "target” his audience. He has now way of knowing whether the viewers of his advertisement placement will be relevant to what he is selling. For instance, an end-user that enters the search phrase, "winter coats" might be presented with an advertisement for T-shirts, etc.
  • the second approach is "keyword buying” advertising. In this approach, an advertisement buyer selects a keyword — a single word or a phrase — and buys the right to display his advertisement any time that an end-user enters the given keyword or phrase.
  • the search engine cannot adequately categorize information, and is therefore inaccurate for a large portion of its users, the advertisement displayed on the given category may be inaccurate in the same fashion. For instance, the category "Winter Apparel" needs to be different for people living in Alaska versus those living in Florida, and the associated advertisement needs to be different as well.
  • a method in which a user is allowed to specify, in a single search request, one or more search terms and one or more categories in which to search for information, h one embodiment, the one or more lists of categories are presented to the user. For each category in the one or more lists, the user is provided with a mechanism to individually select the respective category to be included in the search request.
  • Figure 1 is a block diagram of one embodiment of a system for maintaining a directory of information accessible by users via a computer network;
  • FIG. 2 shows a detailed block diagram of one embodiment ofthe system in Figure 1;
  • Figure 3 illustrates a functional block diagram of one embodiment ofthe system described in Figure 2;
  • Figure 4 shows a structure diagram of one embodiment of a category database according to the teachings ofthe present invention
  • Figure 5 shows a tree- view diagram of one embodiment ofthe category database described in Figure 4.
  • Figure 6 shows a table-view representation ofthe category database described in Figure 4.
  • Figure 7 shows an example of a functional anatomy of a category
  • Figure 8 shows a diagram of one embodiment of an extrapolated database shown in Figure 2;
  • Figure 9 illustrates external and internal views of an example of a category structure according to teachings ofthe present invention.
  • Figure 10 shows the relationship between the various data structures in the extrapolated database according to the teachings ofthe present invention.
  • Figure 11 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention.
  • Figure 12 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention.
  • Figure 13 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention.
  • Figure 14 illustrates a flow diagram of one embodiment of a method for allowing a user to view and select multiple search levels and multiple search categories on one display panel;
  • Figure 15 shows a flow diagram of one embodiment of a method for performing various category processing functions
  • Figure 16 shows a flow diagram of one embodiment of a method for creating a new category
  • Figure 17 shows a flow diagram of one embodiment of a method for modifying an existing category
  • Figure 18 shows a flow diagram of one embodiment of a method for converting a private category to a public category
  • Figure 19 illustrates a flow diagram of one embodiment of a method for allowing a user to customize a category
  • Figure 20 is flow diagram of one embodiment of a method for updating the data links of a given category
  • Figure 21 shows a flow diagram of one embodiment of a method for processing a search request
  • Figure 22 is a flow diagram of one embodiment of a search process in accordance with the teachings ofthe present invention.
  • Figures 22A-I show the various interactions between the various components of the system in processing a search request
  • Figure 23 shows a detailed flow diagram of one embodiment of a search process according to the teachings ofthe present invention.
  • Figures 24A-C illustrate an example of an application of various scoring criteria according to the teachings ofthe present invention
  • Figure 25 shows a flow diagram of one embodiment of a scoring process for determining the score of a given match
  • Figure 26 shows a flow diagram of one embodiment of a method for selecting one contributing category for advertising purposes.
  • Figure 27 is a flow diagram of another embodiment ofthe method for selecting one contributing category for advertising purposes.
  • the teachings ofthe present invention are utilized to implement a method, apparatus, and system to create and maintain a dynamic directory of information in which information providers and organizers (also referred herein as category owners) are equitably compensated based upon the usage of their work by the users.
  • the system is designed to allow any user to create and maintain one or more list of informational items, also referred to as categories of information.
  • a category owner is allowed to include all or part of another category in his category. All or part of his category is also allowed to be included in another category.
  • a category owner is provided with an opportunity to be compensated for his work through advertising activities in connection with the usage of his category in locating information for the users.
  • the teachings ofthe present invention are applicable to any search engines and directory systems.
  • the teachings ofthe present invention are also applicable to any environment in which there is a need to organize or classify information for various purposes, including but are not limited to, targeted advertising on the Internet, personal and company information and knowledge management, genealogy databases, etc.
  • the present invention is not limited to the building and maintaining of information databases and/or directories on the Internet and can be applied to other types of information processing in other business areas or disciplines.
  • the present invention provides an effective solution to the problems of targeted advertising on the Internet.
  • the individual category owner selects which advertisement will be displayed when his category is selected, or when all or part of his category is used. For instance, the two different owners, of "Winter Apparel" categories mentioned above might solicit very different advertisers for their respective categories. Since end-users of the system will naturally gravitate towards categories that are more relevant to their context, and a typical category owner will tend to "know his audience", the advertisement displayed to the end-user according to the teachings ofthe present invention will have a much greater tendency to be relevant to him in his context.
  • This system can be applied to both a company's Intranet (internal web sites), and/or the information on a single user's computer. In both cases, information and categorization from the rest ofthe system can be intermixed with non-public information. For instance, a company might have a "computers" category that includes company- specific links to internal web sites, mixed with links from external categories in this system, entire category trees, etc.
  • This system can also be used for collaboration on a certain topic that is specific to a company and one or more of its partners. For instance, a company might create a "sub-contractor's resources" category that is made for subcontractors that work with that company.
  • the system also includes ways to support forms of compensation other than advertising. For example, a company could employ its own method (possibly connected to an internal accounting system) of awarding credit to owners of popular or important categories. The same set of features can also be applied to organizing/classifying personal information on a single computer.
  • the system described herein is unique in its ability to gather knowledge from a very large base of users.
  • Category owners enter keywords and other information on the items (also referred to as informational items or data items) within their category. Both public category owners and end-users are constantly making decisions about the structure and organization of their particular hierarchies. Because of this, this system effectively creates a knowledge base that can more accurately predict the proper context of a certain piece of information.
  • the system may be configured to specify other kinds of information or data, such as documents, images, CAD drawings, etc. Also, the system can be configured to actively retrieve and search documents that are specified in a category, and use the results of this search to extend the system's hierarchy one or more levels downward into the documents.
  • teachings ofthe present invention can be used to create decision support systems as well, using the system's database of categories and hierarchies. Moreover, the system can be used to create a system for market intelligence (data mining).
  • the teachings ofthe present invention can be used to create a system of genealogy in which each category can relate to a single individual, and items within that category can relate to the offspring of that individual.
  • This system will be far superior to any system today, because it will create a worldwide community of information gatherers, and the same dynamics driving the primary search engine will drive this community as well.
  • the contextual nature of knowledge means that the important attributes ofthe "door” in this context might be different in a different context, and therefore, the way in which one classifies the object might be different.
  • the important attributes ofthe door are different, and so is its classification (e.g., the way in which one classifies things is by its important attributes within the context). For instance, if one were building a fire in the wilderness, and came across the very same door lying on the ground, it would have a different classification (e.g., "things that burn”) and it would have different important attributes (e.g. its material, size, dryness, etc).
  • classification represents, at the core, the very essence of knowledge work.
  • people should not be required to perform this type of work (e.g., classification of information or objects) for free (although the "reward” might be either tangible or intangible).
  • classification of information or objects can dictate the outcome of commercial transactions (e.g., a certain make of automobile is classified as a "family car” versus a "sports car"), classification not only is a unit of work, but it can be very valuable (directly or indirectly) in commercial situations.
  • Person A there can be different ways that Person A might find the wooden door: 1) person A will relate his context to person B, relating certain attributes that person B listed to those important to him (he might say, "look for things made out of 'wood'); 2) person B might see that person A and others are using his product in a way that he had not expected, and add a new classification for his product and list important attributes of his product accordingly, thereby allowing person A to find his product when he searches for "things that burn”; 3) another party, person C, might perform the work of linking person A and person B's context seeing person A's need and person B's product.
  • there can be different types of users in the system which represent different ways of using the system and different roles within the system.
  • One type of user is an "unregistered user", which is a person or entity that has not yet identified himself as a unique user ofthe system. This kind of user uses the system primarily to find web sites/documents on the Internet relating to a certain subject in which he is interested.
  • the unregistered user can use the system to perform searches for information that may be of interest to him, or browse tlirough the default categories displayed.
  • a category is displayed
  • the advertisement specified by the given category is also displayed.
  • the system records the occurrence of such display in a database or file referred to as the Event Database herein. Whenever an advertisement is selected, etc., these actions are also stored in the Event Database.
  • the Ad, the time, and the user (which is specified as "unregistered" for non-registered users) are also stored in this database.
  • an unregistered user can enter a search request including one or more search terms and one or more categories in which to search (also referred to as search categories) using a user interface provided by the system.
  • the unregistered user can view results ofthe search, which may be zero to many matches.
  • the unregistered user can select a match, and the target of that match (e.g., a URL pointing to a web page) will be displayed.
  • Another type of user is a registered user.
  • an unregistered user attempts to. use any controls to customize the environment — for instance, to reclassify a certain category or to select a different category owner for a category — then the user is asked to create an identity in the system so that he can be identified by the system.
  • the registered user can create new categories by using one or more user interfaces provided by the system.
  • a register user may also modify an existing category, or essentially "clone" the category by creating a new category of his own, but specifying a CatShare that represents the existing category.
  • a CatShare is an active connection to another category.
  • a CatShare uses a search method described below in conjunction with one or more specific categories and one or more search terms to produce a set of resultant links.
  • a link is an item within the category that is either a pointer to another category, or a URL specification representing a web site/document that is classified within his category.
  • the user may specify one or more keywords for the link. In one embodiment, keywords are used to find the specific links in the system that match the search terms specified by the user.
  • a category within the system can be classified as a private category or a public category, hi one embodiment, a private category means that the respective category is not accessible by other users except the category owner, i one embodiment, a public category means that all users ofthe system may view the respective public category, browse the category, search the category, and specify use of the category in a CatShare. h another embodiment, a public category may be viewed and used by one or more subsets ofthe users ofthe system. hi one embodiment, a category owner can do a number of things to make his category more popular, thus increasing his chances for greater rewards (tangible and/or intangible) from advertising payments associated with his category.
  • One ofthe things a category owner can do to make his category more popular is to include other categories created and maintained by other category owners as subcategories within his own category.
  • a category owner chooses to include a subcategory in his category, he may optionally choose to make that subcategory an "alternate" of an existing subcategory within his category. For example, assuming that Joe owns a category called "Motorcycles" and that he already has Jane's "Helmets" category as a subcategory within his "Motorcycles" category. Joe knows that Jane does a good job of maintaining her category and he gains a certain amount of credit from Jane's subcategory search hits (to be described in detail below).
  • Joe thinks that some users might like Fred's category more than Jane's but it may not make sense for him to include both "Helmets" categories within his since they are overlapping in concept.
  • the present invention allows Joe to make Fred's "Helmets” category an alternate category of Jane's.
  • users that view the subcategory "Helmets" within Joe's "Motorcycles" category may choose to change from the primary subcategory (i.e., Jane's "Helmets" category) to the alternate subcategory (i.e., Fred's "Helmets” category).
  • the category is subsequently displayed with Fred's Helmets category as the primary subcategory (and the user could switch it back, or choose yet another alternate, and so on).
  • Category owners are motivated by the system to enter more alternates for various reasons.
  • First, having more alternates for subcategories means that users have more choices and therefore will be more apt to like the CO's category, view and use it more often, etc.
  • a CO would want his category to be an alternate for many other categories since this gives his category more exposure, thus increasing his category's popularity, and so on.
  • the alternate category feature disclosed in the present invention gives a CO a middle ground option between rejecting another CO's request to be a subcategory and accepting it as a full subcategory.
  • the system therefore allows the category owners to choose their own alternates to offer more choices to the users which would result in more usage of their own categories leading to more opportunities for greater reward and/or compensation (tangible and/or intangible).
  • link nodes that represent the alternate subcategories are flagged as such in the parent structure ofthe respective node. This is because a certain category may be a subcategory of several categories within the system. In some cases, it may be a primary subcategory while in other cases it may be an alternate subcategory.
  • a category when a category is displayed to the users, only its primary subcategory links are displayed. However, the users are allowed to select an alternate subcategory for each primary subcategory if one exists. As described in more detail below, with respect to searching, a category which is flagged as an alternate is given a lower score, but nevertheless is included as if it were a normal subcategory. When a user selects an alternate subcategory, he effectively swaps the role between the original primary subcategory and the one he selects. As such, the search algorithm will score the original primary lower, and the newly chosen alternate higher. When a category is displayed, the chosen alternate is displayed, and not the original primary.
  • an advertisement buyer (“ad buyer” or advertiser).
  • the system uses an affiliate advertising model in which an entity (e.g., a merchant who wants to advertise his products, services, etc.) pays anyone who generates visits, leads, sales, or other transactional activities on his web site. Accordingly, if a user ofthe system sees an advertisement while using a category (e.g., viewing the category, searching for information in the category, etc.) and initiates an activity with respect to the advertisement, the category owner can be compensated in various ways by the entity (e.g., merchant) for which the advertisement is displayed.
  • entity e.g., merchant
  • the various activities for which the category owner can be compensated include the display ofthe advertisement to the user, "click through”, “buy through”, and “lead through”, etc.
  • the category owner may be compensated by some fixed amount each time the respective advertisement is displayed to a user.
  • the category owner maybe compensated by some fixed amount for each click through (e.g., each time the user clicks on the advertisement). If the user purchases the product or services advertised, the category owner may get a fixed percentage ofthe purchase price (i.e., buy through). Likewise, the category owner may get some fixed commission if the user clicks on an advertisement link and he later buys something (or don't). This is called “lead through”.
  • the system provides the advertisers with the capability to sign up with the system to advertise their products, services, messages, ideas, etc.
  • the various category owners in the system are allowed to select from the list of available advertisements one or more appropriate advertisements that they think are related to their categories.
  • the respective category owner is provided with the opportunity to be compensated not only for the display ofthe advertisement but also for other activities originated from the display ofthe advertisement.
  • each category owner is allowed to choose any advertisement from the list to be associated with his category.
  • an ad buyer purchases advertisement placements from COs.
  • an ad buyer will select a CO's category based on his impression of how the CO is targeting his desired audience with his category. Since an advertiser typically pays a CO based on the number of users that view his advertisement, select (e.g.”click") his advertisement, or perform other transactional activities, it is in the advertiser's best interest to find the most "targeted" audience possible. That is, the audience that is the most likely to be interested in his products, services, or any other messages or information that the advertiser wants to communicate.
  • Default a user in the true sense
  • system user This user is the category owner that "owns” all ofthe categories that are on the system before any users use the system (the default root category).
  • a user ofthe system can play one or more roles in the system.
  • a user may be a category owner with respect to his own category and an advertiser with respect to another category maintained by another user ofthe system.
  • Figure 1 illustrates a block diagram of one embodiment of a system environment and configuration 100 for maintaining a dynamic directory information.
  • various entities can be connected to a system 101 via a computer network.
  • the computer network can be a local area network (LAN), a wide area network (WAN), the Internet, or any combinations thereof,
  • the system 101 is an Internet-based system designed to perform various functions according to the requests received from the various entities connected to the system 101.
  • the various functions performed by system 101 include creating and maintaining categories of information based upon the category specification information provided by category owners 103, allowing users 105 to access the categories to locate information, searching the categories based upon search requests submitted by the users 105, facilitating advertising activities between the category owners 103 and advertisers 107, keeping track of advertising activities in connection with the usage ofthe categories, and providing the category owners with the opportunity to be compensated based upon advertising activities in connection with the usage of their categories, etc.
  • the various functions performed by the system 101 are described in detail below.
  • various category owners 103 can establish connections with the system 101 via the Internet.
  • the category owners 103 can submit various types of requests to the system 101 to create and maintain various categories of information that can be accessed and used by the end users 105.
  • the category owners can submit requests to the system 101 to designate one or more advertisements for their respective categories.
  • Category owners 103 may include individual or corporate entities that are aware of, have access to, or possess various sources of information or data (also referred to as "data sources") that may be of interest to the end users 105.
  • the end users 105 may include individual or corporate entities that have a need to locate and obtain various kinds of information for various purposes.
  • Advertisers 107 may include individual or corporate entities that want to advertise any products, services, etc.
  • the system 101 is designed to facilitate and process various types of requests submitted by the category owners 103, the end users 105, and the advertisers 107. The various processes and functions performed by the system 101 are described in detail below.
  • one ofthe category owners 103 can establish connection with the system 101 via an Internet connection.
  • the category owner 103 can submit a request to the system 101 to create or update a specific category or perform other category processing functions that are described in more detail below.
  • the system 101 upon receiving the request from the category owner 103, performs a corresponding function depending upon the request from the category owner 103. For example, if the category owner 103 requests to create a new category, the system 101 will create a new category data structure based upon the category specification provided by the category owner 103. If the category owner 103 requests to update an existing category, the system 101 will update the existing category based upon the changes provided by the category owner 103, etc.
  • the category owner 103 can request that one or more particular advertisements be associated or linked with his category.
  • the advertisements that are associated or linked with his category will be presented or displayed to an end user when the corresponding category is selected, either by the end user 105 or by the system 101.
  • the users 105 can establish connection with the system 101 via an Internet connection.
  • the users 105 after being connected to the system 101, can use various user interfaces provided by the system 101 to perform various functions to locate information. For example, the users 105 can browse existing categories that are made available to the end users, submit a search request to search for information in multiple categories that match the search terms specified by the users 105, send comments to the category owners 105 with respect to their category, etc.
  • the advertisers 107 in one embodiment, can also establish connection with the system 101 via an Internet connection to conduct various advertising activities with respect to various products or services. As an example, the advertisers 107 can select one or more specific categories and contact the respective category owners to place their advertisements in connection with the selected categories.
  • an advertisement is associated or linked with a particular category
  • that advertisement will be presented to an end user if the corresponding category is selected either by the end user or by the system.
  • the system's selection of a particular category for advertising purposes will be described in more detail below.
  • the category owners 103, the end users 105, and the advertisers 107 can perform other types of transactions and functions to be described in more detail below using the system 101.
  • other entities can also be connected to the system 101 to conduct various types of business transactions and functions.
  • various entities may want to use the category structure and processing functions provided by the system 101 to build and maintain personal or company information/knowledge databases, filing systems, etc.
  • other entities may want to use the category structure and processing functions provided by the system 101 to build and maintain public or private genealogy databases, etc.
  • other entities can also use the system 101 for other purposes including establishing business connection with users ofthe system 101, obtaining statistical information with respect to category usage, etc.
  • Figure 2 illustrates a more detailed block diagram of one embodiment ofthe system configuration 100 shown in Figure 1. For clarity and simplicity, the discussion is focused on the interactions between the category owners 203, the end users 205, the advertisers 207, and the system 201.
  • the system 201 performs various functions in response to various requests submitted by the category owners 203, the end users 205, and the advertisers 207.
  • the various functions performed by the system 201 include processing category creation and maintenance requests submitted by the category owners 203, allowing the end users 205 to browse through available existing categories, processing search requests submitted by the end users 205, processing advertising requests submitted by either the category owners 203 or the advertisers 207, etc.
  • the various functions performed by the system 201 also include facilitating transactions between the category owners 205 and the advertisers 207.
  • the system 201 can be logically organized into three major subsystems or units: a server subsystem or unit 211, a database subsystem or unit 231, and a backend accounting subsystem or unit 251.
  • the server subsystem 211 in one embodiment, contains one or more servers 213.
  • the accounting subsystem or unit 251 in one embodiment, contains an accounting application program 253 and an accounting database 255.
  • the category owners 203 establish connection with the system 201 via the Internet and access the various functions ofthe system 201 using an Internet browser (also referred to as the client program).
  • the category owners 203 can establish connection with the system 201 using a router, a dial-up modem, or other methods of Internet connections available to them.
  • the category owners 203 can utilize an Internet browser to interface with the system 201 in order to access the various functions and features ofthe system 201 including category processing functions, account management functions, and advertising placements, etc.
  • the category owners 203 can also use the browser client program to communicate with other entities connected to the system including the end users 205 and the advertisers 207.
  • the system 201 can support both Microsoft® INTERNET EXPLORER® and Netscape® NAVIGATOR® browser software.
  • End users 205 (also referred to as users ofthe system or users), in one embodiment, establish connection with the system 201 via the Internet.
  • the users 205 can establish connection with the system 201 using routers, dial-up modems or other methods of Internet connections available to them, hi one embodiment, the users 205 use an Internet browser to access the system 201 to perform various functions including browsing available categories, performing search in one or multiple categories, communicating with category owners, etc.
  • the various functions performed by the system 201 in response to various requests submitted by the users 205 are described in detail below.
  • advertisers 207 in one embodiment, establish connection with the system 201 via the Internet.
  • the advertisers 207 can establish connection with the system 201 using routers, dial-up modems or other methods of Internet connections available to them.
  • the advertisers 207 use an Internet browser to access the system 201 to place their advertisements into the system 201 that can be selected by the various category owners for their respective categories, i this embodiment, as mentioned above and explained in more detail below, the advertisements submitted by various advertisers are put into a list maintained by the system 201 that can be viewed and selected by the various category owners for their respective categories.
  • the advertisers 207 use an Internet browser to access the system 201 to perform various functions including placing advertisements for specific categories, submitting advertisements to be selected by category owners 203, communicating with category owners, etc.
  • the various entities connected to the system 201 can play one or many different roles.
  • one entity can be a category owner, an end user, and an advertiser.
  • the server 213 is connected to the client 161 via the network 271.
  • the server 213 includes a web server 215 and a server application 217.
  • the web server 215 is used to communicate with the client 161 (e.g., a web browser front end).
  • the web server 215 is omitted and the client 261 is connected directly to the server application 217 via the network 271.
  • the server application 217 in one embodiment, includes one or more computer programs that are designed to perform various functions in response to various requests submitted by the client 261. As mentioned above, the various functions performed by the server application 217 include category processing, search processing, and advertising processing, etc.
  • the server application 217 communicates with the web server 215 and creates web pages dynamically to be sent to the client 261 via the network 271, in response to various requests submitted by the client 261.
  • the server application 217 in performing its various corresponding functions, accesses and stores data in various databases in the database subsystem 231, including the category database 233, the user database 235, the event database 237, and the extrapolated hierarchy database 239.
  • the category database 233 in one embodiment, is used to store information related to personal and public categories that are created and maintained by the server application server 217, based upon category information or specification provided by the category owners 203.
  • the information stored in the category database 233 includes category information, data links information associated with the categories, category- share (catshare) information associated with the categories, advertisement placement information associated with the categories, etc.
  • the structure and specification ofthe various types of information or data stored in the category database are described in detail below.
  • the category database 233 can be any type of storage medium including disk, tape, etc.
  • the category database 233 is configured as a relational database containing a set of various tables used to store various types of information associated with the various categories as described above.
  • the teachings ofthe present invention are not limited to relational database structures and can equally apply to any other database or file structures including flat file structure, indexed file structure, hierarchical database structure, networked database structure, or any combinations thereof, etc.
  • the category database 233 is populated and updated by the server application 217 in response to various types of category processing requests submitted by the various entities connected to the system 201.
  • the various entities e.g., category owners 203
  • the system 201 can access various user interfaces designed to allow them to add, modify, or remove private or public categories, as well as to place one or more specific advertisements for the respective categories.
  • the category database 233 is used by the accounting subsystem 251 to perform its corresponding functions described in more detail below.
  • the user database 235 is configured to store user information for registered users in the system including payment information for category owners and billing information for advertisers, one embodiment, the user database 235 is used by the accounting subsystem 251 to perform its corresponding functions including preparing and generating payments, bills, etc. to the appropriate users ofthe system.
  • the user database 235 can be any type of storage medium including disk, tape, etc.
  • the user database 235 is configured as a relational database containing a set of various tables used to store various types of user information including user profile, payment, and billing information, etc.
  • the event database 237 is configured to store various events tracked by the server application 217.
  • the various events tracked by the server application 217 include occurrences of advertisements displayed, advertisements selected, categories displayed, users logons, logoffs, etc.
  • the event database 237 can also be referred to as event log, transaction log, server log, or statistics database, etc.
  • the event database 237 is used by the accounting subsystem 251 to prepare payment and billing information corresponding to advertising and other activities associated with various categories in the system.
  • the event database 237 can be any type of storage medium including disk, tape, etc.
  • the event database 237 can be configured as a relational database containing one or more tables used to store the various events and relating information tracked by the server application server 217.
  • the teachings ofthe present invention are not limited to relational database structures and can equally apply to any other database or file structures including flat file structure, indexed file structure, hierarchical database structure, networked database structure, or combinations thereof, etc.
  • the extrapolated hierarchy database 239 in one embodiment, is used to store the combined extrapolated category hierarchy of various category hierarchies in the system.
  • the structure and specification ofthe extrapolated hierarchy database 239 and various data structures contained therein are described in greater detail below.
  • the accounting subsystem 251 in one embodiment, is a set of one or more programs that prepares and generates billing and payment information to advertisers and category owners, respectively.
  • the accounting subsystem 251 uses the accounting database 253 to store and retrieve the information needed to perform its corresponding functions.
  • Figure 3 shows a functional block diagram of one embodiment ofthe system 201 described above with respect to Figure 2.
  • the logic and/or functions that are described below can be implemented using one or more programming languages suitable for the software or system development in a client- server environment, such as Visual Basic, C++ or Java, etc. It should be recognized by one skilled in the art, however, that the logic or functions described herein can be implemented by other programming languages, circuits, or techniques in accordance with the teachings ofthe present invention without loss of generality.
  • the system 301 includes a user profile/account update logic or function 311, a category processing logic or function 321, a search processing logic or function 331, an advertising processing logic or function 341, an accounting logic or function 351, and other processing logic or functions 361.
  • the user profile/account update logic 311 includes logic to allow users to register with the system, to establish and maintain their user profile and account information that are used for various purposes as described in greater detail below.
  • the user profile and account information maintained for a user can contain the user personal and/or business contact information, account balances if applicable, billing and/or payment information if applicable, etc.
  • the category processing logic 321 contains logic to create and update various categories and related information based upon category information or specification provided by the corresponding users (e.g., category owners).
  • the category processing logic 321 includes logic to allow a category owner to create a new category for use in the system, logic to update the content and structure of an existing category, logic to convert a private category to a public category, logic to allow the category owner to share all or part of his category with another category owner, logic to include all or part of another category within his category, and logic to place or associate one or more particular advertisements with a specific category, etc.
  • the various functions and processes included in the category processing logic 321 are described in more detail below.
  • the category processing logic 321 contains category create logic 323, category modify logic 325, category-share logic 327, and category advertisement logic 329.
  • the category create logic 323 is used to create and store a new category in the category database 233 and its corresponding data structures in the extrapolated database 239, based upon the category information/specification supplied by a category owner.
  • the category modify logic 325 contains logic to allow the category owner to modify the content and/or structure of his category, to include all or part of another category within his category, to include all or part of his category within the structure of another category, etc.
  • the category share (catshare) logic 327 includes logic to allow the category owner to dynamically change the content and/or structure of his category by specifying a catshare.
  • a catshare in one embodiment, represents an active and dynamic connection to another category.
  • a catshare in one embodiment, includes a set of criteria including one or more search terms and one or more categories in which to search for data links whose associated keywords match the specified search terms.
  • the catshare associated with a particular category is used by the search logic described below to identify and link to that particular category one or more links from the specified category that match one or more specified search terms.
  • the resultant links are automatically inserted within his category as if they were part of his category.
  • a category owner can dynamically include within his category all or part of another category that match his criteria (e.g., search terms) without keeping track ofthe changes that may have taken place with respect to another category structure and/or contents and without spending time and effort to do the work himself.
  • his criteria e.g., search terms
  • the search processing logic 33 includes a core search logic 333, a scoring logic 335, and a category/advertisement selection logic 337.
  • the core search logic 333 includes logic to identify data links within one or more specified categories that match one or more specified search terms.
  • the scoring logic 335 includes logic to assign an appropriate weight or score to each given match based upon a set of scoring criteria or parameters that are explained in more detail below.
  • the category/advertisement selection logic 337 in one embodiment, performs a selection function to select a specific category whose associated advertisement will be presented along with the results ofthe search (i.e., the list of matches). The selection function is described in more detail below.
  • the search processing logic 331 is invoked when a user submits, using various user interfaces described in more detail below, a search request that includes one or more categories in which to search and one or more search terms.
  • the user can specify multiple categories at different hierarchical levels in which to search for data items (links) that match his specified search term(s).
  • the user can select/specify the multiple search categories using a user interface described in more detail below, or specify a root category in which to search.
  • the root category specified by the user in turn may contain multiple different categories and data items that are structured in multiple levels ofthe hierarchy.
  • the search processing logic 331 will return one or more data links from one or more specified search categories that match one or more search terms specified by the user in his search request. If the search is not successful, it will return no links.
  • a maximum number of matching links to be returned by the search processing logic 331 can be limited either by the user or by specific implementations of different user interfaces. Each returned matching data link will have a certain "weight" or “score” associated with the data item which corresponds to the "closeness” or “accuracy” ofthe result. A higher weight or score corresponds to a closer match to the search terms entered by the user, based upon a set of scoring criteria or rules described in detail below.
  • a category contains one or more data links.
  • Each data link can point to a specific data source or data item that can be represented by an address of a location in which the data source or data item resides.
  • a data link can also point to another category (e.g., a subcategory with respect to the parent category to which the respective data link is linked or associated).
  • a data link included in a given category can contain one or more keywords specified by the category owner.
  • Each keyword included in a data link can be indicative of one or more informational topics included in the corresponding data source or data item to which the respective data link points.
  • the search processing logic 331 uses these keywords to identify the specific data links in the search categories that match the search terms entered by the user, hi one embodiment, a subcategory in a given category is considered a data link within that category and therefore can have keywords associated with it. In one embodiment, categories themselves can also have keywords hi one embodiment, the search logic 331 attempts to find a "hierarchical" match, in that it will look at one level ofthe search tree for a search term, another level ofthe search tree for another search term, and so on, based upon the number ofthe specified search terms.
  • the search logic 331 will rearrange the order ofthe specified search terms to find more matches, hi one embodiment, each time the search terms are rearranged, the weight or score ofthe match for the rearranged search terms will be diminished by a factor. Accordingly, in one embodiment, the order ofthe search terms is important in the searching process as well as in determining the corresponding weight or score of a given match. hi one embodiment, a higher weight or score is given to matches that are hierarchically closer together. For example, assuming that a category called "Computers" is being searched. This category has a link which points to a subcategory called "Sony Stuff, which has a keyword "Sony".
  • the "Sony Stuff category has a link which is a pointer to another subcategory called "Monitors", which has a keyword “monitor”.
  • the "Monitors” category has several links to several different web sites, one of these links (e.g., link F) has a keyword “flat” which points to a web site that sells flat-panel monitors made by Sony Corp. hi this example, assuming that the search terms entered by a user "A" are "sony monitor flat".
  • the search logic 331 will search the tree representing the search category "Computers" and will identify link F as a perfect match (i.e., the match with a highest matching weight or score) because the hierarchical order in which the match is found (e.g., link F) is the same order in which the search terms are entered.
  • the search logic 331 will return a set of matching links, each having an associated score or weight based upon various scoring criteria described herein.
  • a category might be categorized in different ways, which can effect the score or weight ofthe resultant link. For instance, a user might specify the search terms, “chicago pastimes self-tours”. "Joe CO” might have a category called, “Chicago Motorcycle Rentals”, which he has managed to get listed in other CO's categories, such as “Chicago Vehicle Rentals” and “Chicago Automotive”. Another CO, “Jane CO”, might have a Category called “Chicago Pastimes”, under which she lists Joe's category with some keywords, including the term, "self-tour".
  • Jane CO in this case, is aware that many users are looking for pastimes in Chicago that involve a self-guided tour, and she knows that motorcycle rental is a way of providing this service. It's important to note that Joe may have never thought of positioning his category this way, even though he is diligent about keeping his links up to date and on topic.
  • one ofthe goals ofthe present invention is to create a system or an environment in which both Joe and Jane are provided with an opportunity to be rewarded for their work in bringing together a user with the desired information.
  • one ofthe ways in which COs are rewarded is through the display of advertisements associated with their categories.
  • a search can produce resultant links that might be from multiple different categories owned by different COs, from a practical viewpoint, there should be only one single advertisement or a small number of advertisements that can be presented to the user along with the matching links.
  • the present invention provides a method or mechanism to solve the problem described above.
  • a method referred to as the "advertising lottery” is used to solve this problem.
  • each link returned has an associated score or weight, and an associated category from which the link originated.
  • the respective returned link has an associated "path" through the given category hierarchy that the search logic takes to return the given match.
  • search results are obtained in response to a search request submitted by a user
  • the information described above is used to determine or select a specific category for advertising purposes (i.e., presenting one or more advertisements associated with the selected category to the user along with the search results). This determination can be compared to buying lottery tickets in a raffle. Resultant search links that have greater scores or weights get more "tickets", and those with lower scores or weights get fewer tickets. In addition, categories that "took part” in obtaining a given resultant link also get their shares ofthe "tickets" to put into the hat. hi one embodiment, when the results are compiled, all ofthe tickets are "put into a hat” and a single "ticket” is randomly selected.
  • the category to which the "winning" ticket belongs is chosen (i.e., the advertisement associated with the selected category will be presented to the user).
  • the system will then record the display ofthe corresponding advertisement (along with other associated events, such as the user clicking on the ad, etc.) in the event database.
  • the data stored in the event database e.g., displaying, clicking ofthe advertisement, etc.
  • each contributing category owner is provided with an opportunity to be compensated for his work in proportion to the amount of his contributions in obtaining the information for the users.
  • Figure 4 shows a structure diagram of one embodiment ofthe category database 233 described in Figure 2 above.
  • the category database 233 in one embodiment, is configured to store category information and related information which include category specification data 401, link specification 403, catshare specification 405, ad placement specification 407, and advertisement specification or information 409.
  • the category specification 401 contains category identifier, category name, current advertisement placements, links, owner identifier, keywords, etc.
  • the link specification 403, in one embodiment, contains the link identifier, the link name, description, keywords, pointer to either a data source that can referenced by a URL or a sub category.
  • the catshare specification 405 contains one or more search terms, the category identifier(s) of one or more categories in which to search for links that match the specified search terms, etc.
  • the ad placement specification 407 includes the link name, description, keywords, a URL or pointer to a sub category, etc.
  • the advertisement specification 409 in one embodiment, contains the ad identifier, the advertiser identifier, the image or object to be presented or displayed to the user, and a target URL associated with the respective ad, etc.
  • the category database 233 is implemented as a relational database structure and the various information stored in the category database 233 can be organized and maintained in various tables that can be cross-referenced or linked together using certain data items stored as keys or descriptors.
  • the category database 233 is not limited to relational database structure and can be implemented in any other database or file structure including flat file, indexed file, hierarchical database, networked database, etc. or any combinations thereof.
  • Figure 5 shows a tree view diagram of one embodiment ofthe category database 233 with respect to some ofthe information maintained therein.
  • a category owner identified as category owner 1 e.g., a registered user in the system 201 may have created multiple categories (e.g., category 1, category 2,..., category N), the information of which are stored in the category database 233.
  • categories e.g., category 1, category 2,..., category N
  • each of these categories are created and maintained by category owner 1 and therefore can be traced back to category owner 1 using some identifiers, for example a unique category owner identifier assigned to category owner 1 by the system.
  • Each of these categories may have one or more data links and other information associated with it.
  • category 1 has two data links (data link 1 and data link 2), one catshare (catshare 1), and one ad placement (ad placement 1) associated with it. Since these data or information items (or structures) are associated with category 1, they can be linked or traced back to category 1 using an identifier, for example a unique category identifier generated by the system.
  • Each data link associated with category 1 may have an associated data source or contain a pointer to another category within the system 201 (a sub category). For example, data link 1 is associated with a data source and data link 2 points to another category in the system 201 (category 4).
  • the data source or data item associated with data link 1 of category 1 may be referenced by a file name or an address of a location at which the respective data source resides, hi one embodiment, the data source can be referenced by a URL.
  • the data source can contain text data, graphics data, voice data, video data, or any combination thereof.
  • the catshare 1 is used to dynamically identify and include within category 1 those data links associated with another category (category 5) whose specified keywords match the search terms specified (K4, K6).
  • K4, K6 search terms specified
  • category 1 includes ad placement 1 as one of its current ad placements.
  • the ad placement 1 in this example points to a particular advertisement (advertisement 1) that has been designated to be presented or displayed to an end user once category 1 is selected, either by the end user in browsing through available categories or by the system in performing the search process in response to a search request submitted by the end user.
  • advertisement 1 a particular advertisement that has been designated to be presented or displayed to an end user once category 1 is selected, either by the end user in browsing through available categories or by the system in performing the search process in response to a search request submitted by the end user.
  • category 1 includes ad placement 1 as one of its current ad placements.
  • the ad placement 1 in this example points to a particular advertisement (advertisement 1) that has been designated to be presented or displayed to an end user once category 1 is selected, either by the end user in browsing through available categories or by the system in performing the search process in response to a search request submitted by the end user.
  • category 1
  • Figure 6 shows a table- view representation of one embodiment ofthe category database 233.
  • the category and related information are organized and maintained in various tables that are cross-referenced or linked by certain data items stored in the tables (keys or descriptors).
  • information about the various categories created and maintained by the category owners are stored in a table referred to as category table 611.
  • Data links associated with each category are stored in a table referred to as link table 621.
  • Each category entry in the category table 611 may have one or more corresponding data link entries in the link table 621.
  • each category entry stored in the category table 611 may have one or more catshare entries stored in another table referred to as catshare table 631.
  • Each category entry in the category table 611 may also have one or more ad placement entries stored in a table referred to as the ad placement table 641.
  • Each ad placement entry in the ad placement table 641 may have one or more advertisement entries stored in a table referred to as the advertisement table 651.
  • Entries that are stored in the various tables mentioned above are also referred to as records or rows in the present specification.
  • the table structures shown in Figure 6 are for illustrative purposes only and it should be appreciated by one skilled in the art that the table structures described herein can be implemented by other data structures, methods, and techniques within the scope ofthe present invention.
  • Figure 7 illustrates an example of one embodiment of a user interface 700 showing a functional anatomy of a category, in this case a category called "Motorcycle Helmets".
  • the motorcycle Helmets category 701 includes several data links 705 that are displayed in the first display area 710 ofthe user interface 700.
  • the data links 705 displayed in the first display are 710 represent the addresses or locations (e.g., URLs) ofthe various web sites or web documents to which the data links 705 point.
  • the category 701 in this example also includes a data link 709 which points to another category (referred to as a sub category within the category 701).
  • the category 701 further includes several data links 713 that are dynamically obtained using the catshare structure or specification provided by the category owner of category 701. h this example, the data links 713 are those data links in another category (e.g., "Auto-related Agencies and Non-Profits) that match the search terms specified (e.g., "motorcycle helmet”).
  • the user interface 700 also contains a list of functions or options that can be activated or invoked by the user by selecting or clicking on the corresponding user interface element.
  • the UI element 721 in this example, when selected by the user, will display a corresponding user interface to allow the user to place an add for the category 701.
  • the UI element 725 can be used by the user to send feedback or comments to the category owner ofthe category 701.
  • the UI element 729 can be used by the user to customize category 701 according to how he wants to organize or classify his information.
  • Figure 8 shows a diagram of one embodiment ofthe extrapolated hierarchy database 239.
  • the extrapolated hierarchy database 239 is configured to include a keyword dictionary array 810, a node ID array 820, a catshare array 830, a user customization structure array 840, a plurality of keyword structures 850, and a plurality of node structures 860.
  • the various categories and data links associated with each category are considered nodes within the extrapolated hierarchy database for various processing purposes including searching.
  • Figure 9 illustrates an external view of a category called "Computers" and a corresponding internal view ofthe respective category.
  • the category “Computers” includes several data links (e.g., Peripherals, CompUSA, CNET, etc.), each of which points to a corresponding data source.
  • the data source corresponding to each data link can be either a web page or web site represented by an URL (the COMPUSA or CNET data links in this example).
  • the data source can also be another category (i.e., a subcategory with respect to the "Computers” category).
  • the "Peripherals" data link in this example is a subcategory.
  • the category “Computers” and its associated links and subcategories, etc. are basically considered nodes from the internal view.
  • each ofthe nodes can have one or more keywords associated with it.
  • each ofthe nodes has a pointer linking the respective node to its parent node(s).
  • each node can have a corresponding external ID number to link the respective node with the category database 233.
  • each node can have a list of data links (e.g., as in the case of a category node), a pointer to another category (e.g., as in the case of a subcategory link), or a pointer to a URL (e.g., as in the case of a normal "leaf node" link), h one embodiment, a node can have a flag to indicate whether it is a default (i.e. primary) or an alternate.
  • each of node structures 860 includes the information associated with the respective node as described above.
  • the keyword dictionary 810 includes a list of keywords associated with the various nodes in the extrapolated database 239.
  • the keywords contained in the keyword dictionary 810 are non-redundant (unique).
  • the keyword dictionary 810 is implemented as an array having multiple entries with each entry corresponding to a unique keyword.
  • each entry in the keyword array contains the text string keyword and a pointer to a corresponding keyword structure 850.
  • each keyword structure 850 contains a back-pointer to point back to the corresponding keyword element or entry in the keyword dictionary array 810.
  • each keyword structure 850 includes a list of nodes that contain the respective keyword. More specifically, each keyword structure 850 may point to one or more node structures 860 that correspond to the various nodes which contain the respective keyword included in the respective keyword structure 850.
  • the NodelD array 820 is an array or lookup table that contains a list of external nodelDs and their corresponding node pointers, hi one embodiment, this lookup table allows a node pointer to be located quickly by its corresponding external nodelD.
  • the system when a user merely wants to display a given category, the system will perform a lookup on the NodelD array 820 and return a list of links pointed to by the node corresponding to the given category.
  • the catshare array 830 contains all ofthe system catshares and is indexed to allow quick retrieval on a catshare target.
  • a catshare is a special kind of category, histead of having links of its own, a catshare specifies one or more nodes (i.e., one or more categories) in which to search and one or more search terms to find the links in the specified categories whose associated keywords match the specified search terms. As such, the owner ofthe respective catshare does not have to worry about maintaining or updating the respective links that he "borrows" or "shares" from another category.
  • catshares are extrapolated when they are added to the system, in that the results ofthe search based upon the catshare's specified category and the specified search terms are entered into the respective category and is added as a normal category, hi one embodiment, when a category in the system is updated, it is checked to see if it is named in any catshare, and if so, the given catshare is regenerated after the respective category is updated, h one embodiment, one or more search categories and one or more search terms can be specified in a catshare to obtain the links in the specified categories whose associated keywords match the specified search term(s).
  • the catshare array 830 is implemented as an array of catshare structures. Each catshare structure may contain the following: a node pointer for the respective catshare, one or more node pointers for one or more target categories (i.e., one or more categories in which to search), and one or more search terms.
  • categories that are maintained in the system may be classified as private categories or public categories, h one embodiment, private categories may be accessed by their respective category owners only.
  • public categories can be accessed by all users ofthe system or by one or more subsets ofthe users ofthe system, hi one embodiment, private and public categories are maintained in the databases (e.g., the category database and the extrapolated hierarchy database).
  • each node has an owner ID associated with it.
  • an owner ID associated with a publicly accessible node i.e., a node in a public category
  • publicly accessible nodes have positive owner ID's whereas private nodes have negative owners ID's.
  • a node is disregarded if it has a negative owner ID and its owner ID does not match the user ID ofthe user who requests the search, hi other words, if a node is not a publicly accessible node, it can be accessed only by its respective owner.
  • user customized categories are distinguished from public categories and are not added to the core search system to keep the core search system smaller and thus more efficient. Instead, a special case can be performed within the core search loop that checks each category along the way for any needed edits and changes the contents ofthe given category accordingly.
  • the user customized structure array 840 contains a list of user customization structures. Each customization structure is used to hold the edits for each user. For each search, the given user's customization structure is retrieved so that it can be used for the search, hi one embodiment, a user customization structure contained in the user customization structure array 840 contains the following information: the user ID, a list of owner IDs to ignore, a list of category edits that contains the node ID to edit and one of: an alternate category owner selection containing the node ID to change and the node ID to change it to; added/deleted links within a given category containing the node ID ofthe given category and whether this is an addition or a deletion.
  • the system also includes a mechanism or feature referred to as alternate category owner selection.
  • alternate category owner selection For example, assuming that Joe is the CO for the "Computers" category. Joe's "Computers” category may contain many links, including many subcategories. One of those subcategories is a pointer to Fred's "Peripherals" category. Assuming that Joe finds out that another CO Jane has a category about peripherals also, hi this example, Joe thinks that Jane has a good category for certain audience but he does not want to give up Fred's category, hi this instance, the system allows Joe to make Jane's peripherals category an alternate for Fred's.
  • each node that is a link contains a flag to indicate whether it is a default (primary) link or an alternate link.
  • there are default links and alternate links hi one embodiment, if an alternate link is read, it is assumed to be an alternate ofthe previous default link in the category's link list, i one embodiment, during the search process to be described in more detail below, alternate nodes are given lower scores or weights than default nodes.
  • the user customization structure that is retrieved or loaded for a given search is used along the way to determine if an alternate node is chosen instead of a default node. If so, the alternate node is scored higher and the default node is scored lower. As explained above, when a user selects an alternate subcategory, he effectively swaps the role between the original primary subcategory and the one he selects.
  • Figure 10 illustrates the relationship between the keyword dictionary array 810, the keyword structures 850, and the node structures 860 according to one embodiment of the present invention. As described in more detail below, these various structures are used to process search requests submitted by users ofthe system 201.
  • the node structure 860 includes the various information associated with various nodes as described above.
  • the keyword dictionary 810 includes a list of keywords associated with the various nodes in the extrapolated database 239.
  • the keywords contained in the keyword dictionary 810 are unique, hi one embodiment, the keyword dictionary 810 is implemented as an array having multiple entries with each entry corresponding to a unique keyword.
  • each entry in the keyword array contains the text string keyword and a pointer to a corresponding keyword structure 850.
  • each keyword structure 850 contains a back-pointer to point back to the corresponding keyword element or entry in the keyword dictionary 810.
  • each keyword structure 850 contains a list of nodes that contain the respective keyword.
  • each keyword structure 850 may point to one or more node structures 860.
  • each node structure 860 may contain a pointer to point back to the corresponding keyword structure 850.
  • the keyword dictionary array 810, the keyword structures 850, and the node structures 860 are linked using pointers. For example, from an element or entry contained in the keyword dictionary array 810, one can use the co ⁇ esponding pointers to identify or trace to the corresponding keyword structures 850 and node structures 860. The use of these various structures to process search requests are described in detail below.
  • Figure 11 shows a flow diagram of one embodiment of a method 1100 for promoting information building and sharing by equitably compensating information providers and organizers (i.e. category owners) for the usage of their work.
  • the method 1100 begins at block 1101 and proceeds to block 1105.
  • a first category of information is created and maintained based upon category specification data provided by a first category owner.
  • the process of creating and maintaining a category of information is described in detail below.
  • the category and related information provided by the first category owner are organized and maintained in various tables in the category database 233 that are cross-referenced or linked by certain data items stored in the tables (keys or descriptors).
  • a first advertisement is designated for display to users in connection with the first category's usage, h one embodiment, the first advertisement, once linked or associated with the first category, will be presented or displayed to the users when the first category is selected, either by the users or by the system. In one embodiment, as explained above, information relating to the first advertisement associated with the first category is stored in various tables in the category database 233.
  • the method 1100 proceeds to block 1113. At block 1113, the system 201 keeps track of various advertising activities involving the first advertisement.
  • these various advertising activities include the display ofthe first advertisement to the user in response to a selection ofthe first category, either by the user or by the system; the selection ofthe first advertisement by the user (e.g., the user clicks on the image or object representing the first advertisement or performs any other actions indicating that he wants to initiate further activities in response to the first advertisement, also called “click through”); or any transactional activity that originates from the user's exposure to the first advertisement, including "buy through” and "lead through", hi one embodiment, the various activities involving the first advertisement are stored as entries or records in the event database 235.
  • the first category owner is compensated based upon the advertising activities involving the first advertisement in connection with the first category' usage. Basically, the first category owner is compensated based upon the actual usage of his category by the users, including direct and indirect usage, through advertisement sources that are associated with his category. More usage of his category results in more advertising activities which in turn results in more compensation to the first category owner.
  • Figure 12 shows a flow diagram of one embodiment of a method 1200 that describes in more detail the method 1100 in Figure 11 above.
  • the method 1200 starts at block 1201 and proceeds to block 1205.
  • a first category of information is maintained by the first category owner using various user interfaces provided by the system 201.
  • a first advertisement is selected to be associated with the first category
  • the system uses an affiliate advertising model in which an advertiser can sign up with the system to advertise their products, services, etc. h this embodiment, the advertisements from the advertisers are put into a list.
  • the various category owners in the system can select from the list of available advertisements one or more advertisements that they think are related to their respective categories.
  • the advertisements selected by the category owners will be associated or linked with their respective categories.
  • the first advertiser can select the first category as one of the categories with which to associate his first advertisement and contact the respective category owner in order to place the advertisement request.
  • the first advertisement will be linked to the first category so that it will be presented or displayed to the user when the first category is selected, either by the user or by the system. The process of facilitating the advertisement transaction between the first category owner and the first advertiser is described in more detail below.
  • a first user selects one ofthe available categories to browse through in order to locate information that may be of interest to him.
  • the first user can either choose to browse various categories through a system default category hierarchical structure or define or customize his own category structure using various user interfaces provided by the system.
  • the process for customizing a category hierarchical structure containing various categories selected by the first user is described in more detail below.
  • the method 1200 proceeds to block 1221 if the category selected by the first user for browsing is the first category. Otherwise the method 1200 proceeds to block 1225.
  • the first advertisement is presented or displayed to the first user.
  • keeping track ofthe presentment or displaying ofthe first advertisement includes recording or entering a display entry co ⁇ esponding to the first advertisement in the event database 237.
  • the display entry or display record (also refe ⁇ ed to as an event record or advertisement transaction record herein) for the first advertisement includes an ad identifier co ⁇ esponding to the first advertisement, an activity identifier indicating the type of advertising activity involving the first advertisement for which the respective entry is recorded, the user ID ofthe user to whom the first advertisement is presented, etc.
  • the display entry may also include a date/time stamp co ⁇ esponding to when the first advertisement is presented to the first user, etc.
  • the first CO's credit is increased based upon the display ofthe first ad.
  • the user's context is also modified accordingly and displayed on the browser.
  • the method 1200 proceeds from either block 1217 or block 1221 to block 1225.
  • the first user submits a search request which may contain multiple search terms and multiple search categories at multiple hierarchical levels in which to search for information.
  • the search function is performed to locate the data links within the specified search categories that match the search terms specified by the first user. The process of searching including the user interface that allows the first user to specify multiple search categories at multiple levels is described in more detail below.
  • the method 1200 proceeds to block 1237 if the first category plays a part or contributes, directly or indirectly, in the search to locate the data links that match the search terms specified by the first user. Otherwise the method 1200 proceeds to end at block 1291.
  • the first category is given a score proportionate to the amount of contributions made by the first category in the search process for locating the data links that match the search specification.
  • the first category is given a chance or probability of being selected for advertising purposes, the chance or probability given is proportionate to its score determined at block 1237.
  • one ofthe categories that contribute, directly or indirectly, in the search is randomly selected by the system for advertising purposes.
  • the method 1200 proceeds to block 1253 if the category selected by the system is the first category, otherwise the method 1200 proceeds to end at block 1291.
  • the first advertisement associated with the first category is presented or displayed to the first user. A co ⁇ esponding display entry for the first advertisement, as described above, is recorded or entered in the event database 237 in response to the display ofthe first advertisement. The method 1200 then proceeds to end at block 1291.
  • Figure 13 shows a system flow diagram of one embodiment ofthe system 201 shown in Figure 2.
  • the method 1300 starts at block 1301 and proceeds to block 1305.
  • a user logs into the system.
  • the user can establish a connection with the system 201 via the Internet.
  • the teachings ofthe present invention are equally applicable when the user connects to the system via a Local Area Network (LAN), a Wide Area Network (WAN), or other types of network connections.
  • the user can use a client browser software such as the Netscape® Communicator software or the Microsoft® Internet Explorer software to communicate with the system (i.e., transmitting requests/data to and receiving responses/data from the system, etc.).
  • the Internet browser software or any other software program used by the user to communicate with the system is also refe ⁇ ed to as the client program.
  • a main user interface is displayed to the user that allows the user to invoke one ofthe functions that are described in more detail below.
  • the method 1300 proceeds from block 1309 to block 1313 where the user initiates an activity or invokes a function.
  • the method 1300 either proceeds to block 1321, block 1323, block 1325, block 1327, or block 1329, depending upon the function selected or activity initiated by the user.
  • a user registration function is performed to allow the user to register with the system or update existing registration information.
  • a category processing function is performed. The category processing function is described in more detail below.
  • the method 1300 performs a search function in response to a search request submitted by the user.
  • the search function or process is described in greater detail below.
  • an advertising function is performed which is described in detail below.
  • other functions are performed including user supporting functions, etc.
  • the method 1300 then proceeds from block 1321, block 1323, block 1325, block 1327 or block 1329 to decision block 1341.
  • the method 1300 loops back to block 1317 if there are more activities or functions to be performed. Otherwise the method 1300 proceeds to block 1361.
  • the method 1300 loops back to block 1309 if the user wants to continue using the system, otherwise the method 1300 proceeds to end at block 1391.
  • Figure 14 illustrates a flow diagram of one embodiment of a method 1400 for allowing a user to view and select multiple search levels and multiple search categories on one display panel.
  • the method 1400 starts at block 1401 and proceeds to decision block 1405.
  • the method 1400 proceeds to block 1409 to select a system default root category if the user does not have a user-defined root category. Otherwise the method 1400 proceeds to block 1413 to select the user's defined root category.
  • the system default root category is created and maintained by the system 201 in order to allow new users or those users who have not customized their search environment to be able to locate or search for infonnation using the system's category structure.
  • the user is allowed to customize their search environment based on his personal preferences and his own classification system.
  • the method 1400 then proceeds from either block 1409 or 1413 to block 1417.
  • the data links that are associated with the selected root category i.e., either the system default root category or the user's defined root category
  • the selected root category i.e., either the system default root category or the user's defined root category
  • Figure 14A An example of a user interface displaying the data links associated with the selected root category (in this case the system default root category) is shown in Figure 14A.
  • the various subcategories of the system default root category are displayed in the first grouping area on the display panel.
  • the user selects one ofthe links (subcategories) displayed in the first grouping area on the display panel.
  • the method 1400 then proceeds to decision block 1425.
  • the method 1400 proceeds to block 1429 if the selected link points to another category (next level category), otherwise the method 1400 proceeds to block 1445.
  • the data links associated with the next level category are displayed in a next level grouping area on the display panel.
  • An example of the system's response to the user's selection of a specific link (subcategory) in the top level category is shown in Figure 14B. i this example, the user selects the "Computers" link which points to the "Computers" subcategory. As shown in Figure 14B, the "Computers" subcategory in this example has various subcategories that are displayed in a next level grouping area on the display panel.
  • the method 1400 then proceeds from block 1429 to block 1433.
  • the user selects one ofthe links associated with any level category.
  • the method 1400 loops back to block 1429 to display links associated with the next level category if the selected link points to another category. Otherwise the method 1400 proceeds to block 1445.
  • the URL or hyperlink associated with the selected link is displayed in a body area on the display panel.
  • Figure 14C illustrates an example ofthe system's response to the user's selection ofthe "Companies" link associated with the "Computers" category. As shown in Figure 14C, the subcategories associated with the "Companies" category are displayed in a new level grouping area on the display panel.
  • Figure 14C Also shown in Figure 14C are the URLs or hyperlinks associated with the selected link ("Companies” subcategory). These URLs or hyperlinks are displayed in the body area on the display panel.
  • the different grouping areas co ⁇ esponding to the different category levels are displayed in an overlapping manner as illustrated in Figures 14B and 14C.
  • the system allows the user to switch back and forth between different levels of category groupings that are displayed on the same display panel.
  • the user can select a different category level by placing the cursor on the co ⁇ esponding category level.
  • Figures 14 D and 14E show examples ofthe system's response to the user's selection ofthe "Computers" category level and the "Top” category level, respectively. As shown in Figures 14D and 14E, the category level selected by the user is brought forward and overlaid the other category levels.
  • the user is allowed to individually select multiple categories at multiple levels in which to search for information.
  • the user is provided with a selectable indicator (also called a search light) 1451 for each category to select or click on if he wants the respective category to be included in the search.
  • the user can select multiple categories at multiple levels in which to search for information by selecting or clicking on the selectable indicators (search lights) 1451 co ⁇ esponding to the categories that he wants to select, hi one embodiment, in response to the user's selections, the co ⁇ esponding search lights 1451 will change their color or intensity level to indicate to the user that the co ⁇ esponding categories have been selected.
  • Figures 14F, 14G, and 14H show examples ofthe various categories at various levels that are selected by the user for searching.
  • the selectable indicators (search lights) co ⁇ esponding to the selected categories change their color when they are clicked on or selected by the user.
  • the present invention thus allows for the specification of multiple categories at multiple levels in a single search that will return a single set of search results.
  • the user interface illustrated in Figures 14A - 14H allows the user to specify or select multiple search categories at multiple levels in one single search request. This feature ofthe present invention is designed to solve one ofthe problems mentioned above, i.e., that cu ⁇ ent search engines only allows for the specification of a search of one single category at a time.
  • Figure 141 illustrates an example of a single set of search results returned by the system in response to a search request submitted by the user that includes multiple search terms and multiple categories at various levels in which to search, hi this example, the user entered the search terms "compaq pc" to search in various categories selected by the user as shown in Figures 14F-H.
  • Figure 15 shows a flow diagram of one embodiment of a method 1500 for performing the various category processing functions according to a request from a user.
  • the method 1500 starts at block 1501 and proceeds to decision block 1505.
  • decision block 1505 the method 1500 proceeds to block 1509 to perform a registration function if the user is not a registered user. Otherwise the method 1500 proceeds to block 1513 to display a category processing user interface to allow the user to perform various category processing functions described herein.
  • specification information regarding the respective category is supplied by the user using the user interface provided by the system.
  • the method 1500 proceeds to block 1525 to perfonn a category create function if the information entered by the user is for a new category, otherwise the method 1500 proceeds to block 1529 to perform a category modify function.
  • the method 1500 proceeds to block 1537 to perform a public upgrade function if the user has indicated that he wants to convert his private category to a public category.
  • the method 1500 proceeds to block 1545 to perform a catshare function in response to a request from the user.
  • the method 1500 proceeds to block 1553 to perform other category- processing functions in response to a request from the user. The method 1500 then proceeds to end at block 1591.
  • Figure 16 is a flow diagram of one embodiment of a method 1600 for creating a new category in response to a request from a user.
  • category specification is obtained from the user.
  • a category entry is created based upon the category specification provided by the user.
  • the method 1600 proceeds to block 1613 if the user wants to add links to the new category. Otherwise the method 1600 proceeds to block 1631.
  • a link user interface is displayed to allow the user to specify infonnation for the links that he wants to add.
  • link specification is obtained from the user.
  • one or more links are created based upon the link specification provided by the user.
  • the category structure (category entry and associated link entries) are stored in the category database 233.
  • Various data structures co ⁇ esponding to the newly created category and links are also stored in the extrapolated hierarchy database 239.
  • the method 1600 then proceeds to end at block 1691.
  • Figures 16A-B show an example of one embodiment of a user interface provided by the system to allow the user to create a new category, hi this example, the user is allowed to enter the name and keywords for the co ⁇ esponding category that he wants to create in the appropriate boxes provided by the user interface ( Figure 16A). After the user enters the name and keywords for the category, another user interface as shown in Figure 16B is displayed to allow the user to specify link information for the category.
  • the user can specify one or more links associated with the category.
  • the user is allowed to specify the co ⁇ esponding link info ⁇ nation including the URL for the link, the name for the link, the description for the link, and one or more keywords for the link, h one embodiment, after the user has created the category and its associated link(s), another user interface is displayed as shown in Figure 16C to allow the user to select one or more advertisements to be displayed in connection with his category's usage.
  • the user can select one or more advertisements from a list of available advertisements placed into the system by various advertisers, hi one embodiment, the category owner can go through the list to select one or more advertisements that he thinks are related to his category.
  • the advertising rate associated with various actions regarding the co ⁇ esponding advertisement is also displayed in this advertisement selection user interface including the click rate (the rate for click through), the sale rate (the rate for buy through), and the lead rate (the rate for lead through). This rate information is provided to inform the category owner ofthe compensation rate and structure that he will receive from the various activities involving the particular advertisement that he selects for his category.
  • Figure 17 shows a flow diagram of one embodiment of a method 1700 for modifying an existing category.
  • the method 1700 starts at block 1701 and proceeds to block 1705 to retrieve category and link information for the selected category from the category database.
  • category and link information for the category are displayed to the user.
  • the method 1700 proceeds to block 1725 to delete the links selected by the user to be deleted.
  • the method 1700 proceeds to block 1733 to display the link user interface if the user wants to add new links to the category.
  • link specification for the new links are provided by the user.
  • new link entries are created based upon the link specification provided by the user.
  • the method 1700 proceeds to block 1743 to display the link user interface in response to the user's request to edit existing links for the respective category.
  • existing links are modified based upon the user's specification.
  • the method 1700 then proceeds to block 1751 to update the category database 233 and the extrapolated hierarchy database 239 to reflect the changes made by the user to the respective category and/or its associated links.
  • the method 1700 ends at block 1791.
  • Figure 18 shows a flow diagram of one embodiment of a process 1800 for converting a private category to a public category.
  • the process 1800 starts at block 1801 and proceeds to block 1805.
  • the process 1800 proceeds to block 1809 to perform a category owner registration function if the user has not registered as a category owner.
  • the process 1800 proceeds to block 1817 to perform a category create function if the category does not exist.
  • the process 1800 then proceeds to block 1821 to display a public category creation user interface.
  • public category information for the respective category is obtained from the user.
  • an ad placement function is performed to associate or link one or more advertisements to the respective category.
  • the system allows advertisers to place their advertisements in the system.
  • the various category owners are allowed to choose from the list of available advertisements one or more advertisements that they think are related to their categories.
  • the process 1800 proceeds to block 1849 to perform an alternate registration function if the user indicates that he wants to apply for alternate category status.
  • the category database is updated accordingly based upon the information provided by the user. The process 1800 proceeds to end at block 1891.
  • Figure 19 illustrates a flow diagram of one embodiment of a method 1900 for allowing a user to customize a category structure.
  • the method 1900 starts at block 1901 and proceeds to block 1905.
  • a list of system default categories are displayed to the user.
  • the method 1900 proceeds to block 1913 if the user wants to customize the displayed category. Otherwise the method 1900 proceeds to end at block 1991.
  • the method 1900 proceeds to block 1917 to perform a user registration function if the user has not registered. Otherwise the method 1900 proceeds to block 1921 to display the category customization user interface.
  • the user uses the category customization user interface to add or remove items from the designated category and specify a new name for the new category.
  • the user selects a place within his category hierarchy to store the new category.
  • the category database 233 and the extrapolated hierarchy database 239 are updated accordingly to reflect the changes made by the user. After the changes have been made, the categories displayed to the user will be changed accordingly.
  • Figure 20 is a flow diagram of one embodiment of a method 2000 for updating the data links of a given category.
  • the method 2000 starts at block 2001 and proceeds to block 2005.
  • decision block 2005 the method 2000 proceeds to block 2009 to obtain link information from the user if the link is a new link to be added to the category. Otherwise the method 2000 proceeds to block 2013 to retrieve link information from the databases and display the link information to the user if the link is an existing link.
  • the method 2000 proceeds to block 2019 to perform an add keyword function if the user indicates that he wants to add a new keyword to the link.
  • the method 2000 proceeds to block 2029 to allow the user to modify an existing keyword selected by the user.
  • block 2039 the method 2000 proceeds to block 2039 to delete an existing keyword selected by the user to be removed from the link.
  • Figure 21 shows a flow diagram of one embodiment of a method 2100 for processing a search request submitted by a user.
  • the method 2100 begins at block 2101 and proceeds to block 2105.
  • a search request is received from the user.
  • the search request in this example is assumed to include two search terms (e.g., first and second search terms) and two categories in which to search (first and second search categories). It should be understood and appreciated by one skilled in the art that the teachings ofthe present invention are not limited to this specific example and should be applicable to any search request with any number of search terms and any number of categories in which to search.
  • the method 2100 proceeds from block 2105 to block 2109.
  • a search function is performed to identify those nodes (data links) in the first and second search categories whose associated key words match the first and second search terms specified in the search request.
  • the search function or search process performed at block 2109 is described in detail below.
  • the score for each category which contributes to obtaining the matches is determined.
  • one ofthe contributing categories is selected as the winner for advertising purposes, i one embodiment, the selection of the winner for advertising purposes is performed randomly.
  • each contributing category is given a selection chance (probability) that is proportionate to its contributing score.
  • the selection may be done based upon a set of criteria including, but not limited to, the contributing score of each category, the number of contributing categories, the number of advertisements associated with each contributing category, the advertising rate for the associated advertisements, etc.
  • the method 2100 proceeds from block 2117 to block 2121.
  • the list of matches is presented to the user along with one or more advertisements associated with the winning category.
  • the method 2100 proceeds to end at block 2191.
  • Figure 22 shows a flow diagram of one embodiment ofthe overall search process 2200 using the system 201 described above.
  • the process 2200 starts at block 2201 and proceeds to block 2205.
  • a user enters a search request via a web browser.
  • users ofthe system 201 are connected to the system via the Internet and can use a standard web browser to communicate (e.g., send data to and receive data from) with the system 201.
  • the search request is submitted to a web server (e.g., the web server 215) within the system 201.
  • the web server 215 is omitted and the search request can be submitted directly to a server application (e.g., the server application 217).
  • the search request is sent by the web server 215 to a search program in the server application 217.
  • the search program is a program that is responsible for processing the search request.
  • the search program performs a search function to search the extrapolated hierarchy database 239 (also refe ⁇ ed to as the in-memory data structure herein) for matches based upon the search terms and search categories specified by the user in the search request.
  • a set of node identifiers whose associated keywords match the specified search terms is produced.
  • the node ID results are looked up in the category database 233 for text data (e.g., category and link information) co ⁇ esponding to the node ID results.
  • the combined data (node ID results and the co ⁇ esponding text data retrieved from the category database 233) are sent back to the web server 213 by the search program.
  • the data returned from the search program is combined with info ⁇ nation retrieved from an ad database and one or more ad images (if extant) from a local file system.
  • the web server is responsible for retrieving the advertising information from the ad database and the co ⁇ esponding advertising images (if extant) from the local file system.
  • the advertising information and the co ⁇ esponding advertising images can be logically and/or physically configured as one or more subsets ofthe category database 233.
  • the combined data (including category information, link information, advertising information, advertising images, etc.) are formatted into a web page and returned to the user by the web server 215.
  • the web page is formatted according to HTML specifications. It should be understood and appreciated by one skilled in the art that the web page or web document containing matching links, advertising information, etc. can be formatted in other formats as well including XSL and XML formats, etc.
  • Figures 22A - 221 illustrate the process 2200 described above showing the interactions between the various system components in processing a search request submitted by a user.
  • Figure 23 shows a detailed flow diagram of one embodiment ofthe search function or process 2300 perfonned at blocks 2217 and 2221 in Figure 22.
  • the search function 2300 is described using a sample search request submitted by a user that specifies two search terms (e.g., first and second search terms) and two search categories in which to search (e.g., first and second search categories).
  • two search terms e.g., first and second search terms
  • search categories in which to search e.g., first and second search categories
  • the search categories specified by the user in the search request are also refe ⁇ ed to as herein as context nodes (i.e., nodes that are used to specify scope of search).
  • the search request is received.
  • the keyword dictionary a ⁇ ay 810 is searched for a semantic match on the second search term.
  • the process 2300 proceeds to end at block 2391. If there is a match (i.e., there is an entry in the keyword dictionary a ⁇ ay 810 that contains a keyword matching the second search term), the process 2300 proceeds to block 2309.
  • a co ⁇ esponding pointer in the matching entry is used to reference the keyword data structure to identify a list of nodes that contain the specified keyword (i.e., the second search term).
  • each entry in the keyword dictionary a ⁇ ay contains a pointer to a co ⁇ esponding keyword structure and that each keyword structure points to one or more nodes that contain the co ⁇ esponding keyword.
  • a node from the list of nodes containing the second search term is selected for further processing.
  • the parent's hierarchy ofthe selected node is checked to determine whether the selected node is contained within the first or second search categories specified by the user, hi one embodiment, as described above, each node contains a pointer to its parent node(s). This pointer is used to trace back to the ancestors ofthe respective node to determine whether the respective node is within the specified search categories.
  • the process 2300 proceeds to block 2323 if the respective node is within the specified search categories. Otherwise the process 2300 proceeds to block 2361.
  • the selected node is checked to see if it contains a keyword matching the first search term. If the selected node contains a keyword matching the first search term, the process 2300 proceeds to block 2327A to add the selected node to the result set. Otherwise the process 2300 proceeds to block 2331.
  • the process 2300 also proceeds from block 2327A to block 2331.
  • the ancestor nodes ofthe selected node are checked to see if they contain a keyword matching the first search term.
  • process 2300 if an ancestor node ofthe selected node contains a keyword matching the first search term, the selected node is added to the result set at block 2327B. Otherwise to process 2300 proceeds from block 2335 to block 2361. At decision block 2361, the process 2300 goes back to block 2311 to select another node from the list of nodes if there are more nodes to be processed. The processing continues until all nodes in the list of nodes have been processed as described above. If there is no more nodes in the list to be processed, the process 2300 proceeds to end and return the result set at block 2391. hi one embodiment, the search process 2300 as described above also performs other functions including scoring, user checking, handling user-edited categories, handling default/alternate CO selection, and handling catshares.
  • the following items or criteria are used to determine the score of each item returned in the search, and also determine the "winning" category that will be allowed to choose the advertisement to be presented to the user along with the search results.
  • the score values below are meant to be relative, and the system allows the values to be changed ("tuned") on the fly.
  • a table containing all ofthe included categories is created and running a total is kept for its particular score (or "lottery tickets").
  • the search process adds up the total score from all categories in the table, and randomly chooses a number between one and that number. That number is used to select one ofthe contributing categories as the "winner” in the ad lottery for advertising purposes.
  • the "winning category” will then be used to select one or more co ⁇ esponding advertisements for presentment (e.g., display) to the user.
  • the table below illustrates various types of scores (scoring criteria or scoring rules) that are used to determine the total matching score for each match (search result). These various scoring criteria and their co ⁇ esponding weights are shown for explanation and illustration purposes. The teachings ofthe present invention are equally applicable to other scoring methods or systems, other scoring criteria and their co ⁇ esponding weights, etc. For example, depending on the applications and/or implementations ofthe present invention, different scoring criteria and their co ⁇ esponding weights may be used to determine the respective score for each search result (e.g., match).
  • FIGs 24A-C illustrate an example of one embodiment of an application ofthe various scoring criteria (also refe ⁇ ed to as scoring types, scoring factors or scoring rules) described above with respect to a search request submitted by a user that contains three search terms in a specific order. As shown in Figure 24A, the user enters "mac monitor sony" as the search tenns.
  • Figure 24B illustrates and example of how the origin distance score criterion is used in determining the total score for each matching link, hi this example, it can be seen that the match identified on the left side of Figure 24B is considered a good or perfect match with respect to the origin distance criterion (i.e., to be given a higher origin distance score) because the matching link is close to the origin category, hi contrast, the match identified on the right side of Figure 24B, while considered a match, is not as good because the matching link is farther away from the origin category. Accordingly, the match identified on the right side of Figure 24B will be given a lower score with respect to the origin distance criterion, compared to that ofthe match shown on the left side of Figure 24B.
  • Figure 24C illustrates an example of an application ofthe term spread score criterion.
  • the match shown on the left side of Figure 24C is considered a good or perfect match with respect to the term spread score criterion (i.e., to be given a higher tenn spread score) because the matching keywords are located closely together with respect to the tree structure in winch the matching keywords are found, hi contrast, the match shown on the right side of Figure 24C is not as good because the matching keywords are spread out with respect to the tree structure in which these keywords are found. Accordingly, the match shown on the right side of Figure 24C will be given a lower term spread score compared to the match shown on the left side of Figure 24C.
  • FIG. 25 shows a flow diagram of one embodiment of a scoring process 2500 for determining the total matching score for a given match.
  • the process 2500 starts at block 2501 and proceeds to block 2505.
  • the sequence score for the given match is determined.
  • the origin distance score for the given match is determined.
  • the tenn spread score for the given match is determined.
  • the semantic score for the given match is determined.
  • the total score for the given match is adjusted based upon the number of keywords in the nodes that are used to identify the given match.
  • Figure 26 shows a flow diagram of one embodiment of a method 2600 for selecting, from among the categories that contribute to obtaining search results, one category for advertising purposes (i.e., one or more advertisements associated with the selected category will be presented to the user along with the search results).
  • the method 2600 starts at block 2601 and proceeds to block 2605.
  • the total score for each contributing category is determined or calculated as described above with respect to Figure 25.
  • each contributing category is assigned a selection probability that co ⁇ esponds to its total score as determined at block 2605.
  • a number of selection tickets co ⁇ esponding to the selection probability of each contributing category is generated.
  • a category "A" has a total score of 100 points, then it may be given 100 selection tickets to be put into a pool of selection tickets from other contributing categories.
  • a ticket is selected from the pool ofthe selection tickets.
  • the category that has the selected ticket is chosen as the winning category for advertising purposes, hi one embodiment, the advertisement(s) associated with the winning category will be presented to the user along with the search results. It can be appreciated that by using the method 2600 as described above, any category that contributes, either directly or indirectly, to obtaining the search results for the user, is given a chance to be selected for advertising purposes (which would generate co ⁇ esponding compensation for the respective category owner), regardless of how much the respective category contributes.
  • a contributing category that contributes more to obtaining the search results i.e., has a higher score
  • a category that contributes less i.e., having a lower score
  • the method 2600 as described can be used to fairly and equitably compensate category owners based upon the amount of contributions their respective categories make in helping the user to obtain the infonnation that he wants.
  • Figure 27 illustrates a flow diagram of another embodiment of a method 2700 for selecting a contributing category as the winning category for advertising purposes.
  • the method 2700 starts at block 2701 and proceeds to block 2705.
  • the scores for the contributing categories are kept track of in a scoring table (also refe ⁇ ed to as the master scoring table herein).
  • the master scoring table represents a list of categories and their co ⁇ esponding scores and is updated throughout the search.
  • a mini scoring table is created for each iteration. This table is used to keep track ofthe categories that take part in the suspected result. Each node that is "touched" is given some points, based on the scoring rules and criteria described and explained above.
  • the mini scoring table is merged with the master scoring table. Otherwise it is discarded or ignored.
  • all the scores are added to generate a total number at block 2709.
  • a number between zero and the total number is randomly selected.
  • a random number generator is used to randomly select a number between zero and the total number.
  • the master scoring table is traversed to select one ofthe contributing categories as the winning category for advertising purposes. In one embodiment, using the score of each category entry, a running total is kept as the master scoring table is traversed. The category which contains the generated number is selected as the winning category.
  • the category identified at block 2717 is chosen as the winning category for advertising purposes (i.e., its associated advertisen ⁇ ent(s) will be presented to the user along with the search results).
  • the random number is 763

Abstract

According to one aspect of the present invention, a method is provided in which a user is allowed to specify, in a single search request (331), one or more search terms and one or more categories (321) in which to search for information (fig. 3). In one embodiment, the one or more lists of categories (321) are presented to the user. For each category (601) in the one or more lists, the user is provided with a mechanism to individually select the respective category to be included in the search request.

Description

METHOD, APPARATUS, AND SYSTEM FOR CREATING AND MAINTAINING A SHARED HIERARCHICAL DIRECTORY SYSTEM
FIELD OF THE INVENTION
The present invention relates to the processing of information. More specifically, the present invention relates to a method, apparatus, system, and machine-readable medium for creating and maintaining a shared hierarchical directory system containing various categories of information.
BACKGROUND OF THE INVENTION
As technology continues to advance and the information age continues to march forward, it has become more and more critical for people to be able to effectively and efficiently locate and obtain information that is of interest to them, hi particular, more and more people have been using the Internet and the World Wide Web ("the Web") which contains a vast amount of diverse information to locate and obtain information. The Web is a global network of millions of pages of diverse information (e.g., the web pages or web documents) created by millions of users of the Internet. i order to make the Internet more useful as a means of information processing and commerce transacting, various technologies have been developed and implemented that allow for the searching of information on the Web. These technologies — typically embodied within a public web site, and often referred to as a "search engine" — allow a user to enter one or more search terms to initiate a search for certain information that may be of interest to the user. Upon the user's initiation ofthe search, these systems will perform a search of their databases and display links to web sites that the systems deem relevant to the terms entered by the end-user.
One ofthe search mechanisms used is referred to as a "web crawler", which is combined with a free text searching mechanism, hi general, the "web crawler" continually scans the Web and builds an indexed database of every page it finds. When the user enters his search terms, this kind of search engine will perform a scan of its database and display links to the web documents that it deems relevant. The relevance is determined by scanning the text contained within each web document, and finding words that are alike or nearly alike the words the user entered as search terms. The problem with this approach is that it does not adequately determine the relevance to an end-user based on search terms, hi addition, this approach typically returns far too many results that are difficult for the end users to thoroughly review. This approach to searching for relevant information is ineffective and inefficient. One ofthe reasons is because words and phrases in a particular language (e.g., English) can be used in several different ways, in several different contexts. The phrase "oak tree", for instance, might be used in a document concerning gardening, the lumber industry, song lyrics, and so on. An end-user typically enters his search with a particular context in mind, but there is no way for a simple scan of text to accurately determine the context, and there is no way for the user to specify an accurate context using this search approach.
Another approach to assist the end users in locating the desired information on the Internet is to create a "directory", or categories of web sites organized in a hierarchical fashion. Many search and/or directory service providers on the Internet utilize this approach in helping the end users to locate the information that is potentially of interest to them. Some of these providers also combine the Directory approach with the Web Crawling approach. The basic problem with this approach is that there is no possible way for any of these companies to accurately and adequately index and categorize the entire Web. There are currently millions of documents on the Web, and this number continues to grow at a very rapid rate. Even if these companies could hire a staff large enough to index and categorize the documents available on the Web, there is still another problem with this approach. Because they create a single hierarchy, these search engines are tasked with classifying every document on the Web. As such, they must choose one (or a very small number of) classification hierarchies for all Web documents. Unfortunately not all human beings classify things in the same way and the problem is greatly compounded when a vast amount of diverse information in so many different categories in so many different contexts need to be classified and reduced to some numbers of categories that are practically manageable. Consequently, the Web Directory approach alone or in combination with the Web Crawler approach does not scale to the size ofthe Web, and it does not take into account the diverse nature of individual human thought (e.g., people classify things differently based upon their interests, background, educational levels, contexts, etc.).
Another approach to a web search engine is a variant ofthe second approach — the Web Directory — but one in which the classification of web documents is done by volunteers from across the Internet. This approach also has many problems. The first problem is that, although the contents of a given category are, under this approach, maintained by a volunteer, the central authority must still be a "middle man" in determining what categories are valid, which category maintainers are the best for a given category, and to some extent, how the categories are arranged hierarchically. In this approach, the central authority can be one or more entities that are designated to orgaiuze and coordinate the various categories maintained in the system. Since there are potentially millions of categories, and they might change every day, this approach continues to be limited by the central authority, in the same way the Web Directory approach is limited. The second problem with this approach is that the structure ofthe site is still determined by the central system authority, h other words, although there might be a volunteer to maintain a specific category such as the "motorcycles" category, the central system authority determines that this should be classified under another specific category , for example the "automotive" category, and so on. As explained above, this kind of predetermined and inflexible structure of categories may not work for many users who classify or categorize things differently based upon various factors. For example, some users might find that classifying "motorcycles" under the category "hobbies" might make more sense. The third problem with the current implementations of this approach is that they do not adequately allow for the specification of keywords and other information about the contents of a given category, and they do not have any mechanism for diverse sharing of those keywords. The lack of an adequate mechanism makes the sharing of categories much more difficult, and precludes the use of a more intelligent search based on the way an end-user might structure his own information. The fourth and most practical problem with this approach is that volunteers run the core of the system. Because they have no economic incentive to do a better or worse job, there is no guarantee that each category maintainer will do a good job of maintaining his category, hi addition, this approach precludes the existence of professional category maintainers, as well as maintainers that are part of well-known commercial enterprises and editorial entities.
In addition to the problems mentioned above, the current search mechanisms and approaches also suffer from other shortcomings with respect to their user interfaces. For example, current Web search engines offer a user interface that allows for the specification of a search of a single category at a time. No search engine user interface allows the simultaneous specification of multiple categories of information in a single search that will return a single set of results. The problem with this limitation is that a user may not be certain under which category the desired Web documents might be found. As such, it is necessary to either broaden his search to a super-category (and thereby increase the likelihood of many irrelevant results), or perform multiple searches on individual categories (which is both inconvenient, and does not allow the user to automatically rank results from different categories).
Currently advertising on Web search engines are done in three ways. The first is simple "untargeted" advertising, in which a buyer of advertising placements purchases the right to display his advertisement to an unspecified audience. The problem with this method of advertising is that the advertising buyer has no way to "target" his audience. He has now way of knowing whether the viewers of his advertisement placement will be relevant to what he is selling. For instance, an end-user that enters the search phrase, "winter coats" might be presented with an advertisement for T-shirts, etc. The second approach is "keyword buying" advertising. In this approach, an advertisement buyer selects a keyword — a single word or a phrase — and buys the right to display his advertisement any time that an end-user enters the given keyword or phrase. The problem with this approach is similar to the problem of Web Crawler search engines in general: that a word or phrase can mean different things in different contexts. For instance, an end-user might enter the phrase, "winter coats of paint for my house" and be presented an advertisement for a down parka. The third approach to advertising on search engines is limited to Web Directories, hi this approach, an advertisement buyer specifies the category under which he wants his ad displayed. For example, a company that wants to create awareness for its new down parka might purchase an advertisement placement on the "Winter Apparel" category. This approach also shares the problems ofthe Directory approach to search engines in general. Because the search engine cannot adequately categorize information, and is therefore inaccurate for a large portion of its users, the advertisement displayed on the given category may be inaccurate in the same fashion. For instance, the category "Winter Apparel" needs to be different for people living in Alaska versus those living in Florida, and the associated advertisement needs to be different as well.
SUMMARY OF THE INVENTION
According to one aspect ofthe present invention, a method is provided in which a user is allowed to specify, in a single search request, one or more search terms and one or more categories in which to search for information, h one embodiment, the one or more lists of categories are presented to the user. For each category in the one or more lists, the user is provided with a mechanism to individually select the respective category to be included in the search request. BRIEF DESCRIPTION OF THE DRAWINGS
The features and advantages ofthe present invention will be more fully understood by reference to the accompanying drawings, in which:
Figure 1 is a block diagram of one embodiment of a system for maintaining a directory of information accessible by users via a computer network;
Figure 2 shows a detailed block diagram of one embodiment ofthe system in Figure 1;
Figure 3 illustrates a functional block diagram of one embodiment ofthe system described in Figure 2;
Figure 4 shows a structure diagram of one embodiment of a category database according to the teachings ofthe present invention;
Figure 5 shows a tree- view diagram of one embodiment ofthe category database described in Figure 4;
Figure 6 shows a table-view representation ofthe category database described in Figure 4;
Figure 7 shows an example of a functional anatomy of a category;
Figure 8 shows a diagram of one embodiment of an extrapolated database shown in Figure 2;
Figure 9 illustrates external and internal views of an example of a category structure according to teachings ofthe present invention;
Figure 10 shows the relationship between the various data structures in the extrapolated database according to the teachings ofthe present invention;
Figure 11 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention;
Figure 12 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention;
Figure 13 shows a flow diagram of one embodiment of a method according to the teachings ofthe present invention;
Figure 14 illustrates a flow diagram of one embodiment of a method for allowing a user to view and select multiple search levels and multiple search categories on one display panel;
Figure 15 shows a flow diagram of one embodiment of a method for performing various category processing functions; Figure 16 shows a flow diagram of one embodiment of a method for creating a new category;
Figure 17 shows a flow diagram of one embodiment of a method for modifying an existing category;
Figure 18 shows a flow diagram of one embodiment of a method for converting a private category to a public category;
Figure 19 illustrates a flow diagram of one embodiment of a method for allowing a user to customize a category;
Figure 20 is flow diagram of one embodiment of a method for updating the data links of a given category;
Figure 21 shows a flow diagram of one embodiment of a method for processing a search request;
Figure 22 is a flow diagram of one embodiment of a search process in accordance with the teachings ofthe present invention;
Figures 22A-I show the various interactions between the various components of the system in processing a search request;
Figure 23 shows a detailed flow diagram of one embodiment of a search process according to the teachings ofthe present invention;
Figures 24A-C illustrate an example of an application of various scoring criteria according to the teachings ofthe present invention;
Figure 25 shows a flow diagram of one embodiment of a scoring process for determining the score of a given match;
Figure 26 shows a flow diagram of one embodiment of a method for selecting one contributing category for advertising purposes; and
Figure 27 is a flow diagram of another embodiment ofthe method for selecting one contributing category for advertising purposes.
DETAILED DESCRIPTION
In the following detailed description numerous specific details are set forth in order to provide a thorough understanding ofthe present invention. However, it will be appreciated by one skilled in the art that the present invention may be understood and practiced without these specific details. hi the discussion below, the teachings ofthe present invention are utilized to implement a method, apparatus, and system to create and maintain a dynamic directory of information in which information providers and organizers (also referred herein as category owners) are equitably compensated based upon the usage of their work by the users. The system is designed to allow any user to create and maintain one or more list of informational items, also referred to as categories of information. A category owner is allowed to include all or part of another category in his category. All or part of his category is also allowed to be included in another category. A category owner is provided with an opportunity to be compensated for his work through advertising activities in connection with the usage of his category in locating information for the users. The teachings ofthe present invention are applicable to any search engines and directory systems. In addition, the teachings ofthe present invention are also applicable to any environment in which there is a need to organize or classify information for various purposes, including but are not limited to, targeted advertising on the Internet, personal and company information and knowledge management, genealogy databases, etc. The present invention is not limited to the building and maintaining of information databases and/or directories on the Internet and can be applied to other types of information processing in other business areas or disciplines.
Since this system allows a multitude — potentially millions — of category owners to solicit and sell advertisement placements for their categories, the present invention provides an effective solution to the problems of targeted advertising on the Internet. In this system, the individual category owner selects which advertisement will be displayed when his category is selected, or when all or part of his category is used. For instance, the two different owners, of "Winter Apparel" categories mentioned above might solicit very different advertisers for their respective categories. Since end-users of the system will naturally gravitate towards categories that are more relevant to their context, and a typical category owner will tend to "know his audience", the advertisement displayed to the end-user according to the teachings ofthe present invention will have a much greater tendency to be relevant to him in his context.
The overall effect ofthe solution provided by the present invention in solving this problem is that advertisements on this system are much more "targeted", which means that end-users of this system will be less apt to ignore advertisements as is often the case with today's technology and current methods of advertising. Advertisers will have more selection as to how to "target" their products and services, and will have a much greater chance of results for a much lower cost.
This system can be applied to both a company's Intranet (internal web sites), and/or the information on a single user's computer. In both cases, information and categorization from the rest ofthe system can be intermixed with non-public information. For instance, a company might have a "computers" category that includes company- specific links to internal web sites, mixed with links from external categories in this system, entire category trees, etc. This system can also be used for collaboration on a certain topic that is specific to a company and one or more of its partners. For instance, a company might create a "sub-contractor's resources" category that is made for subcontractors that work with that company. The system also includes ways to support forms of compensation other than advertising. For example, a company could employ its own method (possibly connected to an internal accounting system) of awarding credit to owners of popular or important categories. The same set of features can also be applied to organizing/classifying personal information on a single computer.
The system described herein is unique in its ability to gather knowledge from a very large base of users. Category owners enter keywords and other information on the items (also referred to as informational items or data items) within their category. Both public category owners and end-users are constantly making decisions about the structure and organization of their particular hierarchies. Because of this, this system effectively creates a knowledge base that can more accurately predict the proper context of a certain piece of information. hi one embodiment, rather than using simple web hyperlinks as items in the category, the system may be configured to specify other kinds of information or data, such as documents, images, CAD drawings, etc. Also, the system can be configured to actively retrieve and search documents that are specified in a category, and use the results of this search to extend the system's hierarchy one or more levels downward into the documents. Examples of this include the use of XML on web sites and other kinds of structured documents, h addition to knowledge management applications, the teachings ofthe present invention can be used to create decision support systems as well, using the system's database of categories and hierarchies. Moreover, the system can be used to create a system for market intelligence (data mining).
The teachings ofthe present invention can be used to create a system of genealogy in which each category can relate to a single individual, and items within that category can relate to the offspring of that individual. This system will be far superior to any system today, because it will create a worldwide community of information gatherers, and the same dynamics driving the primary search engine will drive this community as well. There are some basic theories under which the system described herein operates. First, there is the concept ofthe contextual nature of knowledge. Knowledge is held in concepts, those concepts referring to one or more things. When one thinks of a "door", one thinks of a certain kind of obj ect. He may classify the obj ect by means of the important attributes it possesses. The contextual nature of knowledge means that the important attributes ofthe "door" in this context might be different in a different context, and therefore, the way in which one classifies the object might be different.
For instance, one might classify a certain wooden door in a room in the category, "things that will let me get out of this room". Attributes ofthe door that are important are the doorknob, the lock (if any), whether it opens inward or outward and so on. However, it one takes that same door in another context, the important attributes ofthe door are different, and so is its classification (e.g., the way in which one classifies things is by its important attributes within the context). For instance, if one were building a fire in the wilderness, and came across the very same door lying on the ground, it would have a different classification (e.g., "things that burn") and it would have different important attributes (e.g. its material, size, dryness, etc).
The method and system described herein are based on the idea that things can be classified differently according to different contexts, and that there can be an infinite number of contexts possible in human interaction.
Another theory on which the system is based is the notion that the classification of objects is work. In other words, upon thinking about a classification, al though the physical effort of doing it can be straightforward, classification represents, at the core, the very essence of knowledge work. As such, people should not be required to perform this type of work (e.g., classification of information or objects) for free (although the "reward" might be either tangible or intangible). Moreover, since the classification of information or objects can dictate the outcome of commercial transactions (e.g., a certain make of automobile is classified as a "family car" versus a "sports car"), classification not only is a unit of work, but it can be very valuable (directly or indirectly) in commercial situations.
Another concept that is important is that the way in which people communicate is, speaking broadly, and act of trading contexts. In other words, person A might have a certain goal in mind ("build a fire"), and person B might have a certain object to sell ("a wooden door"). Person A may not be aware that person B's product is important to him because it has not been classified in a way that is relevant to his context. Person B might not know that anybody would want to use his product in the way that person A wants to. In this case, there can be different ways that Person A might find the wooden door: 1) person A will relate his context to person B, relating certain attributes that person B listed to those important to him (he might say, "look for things made out of 'wood'); 2) person B might see that person A and others are using his product in a way that he had not expected, and add a new classification for his product and list important attributes of his product accordingly, thereby allowing person A to find his product when he searches for "things that burn"; 3) another party, person C, might perform the work of linking person A and person B's context seeing person A's need and person B's product. hi one embodiment, there can be different types of users in the system, which represent different ways of using the system and different roles within the system. One type of user is an "unregistered user", which is a person or entity that has not yet identified himself as a unique user ofthe system. This kind of user uses the system primarily to find web sites/documents on the Internet relating to a certain subject in which he is interested.
The unregistered user can use the system to perform searches for information that may be of interest to him, or browse tlirough the default categories displayed. When a category is displayed, the advertisement specified by the given category is also displayed. When an advertisement is displayed, the system records the occurrence of such display in a database or file referred to as the Event Database herein. Whenever an advertisement is selected, etc., these actions are also stored in the Event Database. The Ad, the time, and the user (which is specified as "unregistered" for non-registered users) are also stored in this database.
In one embodiment, an unregistered user can enter a search request including one or more search terms and one or more categories in which to search (also referred to as search categories) using a user interface provided by the system. The unregistered user can view results ofthe search, which may be zero to many matches. The unregistered user can select a match, and the target of that match (e.g., a URL pointing to a web page) will be displayed.
Another type of user is a registered user. When an unregistered user attempts to. use any controls to customize the environment — for instance, to reclassify a certain category or to select a different category owner for a category — then the user is asked to create an identity in the system so that he can be identified by the system. The registered user can create new categories by using one or more user interfaces provided by the system. A register user may also modify an existing category, or essentially "clone" the category by creating a new category of his own, but specifying a CatShare that represents the existing category. A CatShare is an active connection to another category. A CatShare uses a search method described below in conjunction with one or more specific categories and one or more search terms to produce a set of resultant links. When a user specifies a CatShare within his category, the resultant links are automatically inserted within his category, appearing is if they were part of his category. When a registered user wants to create a category, he specifies the name ofthe category, and individual items to be included in the category (also referred to as links). In one embodiment, a link is an item within the category that is either a pointer to another category, or a URL specification representing a web site/document that is classified within his category. For each link in the category, the user may specify one or more keywords for the link. In one embodiment, keywords are used to find the specific links in the system that match the search terms specified by the user. hi one embodiment, a category within the system can be classified as a private category or a public category, hi one embodiment, a private category means that the respective category is not accessible by other users except the category owner, i one embodiment, a public category means that all users ofthe system may view the respective public category, browse the category, search the category, and specify use of the category in a CatShare. h another embodiment, a public category may be viewed and used by one or more subsets ofthe users ofthe system. hi one embodiment, a category owner can do a number of things to make his category more popular, thus increasing his chances for greater rewards (tangible and/or intangible) from advertising payments associated with his category. One ofthe things a category owner can do to make his category more popular is to include other categories created and maintained by other category owners as subcategories within his own category. When a category owner chooses to include a subcategory in his category, he may optionally choose to make that subcategory an "alternate" of an existing subcategory within his category. For example, assuming that Joe owns a category called "Motorcycles" and that he already has Jane's "Helmets" category as a subcategory within his "Motorcycles" category. Joe knows that Jane does a good job of maintaining her category and he gains a certain amount of credit from Jane's subcategory search hits (to be described in detail below). Assuming also that another category owner, Fred, has a different take on how a "Helmets" category should be done. Joe thinks that some users might like Fred's category more than Jane's but it may not make sense for him to include both "Helmets" categories within his since they are overlapping in concept. The present invention allows Joe to make Fred's "Helmets" category an alternate category of Jane's. As a result, users that view the subcategory "Helmets" within Joe's "Motorcycles" category may choose to change from the primary subcategory (i.e., Jane's "Helmets" category) to the alternate subcategory (i.e., Fred's "Helmets" category). When a user does this, the category is subsequently displayed with Fred's Helmets category as the primary subcategory (and the user could switch it back, or choose yet another alternate, and so on).
Category owners are motivated by the system to enter more alternates for various reasons. First, having more alternates for subcategories means that users have more choices and therefore will be more apt to like the CO's category, view and use it more often, etc. Second, since an alternate subcategory is treated like a normal subcategory for the purposes of searching, a CO effectively increases the categories beneath his own by adding alternates, and thus increases the chances that his category will get credit for being a "linking node" (to be described in more detail below). Similarly, a CO would want his category to be an alternate for many other categories since this gives his category more exposure, thus increasing his category's popularity, and so on. Accordingly, the alternate category feature disclosed in the present invention gives a CO a middle ground option between rejecting another CO's request to be a subcategory and accepting it as a full subcategory. The system therefore allows the category owners to choose their own alternates to offer more choices to the users which would result in more usage of their own categories leading to more opportunities for greater reward and/or compensation (tangible and/or intangible). Internally, link nodes that represent the alternate subcategories are flagged as such in the parent structure ofthe respective node. This is because a certain category may be a subcategory of several categories within the system. In some cases, it may be a primary subcategory while in other cases it may be an alternate subcategory. In one embodiment, as explained in more detail below, when a category is displayed to the users, only its primary subcategory links are displayed. However, the users are allowed to select an alternate subcategory for each primary subcategory if one exists. As described in more detail below, with respect to searching, a category which is flagged as an alternate is given a lower score, but nevertheless is included as if it were a normal subcategory. When a user selects an alternate subcategory, he effectively swaps the role between the original primary subcategory and the one he selects. As such, the search algorithm will score the original primary lower, and the newly chosen alternate higher. When a category is displayed, the chosen alternate is displayed, and not the original primary.
Another type of users in the system is an advertisement buyer ("ad buyer" or advertiser). In one embodiment, the system uses an affiliate advertising model in which an entity (e.g., a merchant who wants to advertise his products, services, etc.) pays anyone who generates visits, leads, sales, or other transactional activities on his web site. Accordingly, if a user ofthe system sees an advertisement while using a category (e.g., viewing the category, searching for information in the category, etc.) and initiates an activity with respect to the advertisement, the category owner can be compensated in various ways by the entity (e.g., merchant) for which the advertisement is displayed. The various activities for which the category owner can be compensated include the display ofthe advertisement to the user, "click through", "buy through", and "lead through", etc. In one embodiment, the category owner may be compensated by some fixed amount each time the respective advertisement is displayed to a user. Similarly, the category owner maybe compensated by some fixed amount for each click through (e.g., each time the user clicks on the advertisement). If the user purchases the product or services advertised, the category owner may get a fixed percentage ofthe purchase price (i.e., buy through). Likewise, the category owner may get some fixed commission if the user clicks on an advertisement link and he later buys something (or don't). This is called "lead through". Of course, these various methods and mechanisms for rewarding or compensating the category owners for the usage of their work through affiliated advertising are for illustrations and explanations and are not meant to be exhaustive or restrictive. The teachings ofthe present invention are also applicable to other forms or methods of compensating the category owners for the usage of their work. Similarly, the teachings ofthe present invention are not limited to the compensation structures described herein and should be equally applicable to other compensation structures based upon specific applications and implementations ofthe present invention.
In one embodiment, to facilitate the affiliate advertising model described above, the system provides the advertisers with the capability to sign up with the system to advertise their products, services, messages, ideas, etc. The various category owners in the system are allowed to select from the list of available advertisements one or more appropriate advertisements that they think are related to their categories. As mentioned above, when the advertisement associated with a specific category is displayed, the respective category owner is provided with the opportunity to be compensated not only for the display ofthe advertisement but also for other activities originated from the display ofthe advertisement. As such, each category owner is allowed to choose any advertisement from the list to be associated with his category. i another embodiment ofthe present invention, an ad buyer purchases advertisement placements from COs. In this embodiment, an ad buyer will select a CO's category based on his impression of how the CO is targeting his desired audience with his category. Since an advertiser typically pays a CO based on the number of users that view his advertisement, select (e.g."click") his advertisement, or perform other transactional activities, it is in the advertiser's best interest to find the most "targeted" audience possible. That is, the audience that is the most likely to be interested in his products, services, or any other messages or information that the advertiser wants to communicate.
Another type of user in the system is not really a user in the true sense, and is called the "Default" user, or system user. This user is the category owner that "owns" all ofthe categories that are on the system before any users use the system (the default root category).
The various types of users described above interact with each other in various ways, depending on their roles and the functions that they want to perform. A user ofthe system, of course, can play one or more roles in the system. For instance, a user may be a category owner with respect to his own category and an advertiser with respect to another category maintained by another user ofthe system.
Figure 1 illustrates a block diagram of one embodiment of a system environment and configuration 100 for maintaining a dynamic directory information. In this configuration, various entities can be connected to a system 101 via a computer network. In one embodiment, the computer network can be a local area network (LAN), a wide area network (WAN), the Internet, or any combinations thereof, hi one embodiment, the system 101 is an Internet-based system designed to perform various functions according to the requests received from the various entities connected to the system 101. The various functions performed by system 101 include creating and maintaining categories of information based upon the category specification information provided by category owners 103, allowing users 105 to access the categories to locate information, searching the categories based upon search requests submitted by the users 105, facilitating advertising activities between the category owners 103 and advertisers 107, keeping track of advertising activities in connection with the usage ofthe categories, and providing the category owners with the opportunity to be compensated based upon advertising activities in connection with the usage of their categories, etc. The various functions performed by the system 101 are described in detail below.
Referring to Figure 1, in one embodiment, various category owners 103 can establish connections with the system 101 via the Internet. The category owners 103 can submit various types of requests to the system 101 to create and maintain various categories of information that can be accessed and used by the end users 105. hi addition, the category owners can submit requests to the system 101 to designate one or more advertisements for their respective categories. Category owners 103 may include individual or corporate entities that are aware of, have access to, or possess various sources of information or data (also referred to as "data sources") that may be of interest to the end users 105. The end users 105 may include individual or corporate entities that have a need to locate and obtain various kinds of information for various purposes. Advertisers 107 may include individual or corporate entities that want to advertise any products, services, etc. and/or communicate/disseminate any other messages or information of whatever kind. Of course, any individual or corporate entity can function as a category owner only, an end user only, an advertiser only, or any combinations thereof. The system 101 is designed to facilitate and process various types of requests submitted by the category owners 103, the end users 105, and the advertisers 107. The various processes and functions performed by the system 101 are described in detail below.
Continuing with the present discussion, in one embodiment, one ofthe category owners 103 can establish connection with the system 101 via an Internet connection. The category owner 103 can submit a request to the system 101 to create or update a specific category or perform other category processing functions that are described in more detail below. The system 101, upon receiving the request from the category owner 103, performs a corresponding function depending upon the request from the category owner 103. For example, if the category owner 103 requests to create a new category, the system 101 will create a new category data structure based upon the category specification provided by the category owner 103. If the category owner 103 requests to update an existing category, the system 101 will update the existing category based upon the changes provided by the category owner 103, etc. The category owner 103, in one embodiment, can request that one or more particular advertisements be associated or linked with his category. The advertisements that are associated or linked with his category will be presented or displayed to an end user when the corresponding category is selected, either by the end user 105 or by the system 101.
Similarly, the users 105 can establish connection with the system 101 via an Internet connection. The users 105, after being connected to the system 101, can use various user interfaces provided by the system 101 to perform various functions to locate information. For example, the users 105 can browse existing categories that are made available to the end users, submit a search request to search for information in multiple categories that match the search terms specified by the users 105, send comments to the category owners 105 with respect to their category, etc. The advertisers 107, in one embodiment, can also establish connection with the system 101 via an Internet connection to conduct various advertising activities with respect to various products or services. As an example, the advertisers 107 can select one or more specific categories and contact the respective category owners to place their advertisements in connection with the selected categories. Again, once an advertisement is associated or linked with a particular category, that advertisement will be presented to an end user if the corresponding category is selected either by the end user or by the system. The system's selection of a particular category for advertising purposes will be described in more detail below. Similarly, the category owners 103, the end users 105, and the advertisers 107 can perform other types of transactions and functions to be described in more detail below using the system 101.
In one embodiment, other entities can also be connected to the system 101 to conduct various types of business transactions and functions. For example, various entities may want to use the category structure and processing functions provided by the system 101 to build and maintain personal or company information/knowledge databases, filing systems, etc. Similarly, other entities may want to use the category structure and processing functions provided by the system 101 to build and maintain public or private genealogy databases, etc. hi addition, other entities can also use the system 101 for other purposes including establishing business connection with users ofthe system 101, obtaining statistical information with respect to category usage, etc. Figure 2 illustrates a more detailed block diagram of one embodiment ofthe system configuration 100 shown in Figure 1. For clarity and simplicity, the discussion is focused on the interactions between the category owners 203, the end users 205, the advertisers 207, and the system 201. However, everything discussed herein equally applies to other entities connected to the system 101 as well as in other environments, hi one embodiment, the system 201 performs various functions in response to various requests submitted by the category owners 203, the end users 205, and the advertisers 207. The various functions performed by the system 201 include processing category creation and maintenance requests submitted by the category owners 203, allowing the end users 205 to browse through available existing categories, processing search requests submitted by the end users 205, processing advertising requests submitted by either the category owners 203 or the advertisers 207, etc. In one embodiment, the various functions performed by the system 201 also include facilitating transactions between the category owners 205 and the advertisers 207. h one embodiment, the system 201 can be logically organized into three major subsystems or units: a server subsystem or unit 211, a database subsystem or unit 231, and a backend accounting subsystem or unit 251. The server subsystem 211, in one embodiment, contains one or more servers 213. The database subsystem or unit 231, in one embodiment, contains a category database 233, a user database 235, an event database 237, and an extrapolated hierarchy database 239. The accounting subsystem or unit 251, in one embodiment, contains an accounting application program 253 and an accounting database 255. These various system components ofthe system 201 are described in greater detail below.
Continuing with the present discussion, in one embodiment, the category owners 203 establish connection with the system 201 via the Internet and access the various functions ofthe system 201 using an Internet browser (also referred to as the client program). The category owners 203 can establish connection with the system 201 using a router, a dial-up modem, or other methods of Internet connections available to them. The category owners 203 can utilize an Internet browser to interface with the system 201 in order to access the various functions and features ofthe system 201 including category processing functions, account management functions, and advertising placements, etc. In one embodiment, the category owners 203 can also use the browser client program to communicate with other entities connected to the system including the end users 205 and the advertisers 207. In one embodiment, the system 201 can support both Microsoft® INTERNET EXPLORER® and Netscape® NAVIGATOR® browser software.
End users 205 (also referred to as users ofthe system or users), in one embodiment, establish connection with the system 201 via the Internet. The users 205 can establish connection with the system 201 using routers, dial-up modems or other methods of Internet connections available to them, hi one embodiment, the users 205 use an Internet browser to access the system 201 to perform various functions including browsing available categories, performing search in one or multiple categories, communicating with category owners, etc. The various functions performed by the system 201 in response to various requests submitted by the users 205 are described in detail below.
Similarly, advertisers 207, in one embodiment, establish connection with the system 201 via the Internet. The advertisers 207 can establish connection with the system 201 using routers, dial-up modems or other methods of Internet connections available to them. In one embodiment, the advertisers 207 use an Internet browser to access the system 201 to place their advertisements into the system 201 that can be selected by the various category owners for their respective categories, i this embodiment, as mentioned above and explained in more detail below, the advertisements submitted by various advertisers are put into a list maintained by the system 201 that can be viewed and selected by the various category owners for their respective categories.
In another embodiment, the advertisers 207 use an Internet browser to access the system 201 to perform various functions including placing advertisements for specific categories, submitting advertisements to be selected by category owners 203, communicating with category owners, etc. As mentioned above, the various entities connected to the system 201 can play one or many different roles. For example, one entity can be a category owner, an end user, and an advertiser.
Referring again to Figure 2, in one embodiment, the server 213 is connected to the client 161 via the network 271. one embodiment, the server 213 includes a web server 215 and a server application 217. The web server 215 is used to communicate with the client 161 (e.g., a web browser front end). In another embodiment, the web server 215 is omitted and the client 261 is connected directly to the server application 217 via the network 271. The server application 217, in one embodiment, includes one or more computer programs that are designed to perform various functions in response to various requests submitted by the client 261. As mentioned above, the various functions performed by the server application 217 include category processing, search processing, and advertising processing, etc. In one embodiment, the server application 217 communicates with the web server 215 and creates web pages dynamically to be sent to the client 261 via the network 271, in response to various requests submitted by the client 261. hi one embodiment, the server application 217, in performing its various corresponding functions, accesses and stores data in various databases in the database subsystem 231, including the category database 233, the user database 235, the event database 237, and the extrapolated hierarchy database 239.
The category database 233, in one embodiment, is used to store information related to personal and public categories that are created and maintained by the server application server 217, based upon category information or specification provided by the category owners 203. The information stored in the category database 233 includes category information, data links information associated with the categories, category- share (catshare) information associated with the categories, advertisement placement information associated with the categories, etc. The structure and specification ofthe various types of information or data stored in the category database are described in detail below. The category database 233 can be any type of storage medium including disk, tape, etc. In one embodiment, the category database 233 is configured as a relational database containing a set of various tables used to store various types of information associated with the various categories as described above. However, the teachings ofthe present invention are not limited to relational database structures and can equally apply to any other database or file structures including flat file structure, indexed file structure, hierarchical database structure, networked database structure, or any combinations thereof, etc. h one embodiment, the category database 233 is populated and updated by the server application 217 in response to various types of category processing requests submitted by the various entities connected to the system 201. As mentioned above, using a client program such as a web browser, the various entities (e.g., category owners 203) connected to the system 201 can access various user interfaces designed to allow them to add, modify, or remove private or public categories, as well as to place one or more specific advertisements for the respective categories. In one embodiment, the category database 233 is used by the accounting subsystem 251 to perform its corresponding functions described in more detail below. hi one embodiment, the user database 235 is configured to store user information for registered users in the system including payment information for category owners and billing information for advertisers, one embodiment, the user database 235 is used by the accounting subsystem 251 to perform its corresponding functions including preparing and generating payments, bills, etc. to the appropriate users ofthe system. The user database 235 can be any type of storage medium including disk, tape, etc. hi one embodiment, the user database 235 is configured as a relational database containing a set of various tables used to store various types of user information including user profile, payment, and billing information, etc. The teachings ofthe present invention, however, are not limited to relational database structures and can equally apply to any other database or file structures including flat file structure, indexed file structure, hierarchical database structure, networked database structure, or combinations thereof, etc. hi one embodiment, the event database 237 is configured to store various events tracked by the server application 217. The various events tracked by the server application 217 include occurrences of advertisements displayed, advertisements selected, categories displayed, users logons, logoffs, etc. The event database 237 can also be referred to as event log, transaction log, server log, or statistics database, etc. In one embodiment, the event database 237 is used by the accounting subsystem 251 to prepare payment and billing information corresponding to advertising and other activities associated with various categories in the system. The event database 237 can be any type of storage medium including disk, tape, etc. In one embodiment, the event database 237 can be configured as a relational database containing one or more tables used to store the various events and relating information tracked by the server application server 217. Again, the teachings ofthe present invention, however, are not limited to relational database structures and can equally apply to any other database or file structures including flat file structure, indexed file structure, hierarchical database structure, networked database structure, or combinations thereof, etc.
The extrapolated hierarchy database 239, in one embodiment, is used to store the combined extrapolated category hierarchy of various category hierarchies in the system. The structure and specification ofthe extrapolated hierarchy database 239 and various data structures contained therein are described in greater detail below.
The accounting subsystem 251, in one embodiment, is a set of one or more programs that prepares and generates billing and payment information to advertisers and category owners, respectively. The accounting subsystem 251 uses the accounting database 253 to store and retrieve the information needed to perform its corresponding functions.
Figure 3 shows a functional block diagram of one embodiment ofthe system 201 described above with respect to Figure 2. It will be recognized and appreciated by one skilled in the art that the following description is for illustration and explanation purposes and does not limit the scope ofthe present invention, h one embodiment, the logic and/or functions that are described below can be implemented using one or more programming languages suitable for the software or system development in a client- server environment, such as Visual Basic, C++ or Java, etc. It should be recognized by one skilled in the art, however, that the logic or functions described herein can be implemented by other programming languages, circuits, or techniques in accordance with the teachings ofthe present invention without loss of generality.
Continuing with the present discussion, the system 301 includes a user profile/account update logic or function 311, a category processing logic or function 321, a search processing logic or function 331, an advertising processing logic or function 341, an accounting logic or function 351, and other processing logic or functions 361. The user profile/account update logic 311 includes logic to allow users to register with the system, to establish and maintain their user profile and account information that are used for various purposes as described in greater detail below. In one embodiment, the user profile and account information maintained for a user can contain the user personal and/or business contact information, account balances if applicable, billing and/or payment information if applicable, etc.
The category processing logic 321 contains logic to create and update various categories and related information based upon category information or specification provided by the corresponding users (e.g., category owners). For example, in one embodiment, the category processing logic 321 includes logic to allow a category owner to create a new category for use in the system, logic to update the content and structure of an existing category, logic to convert a private category to a public category, logic to allow the category owner to share all or part of his category with another category owner, logic to include all or part of another category within his category, and logic to place or associate one or more particular advertisements with a specific category, etc. The various functions and processes included in the category processing logic 321 are described in more detail below.
In one embodiment, the category processing logic 321 contains category create logic 323, category modify logic 325, category-share logic 327, and category advertisement logic 329. The category create logic 323 is used to create and store a new category in the category database 233 and its corresponding data structures in the extrapolated database 239, based upon the category information/specification supplied by a category owner. The category modify logic 325 contains logic to allow the category owner to modify the content and/or structure of his category, to include all or part of another category within his category, to include all or part of his category within the structure of another category, etc. The category share (catshare) logic 327 includes logic to allow the category owner to dynamically change the content and/or structure of his category by specifying a catshare. A catshare, in one embodiment, represents an active and dynamic connection to another category. A catshare, in one embodiment, includes a set of criteria including one or more search terms and one or more categories in which to search for data links whose associated keywords match the specified search terms. In one embodiment, the catshare associated with a particular category is used by the search logic described below to identify and link to that particular category one or more links from the specified category that match one or more specified search terms. In one embodiment, when a category owner specifies a catshare within his category, the resultant links are automatically inserted within his category as if they were part of his category. Through this catshare mechanism, a category owner can dynamically include within his category all or part of another category that match his criteria (e.g., search terms) without keeping track ofthe changes that may have taken place with respect to another category structure and/or contents and without spending time and effort to do the work himself.
The search processing logic 331, in one embodiment, includes a core search logic 333, a scoring logic 335, and a category/advertisement selection logic 337. i one embodiment, the core search logic 333 includes logic to identify data links within one or more specified categories that match one or more specified search terms. The scoring logic 335, in one embodiment, includes logic to assign an appropriate weight or score to each given match based upon a set of scoring criteria or parameters that are explained in more detail below. The category/advertisement selection logic 337, in one embodiment, performs a selection function to select a specific category whose associated advertisement will be presented along with the results ofthe search (i.e., the list of matches). The selection function is described in more detail below.
In one embodiment, the search processing logic 331 is invoked when a user submits, using various user interfaces described in more detail below, a search request that includes one or more categories in which to search and one or more search terms. The user can specify multiple categories at different hierarchical levels in which to search for data items (links) that match his specified search term(s). In one embodiment, the user can select/specify the multiple search categories using a user interface described in more detail below, or specify a root category in which to search. The root category specified by the user in turn may contain multiple different categories and data items that are structured in multiple levels ofthe hierarchy.
If the search is successful (i.e., at least one match found), the search processing logic 331 will return one or more data links from one or more specified search categories that match one or more search terms specified by the user in his search request. If the search is not successful, it will return no links. In one embodiment, a maximum number of matching links to be returned by the search processing logic 331 can be limited either by the user or by specific implementations of different user interfaces. Each returned matching data link will have a certain "weight" or "score" associated with the data item which corresponds to the "closeness" or "accuracy" ofthe result. A higher weight or score corresponds to a closer match to the search terms entered by the user, based upon a set of scoring criteria or rules described in detail below.
As explained above, in one embodiment, a category contains one or more data links. Each data link can point to a specific data source or data item that can be represented by an address of a location in which the data source or data item resides. A data link can also point to another category (e.g., a subcategory with respect to the parent category to which the respective data link is linked or associated). A data link included in a given category can contain one or more keywords specified by the category owner. Each keyword included in a data link can be indicative of one or more informational topics included in the corresponding data source or data item to which the respective data link points. The search processing logic 331 uses these keywords to identify the specific data links in the search categories that match the search terms entered by the user, hi one embodiment, a subcategory in a given category is considered a data link within that category and therefore can have keywords associated with it. In one embodiment, categories themselves can also have keywords hi one embodiment, the search logic 331 attempts to find a "hierarchical" match, in that it will look at one level ofthe search tree for a search term, another level ofthe search tree for another search term, and so on, based upon the number ofthe specified search terms. In one embodiment, the search logic 331 will rearrange the order ofthe specified search terms to find more matches, hi one embodiment, each time the search terms are rearranged, the weight or score ofthe match for the rearranged search terms will be diminished by a factor. Accordingly, in one embodiment, the order ofthe search terms is important in the searching process as well as in determining the corresponding weight or score of a given match. hi one embodiment, a higher weight or score is given to matches that are hierarchically closer together. For example, assuming that a category called "Computers" is being searched. This category has a link which points to a subcategory called "Sony Stuff, which has a keyword "Sony". Assuming also that the "Sony Stuff category has a link which is a pointer to another subcategory called "Monitors", which has a keyword "monitor". The "Monitors" category has several links to several different web sites, one of these links (e.g., link F) has a keyword "flat" which points to a web site that sells flat-panel monitors made by Sony Corp. hi this example, assuming that the search terms entered by a user "A" are "sony monitor flat". The search logic 331, in this example, will search the tree representing the search category "Computers" and will identify link F as a perfect match (i.e., the match with a highest matching weight or score) because the hierarchical order in which the match is found (e.g., link F) is the same order in which the search terms are entered.
As mentioned above, the search logic 331 will return a set of matching links, each having an associated score or weight based upon various scoring criteria described herein.
As explained above, a category might be categorized in different ways, which can effect the score or weight ofthe resultant link. For instance, a user might specify the search terms, "chicago pastimes self-tours". "Joe CO" might have a category called, "Chicago Motorcycle Rentals", which he has managed to get listed in other CO's categories, such as "Chicago Vehicle Rentals" and "Chicago Automotive". Another CO, "Jane CO", might have a Category called "Chicago Pastimes", under which she lists Joe's category with some keywords, including the term, "self-tour". Jane CO, in this case, is aware that many users are looking for pastimes in Chicago that involve a self-guided tour, and she knows that motorcycle rental is a way of providing this service. It's important to note that Joe may have never thought of positioning his category this way, even though he is diligent about keeping his links up to date and on topic.
As explained above, one ofthe goals ofthe present invention is to create a system or an environment in which both Joe and Jane are provided with an opportunity to be rewarded for their work in bringing together a user with the desired information. In one embodiment, as described above, one ofthe ways in which COs are rewarded is through the display of advertisements associated with their categories. Although a search can produce resultant links that might be from multiple different categories owned by different COs, from a practical viewpoint, there should be only one single advertisement or a small number of advertisements that can be presented to the user along with the matching links. The present invention provides a method or mechanism to solve the problem described above. In one embodiment, a method referred to as the "advertising lottery" is used to solve this problem. When a search is performed, each link returned has an associated score or weight, and an associated category from which the link originated. In addition, the respective returned link has an associated "path" through the given category hierarchy that the search logic takes to return the given match.
When search results are obtained in response to a search request submitted by a user, the information described above is used to determine or select a specific category for advertising purposes (i.e., presenting one or more advertisements associated with the selected category to the user along with the search results). This determination can be compared to buying lottery tickets in a raffle. Resultant search links that have greater scores or weights get more "tickets", and those with lower scores or weights get fewer tickets. In addition, categories that "took part" in obtaining a given resultant link also get their shares ofthe "tickets" to put into the hat. hi one embodiment, when the results are compiled, all ofthe tickets are "put into a hat" and a single "ticket" is randomly selected. The category to which the "winning" ticket belongs is chosen (i.e., the advertisement associated with the selected category will be presented to the user). The system will then record the display ofthe corresponding advertisement (along with other associated events, such as the user clicking on the ad, etc.) in the event database. The data stored in the event database (e.g., displaying, clicking ofthe advertisement, etc.) will be used to determine the reward or compensation to be paid to the respective category owner by the respective advertiser. As such, each contributing category owner is provided with an opportunity to be compensated for his work in proportion to the amount of his contributions in obtaining the information for the users.
Figure 4 shows a structure diagram of one embodiment ofthe category database 233 described in Figure 2 above. As illustrated in Figure 4, the category database 233, in one embodiment, is configured to store category information and related information which include category specification data 401, link specification 403, catshare specification 405, ad placement specification 407, and advertisement specification or information 409. In one embodiment, the category specification 401 contains category identifier, category name, current advertisement placements, links, owner identifier, keywords, etc. The link specification 403, in one embodiment, contains the link identifier, the link name, description, keywords, pointer to either a data source that can referenced by a URL or a sub category. In one embodiment, the catshare specification 405 contains one or more search terms, the category identifier(s) of one or more categories in which to search for links that match the specified search terms, etc. h one embodiment, the ad placement specification 407 includes the link name, description, keywords, a URL or pointer to a sub category, etc. The advertisement specification 409, in one embodiment, contains the ad identifier, the advertiser identifier, the image or object to be presented or displayed to the user, and a target URL associated with the respective ad, etc. A detailed description ofthe creation and update ofthe various types of information stored in the category database 233 is provided below. As explained above, in one embodiment, the category database 233 is implemented as a relational database structure and the various information stored in the category database 233 can be organized and maintained in various tables that can be cross-referenced or linked together using certain data items stored as keys or descriptors. The category database 233, however, is not limited to relational database structure and can be implemented in any other database or file structure including flat file, indexed file, hierarchical database, networked database, etc. or any combinations thereof.
Figure 5 shows a tree view diagram of one embodiment ofthe category database 233 with respect to some ofthe information maintained therein. A category owner identified as category owner 1 (e.g., a registered user in the system 201) may have created multiple categories (e.g., category 1, category 2,..., category N), the information of which are stored in the category database 233. As shown in Figure 5, each of these categories are created and maintained by category owner 1 and therefore can be traced back to category owner 1 using some identifiers, for example a unique category owner identifier assigned to category owner 1 by the system. Each of these categories may have one or more data links and other information associated with it. For example, as shown in Figure 5, category 1 has two data links (data link 1 and data link 2), one catshare (catshare 1), and one ad placement (ad placement 1) associated with it. Since these data or information items (or structures) are associated with category 1, they can be linked or traced back to category 1 using an identifier, for example a unique category identifier generated by the system. Each data link associated with category 1 may have an associated data source or contain a pointer to another category within the system 201 (a sub category). For example, data link 1 is associated with a data source and data link 2 points to another category in the system 201 (category 4). The data source or data item associated with data link 1 of category 1 may be referenced by a file name or an address of a location at which the respective data source resides, hi one embodiment, the data source can be referenced by a URL. The data source can contain text data, graphics data, voice data, video data, or any combination thereof. As illustrated in Figure 5, the catshare 1 is used to dynamically identify and include within category 1 those data links associated with another category (category 5) whose specified keywords match the search terms specified (K4, K6). The process of identifying and including within one category (e.g., category 1) those data links from another category (e.g., category 5) whose keywords match the specified search terms is described in more detail below in connection with the search process. As shown in Figure 5, category 1 includes ad placement 1 as one of its current ad placements. The ad placement 1 in this example points to a particular advertisement (advertisement 1) that has been designated to be presented or displayed to an end user once category 1 is selected, either by the end user in browsing through available categories or by the system in performing the search process in response to a search request submitted by the end user. The system selection of a specific category (e.g., category 1) for advertising purposes is described in more detail below in connection with the search process.
Figure 6 shows a table- view representation of one embodiment ofthe category database 233. As shown in Figure 6, the category and related information are organized and maintained in various tables that are cross-referenced or linked by certain data items stored in the tables (keys or descriptors). In this example, information about the various categories created and maintained by the category owners are stored in a table referred to as category table 611. Data links associated with each category are stored in a table referred to as link table 621. Each category entry in the category table 611 may have one or more corresponding data link entries in the link table 621. Likewise, each category entry stored in the category table 611 may have one or more catshare entries stored in another table referred to as catshare table 631. Each category entry in the category table 611 may also have one or more ad placement entries stored in a table referred to as the ad placement table 641. Each ad placement entry in the ad placement table 641 may have one or more advertisement entries stored in a table referred to as the advertisement table 651. Entries that are stored in the various tables mentioned above are also referred to as records or rows in the present specification. Again, the table structures shown in Figure 6 are for illustrative purposes only and it should be appreciated by one skilled in the art that the table structures described herein can be implemented by other data structures, methods, and techniques within the scope ofthe present invention.
Figure 7 illustrates an example of one embodiment of a user interface 700 showing a functional anatomy of a category, in this case a category called "Motorcycle Helmets". In one embodiment, as shown in Figure 7, the Motorcycle Helmets category 701 includes several data links 705 that are displayed in the first display area 710 ofthe user interface 700. In this example, the data links 705 displayed in the first display are 710 represent the addresses or locations (e.g., URLs) ofthe various web sites or web documents to which the data links 705 point. The category 701 in this example also includes a data link 709 which points to another category (referred to as a sub category within the category 701). The category 701 further includes several data links 713 that are dynamically obtained using the catshare structure or specification provided by the category owner of category 701. h this example, the data links 713 are those data links in another category (e.g., "Auto-related Agencies and Non-Profits) that match the search terms specified (e.g., "motorcycle helmet"). As shown in Figure 7, the user interface 700 also contains a list of functions or options that can be activated or invoked by the user by selecting or clicking on the corresponding user interface element. The UI element 721, in this example, when selected by the user, will display a corresponding user interface to allow the user to place an add for the category 701. The UI element 725 can be used by the user to send feedback or comments to the category owner ofthe category 701. The UI element 729 can be used by the user to customize category 701 according to how he wants to organize or classify his information.
Figure 8 shows a diagram of one embodiment ofthe extrapolated hierarchy database 239. In one embodiment, the extrapolated hierarchy database 239 is configured to include a keyword dictionary array 810, a node ID array 820, a catshare array 830, a user customization structure array 840, a plurality of keyword structures 850, and a plurality of node structures 860. In one embodiment, the various categories and data links associated with each category are considered nodes within the extrapolated hierarchy database for various processing purposes including searching. Figure 9 illustrates an external view of a category called "Computers" and a corresponding internal view ofthe respective category. As shown in Figure 9, the category "Computers" includes several data links (e.g., Peripherals, CompUSA, CNET, etc.), each of which points to a corresponding data source. The data source corresponding to each data link can be either a web page or web site represented by an URL (the COMPUSA or CNET data links in this example). The data source can also be another category (i.e., a subcategory with respect to the "Computers" category). For example, the "Peripherals" data link in this example is a subcategory. As shown in Figure 9, the category "Computers" and its associated links and subcategories, etc. are basically considered nodes from the internal view. For example, the "Computers" category itself is considered nodel, the data links "Peripherals", "CompUSA", and "CNET" are node2, node 3, and node 4, respectively and so on. hi one embodiment, each ofthe nodes can have one or more keywords associated with it. In one embodiment, each ofthe nodes has a pointer linking the respective node to its parent node(s). In one embodiment, each node can have a corresponding external ID number to link the respective node with the category database 233. As described above and as shown in Figure 9, each node can have a list of data links (e.g., as in the case of a category node), a pointer to another category (e.g., as in the case of a subcategory link), or a pointer to a URL (e.g., as in the case of a normal "leaf node" link), h one embodiment, a node can have a flag to indicate whether it is a default (i.e. primary) or an alternate. In one embodiment, each of node structures 860 includes the information associated with the respective node as described above. The keyword dictionary 810, in one embodiment, includes a list of keywords associated with the various nodes in the extrapolated database 239. h one embodiment, the keywords contained in the keyword dictionary 810 are non-redundant (unique). In one embodiment, the keyword dictionary 810 is implemented as an array having multiple entries with each entry corresponding to a unique keyword. In one embodiment, each entry in the keyword array contains the text string keyword and a pointer to a corresponding keyword structure 850. In one embodiment, each keyword structure 850 contains a back-pointer to point back to the corresponding keyword element or entry in the keyword dictionary array 810. hi one embodiment, each keyword structure 850 includes a list of nodes that contain the respective keyword. More specifically, each keyword structure 850 may point to one or more node structures 860 that correspond to the various nodes which contain the respective keyword included in the respective keyword structure 850. hi one embodiment, the NodelD array 820 is an array or lookup table that contains a list of external nodelDs and their corresponding node pointers, hi one embodiment, this lookup table allows a node pointer to be located quickly by its corresponding external nodelD. hi one embodiment, when a user merely wants to display a given category, the system will perform a lookup on the NodelD array 820 and return a list of links pointed to by the node corresponding to the given category. hi one embodiment, the catshare array 830 contains all ofthe system catshares and is indexed to allow quick retrieval on a catshare target. As described above, a catshare is a special kind of category, histead of having links of its own, a catshare specifies one or more nodes (i.e., one or more categories) in which to search and one or more search terms to find the links in the specified categories whose associated keywords match the specified search terms. As such, the owner ofthe respective catshare does not have to worry about maintaining or updating the respective links that he "borrows" or "shares" from another category. In one embodiment, catshares are extrapolated when they are added to the system, in that the results ofthe search based upon the catshare's specified category and the specified search terms are entered into the respective category and is added as a normal category, hi one embodiment, when a category in the system is updated, it is checked to see if it is named in any catshare, and if so, the given catshare is regenerated after the respective category is updated, h one embodiment, one or more search categories and one or more search terms can be specified in a catshare to obtain the links in the specified categories whose associated keywords match the specified search term(s). i one embodiment, the catshare array 830 is implemented as an array of catshare structures. Each catshare structure may contain the following: a node pointer for the respective catshare, one or more node pointers for one or more target categories (i.e., one or more categories in which to search), and one or more search terms.
As described above, categories that are maintained in the system may be classified as private categories or public categories, h one embodiment, private categories may be accessed by their respective category owners only. In one embodiment, public categories can be accessed by all users ofthe system or by one or more subsets ofthe users ofthe system, hi one embodiment, private and public categories are maintained in the databases (e.g., the category database and the extrapolated hierarchy database). In one embodiment, each node has an owner ID associated with it. hi one embodiment, an owner ID associated with a publicly accessible node (i.e., a node in a public category) can be distinguished from an owner ID associated with a private node by a predetermined differentiation scheme. For example, in one embodiment, publicly accessible nodes have positive owner ID's whereas private nodes have negative owners ID's. h one embodiment, during a search for nodes that match a user's search specification, a node is disregarded if it has a negative owner ID and its owner ID does not match the user ID ofthe user who requests the search, hi other words, if a node is not a publicly accessible node, it can be accessed only by its respective owner. hi one embodiment, user customized categories are distinguished from public categories and are not added to the core search system to keep the core search system smaller and thus more efficient. Instead, a special case can be performed within the core search loop that checks each category along the way for any needed edits and changes the contents ofthe given category accordingly. This mechanism allows the users ofthe system to modify any number of categories in the system without creating apparently changing the contents ofthe public categories. In one embodiment, the user customized structure array 840 contains a list of user customization structures. Each customization structure is used to hold the edits for each user. For each search, the given user's customization structure is retrieved so that it can be used for the search, hi one embodiment, a user customization structure contained in the user customization structure array 840 contains the following information: the user ID, a list of owner IDs to ignore, a list of category edits that contains the node ID to edit and one of: an alternate category owner selection containing the node ID to change and the node ID to change it to; added/deleted links within a given category containing the node ID ofthe given category and whether this is an addition or a deletion.
As explained above, the system according to the teachings ofthe present invention also includes a mechanism or feature referred to as alternate category owner selection. For example, assuming that Joe is the CO for the "Computers" category. Joe's "Computers" category may contain many links, including many subcategories. One of those subcategories is a pointer to Fred's "Peripherals" category. Assuming that Joe finds out that another CO Jane has a category about peripherals also, hi this example, Joe thinks that Jane has a good category for certain audience but he does not want to give up Fred's category, hi this instance, the system allows Joe to make Jane's peripherals category an alternate for Fred's. By doing tins, when people come to Joe's category, they can choose Jane's as the default (primary) instead of Fred's if they want to do so. hi one embodiment, to implement this feature, each node that is a link contains a flag to indicate whether it is a default (primary) link or an alternate link. In the category's node list, there are default links and alternate links, hi one embodiment, if an alternate link is read, it is assumed to be an alternate ofthe previous default link in the category's link list, i one embodiment, during the search process to be described in more detail below, alternate nodes are given lower scores or weights than default nodes. Accordingly, a category owner would want his category to be chosen as a "default" category instead of an "alternate" category. However, since alternate categories are still given scores, the respective category owners are still provided with the opportunity to be compensated for their work. In one embodiment, the user customization structure that is retrieved or loaded for a given search is used along the way to determine if an alternate node is chosen instead of a default node. If so, the alternate node is scored higher and the default node is scored lower. As explained above, when a user selects an alternate subcategory, he effectively swaps the role between the original primary subcategory and the one he selects.
Figure 10 illustrates the relationship between the keyword dictionary array 810, the keyword structures 850, and the node structures 860 according to one embodiment of the present invention. As described in more detail below, these various structures are used to process search requests submitted by users ofthe system 201.
As shown in Figure 10, in one embodiment, the node structure 860 includes the various information associated with various nodes as described above. The keyword dictionary 810, in one embodiment, includes a list of keywords associated with the various nodes in the extrapolated database 239. hi one embodiment, the keywords contained in the keyword dictionary 810 are unique, hi one embodiment, the keyword dictionary 810 is implemented as an array having multiple entries with each entry corresponding to a unique keyword. In one embodiment, each entry in the keyword array contains the text string keyword and a pointer to a corresponding keyword structure 850. In one embodiment, each keyword structure 850 contains a back-pointer to point back to the corresponding keyword element or entry in the keyword dictionary 810. In one embodiment, each keyword structure 850 contains a list of nodes that contain the respective keyword. As shown in Figure 10, each keyword structure 850 may point to one or more node structures 860. hi one embodiment, each node structure 860 may contain a pointer to point back to the corresponding keyword structure 850. As such, the keyword dictionary array 810, the keyword structures 850, and the node structures 860 are linked using pointers. For example, from an element or entry contained in the keyword dictionary array 810, one can use the coπesponding pointers to identify or trace to the corresponding keyword structures 850 and node structures 860. The use of these various structures to process search requests are described in detail below.
Figure 11 shows a flow diagram of one embodiment of a method 1100 for promoting information building and sharing by equitably compensating information providers and organizers (i.e. category owners) for the usage of their work. The method 1100 begins at block 1101 and proceeds to block 1105. At block 1105, a first category of information is created and maintained based upon category specification data provided by a first category owner. The process of creating and maintaining a category of information is described in detail below. As explained above, in one embodiment, the category and related information provided by the first category owner are organized and maintained in various tables in the category database 233 that are cross-referenced or linked by certain data items stored in the tables (keys or descriptors). The category and related information with respect to the first category are also maintained in the various data structures in the extrapolated hierarchy database 239 as described above with respect to Figures 8-10. At block 1109, a first advertisement is designated for display to users in connection with the first category's usage, h one embodiment, the first advertisement, once linked or associated with the first category, will be presented or displayed to the users when the first category is selected, either by the users or by the system. In one embodiment, as explained above, information relating to the first advertisement associated with the first category is stored in various tables in the category database 233. The method 1100 proceeds to block 1113. At block 1113, the system 201 keeps track of various advertising activities involving the first advertisement. These various advertising activities, in one embodiment, include the display ofthe first advertisement to the user in response to a selection ofthe first category, either by the user or by the system; the selection ofthe first advertisement by the user (e.g., the user clicks on the image or object representing the first advertisement or performs any other actions indicating that he wants to initiate further activities in response to the first advertisement, also called "click through"); or any transactional activity that originates from the user's exposure to the first advertisement, including "buy through" and "lead through", hi one embodiment, the various activities involving the first advertisement are stored as entries or records in the event database 235. At block 1117, the first category owner is compensated based upon the advertising activities involving the first advertisement in connection with the first category' usage. Basically, the first category owner is compensated based upon the actual usage of his category by the users, including direct and indirect usage, through advertisement sources that are associated with his category. More usage of his category results in more advertising activities which in turn results in more compensation to the first category owner.
Figure 12 shows a flow diagram of one embodiment of a method 1200 that describes in more detail the method 1100 in Figure 11 above. The method 1200 starts at block 1201 and proceeds to block 1205. At block 1205, a first category of information is maintained by the first category owner using various user interfaces provided by the system 201. At block 1209, a first advertisement is selected to be associated with the first category, one embodiment, the system uses an affiliate advertising model in which an advertiser can sign up with the system to advertise their products, services, etc. h this embodiment, the advertisements from the advertisers are put into a list. The various category owners in the system can select from the list of available advertisements one or more advertisements that they think are related to their respective categories. The advertisements selected by the category owners will be associated or linked with their respective categories. i another embodiment, the first advertiser can select the first category as one of the categories with which to associate his first advertisement and contact the respective category owner in order to place the advertisement request. Once the advertisement agreement is reached between the first category owner and the first advertiser, the first advertisement will be linked to the first category so that it will be presented or displayed to the user when the first category is selected, either by the user or by the system. The process of facilitating the advertisement transaction between the first category owner and the first advertiser is described in more detail below.
At block 1213, a first user selects one ofthe available categories to browse through in order to locate information that may be of interest to him. As described above, the first user can either choose to browse various categories through a system default category hierarchical structure or define or customize his own category structure using various user interfaces provided by the system. The process for customizing a category hierarchical structure containing various categories selected by the first user is described in more detail below. At decision block 1217, the method 1200 proceeds to block 1221 if the category selected by the first user for browsing is the first category. Otherwise the method 1200 proceeds to block 1225. At block 1221, the first advertisement is presented or displayed to the first user. As explained above, each time the first advertisement is presented or displayed to the user, the system keeps track of this infoπnation in the event database 237. hi one embodiment, keeping track ofthe presentment or displaying ofthe first advertisement includes recording or entering a display entry coπesponding to the first advertisement in the event database 237. In one embodiment, the display entry or display record (also refeπed to as an event record or advertisement transaction record herein) for the first advertisement includes an ad identifier coπesponding to the first advertisement, an activity identifier indicating the type of advertising activity involving the first advertisement for which the respective entry is recorded, the user ID ofthe user to whom the first advertisement is presented, etc. i one embodiment, the display entry may also include a date/time stamp coπesponding to when the first advertisement is presented to the first user, etc. At block 1221, the first CO's credit is increased based upon the display ofthe first ad. hi one embodiment, based upon the selection ofthe first category, the user's context is also modified accordingly and displayed on the browser.
Continuing with the present discussion, the method 1200 proceeds from either block 1217 or block 1221 to block 1225. At block 1225, the first user submits a search request which may contain multiple search terms and multiple search categories at multiple hierarchical levels in which to search for information. At block 1229, the search function is performed to locate the data links within the specified search categories that match the search terms specified by the first user. The process of searching including the user interface that allows the first user to specify multiple search categories at multiple levels is described in more detail below. At decision block 1233, the method 1200 proceeds to block 1237 if the first category plays a part or contributes, directly or indirectly, in the search to locate the data links that match the search terms specified by the first user. Otherwise the method 1200 proceeds to end at block 1291. At block 1237, the first category is given a score proportionate to the amount of contributions made by the first category in the search process for locating the data links that match the search specification. At block 1241, the first category is given a chance or probability of being selected for advertising purposes, the chance or probability given is proportionate to its score determined at block 1237. At block 1245, one ofthe categories that contribute, directly or indirectly, in the search is randomly selected by the system for advertising purposes. At decision block 1249, the method 1200 proceeds to block 1253 if the category selected by the system is the first category, otherwise the method 1200 proceeds to end at block 1291. At block 1253, the first advertisement associated with the first category is presented or displayed to the first user. A coπesponding display entry for the first advertisement, as described above, is recorded or entered in the event database 237 in response to the display ofthe first advertisement. The method 1200 then proceeds to end at block 1291.
Figure 13 shows a system flow diagram of one embodiment ofthe system 201 shown in Figure 2. The method 1300 starts at block 1301 and proceeds to block 1305. At block 1305, a user logs into the system. As mentioned above, in one embodiment, the user can establish a connection with the system 201 via the Internet. However, the teachings ofthe present invention are equally applicable when the user connects to the system via a Local Area Network (LAN), a Wide Area Network (WAN), or other types of network connections. As described above, in one embodiment, the user can use a client browser software such as the Netscape® Communicator software or the Microsoft® Internet Explorer software to communicate with the system (i.e., transmitting requests/data to and receiving responses/data from the system, etc.). For the purposes of the present specification, the Internet browser software or any other software program used by the user to communicate with the system is also refeπed to as the client program.
Continuing with the present discussion, at block 1309, a main user interface is displayed to the user that allows the user to invoke one ofthe functions that are described in more detail below. Referring again to Figure 13, the method 1300 proceeds from block 1309 to block 1313 where the user initiates an activity or invokes a function. At decision block 1317, the method 1300 either proceeds to block 1321, block 1323, block 1325, block 1327, or block 1329, depending upon the function selected or activity initiated by the user. At block 1321, a user registration function is performed to allow the user to register with the system or update existing registration information. At block 1323, a category processing function is performed. The category processing function is described in more detail below. At block 1325, the method 1300 performs a search function in response to a search request submitted by the user. The search function or process is described in greater detail below. At block 1327, an advertising function is performed which is described in detail below. At block 1329, other functions are performed including user supporting functions, etc. The method 1300 then proceeds from block 1321, block 1323, block 1325, block 1327 or block 1329 to decision block 1341. At decision block 1341, the method 1300 loops back to block 1317 if there are more activities or functions to be performed. Otherwise the method 1300 proceeds to block 1361. At decision block 1361, the method 1300 loops back to block 1309 if the user wants to continue using the system, otherwise the method 1300 proceeds to end at block 1391.
Figure 14 illustrates a flow diagram of one embodiment of a method 1400 for allowing a user to view and select multiple search levels and multiple search categories on one display panel. The method 1400 starts at block 1401 and proceeds to decision block 1405. At decision block 1405, the method 1400 proceeds to block 1409 to select a system default root category if the user does not have a user-defined root category. Otherwise the method 1400 proceeds to block 1413 to select the user's defined root category. The system default root category is created and maintained by the system 201 in order to allow new users or those users who have not customized their search environment to be able to locate or search for infonnation using the system's category structure. As mentioned above, the user is allowed to customize their search environment based on his personal preferences and his own classification system. The method 1400 then proceeds from either block 1409 or 1413 to block 1417. At block 1417, the data links that are associated with the selected root category (i.e., either the system default root category or the user's defined root category) are displayed in a first grouping area on the display panel. An example of a user interface displaying the data links associated with the selected root category (in this case the system default root category) is shown in Figure 14A. As shown in Figure 14A, the various subcategories of the system default root category are displayed in the first grouping area on the display panel. At block 1421, the user selects one ofthe links (subcategories) displayed in the first grouping area on the display panel. The method 1400 then proceeds to decision block 1425. At decision block 1425, the method 1400 proceeds to block 1429 if the selected link points to another category (next level category), otherwise the method 1400 proceeds to block 1445. At block 1429, the data links associated with the next level category are displayed in a next level grouping area on the display panel. An example of the system's response to the user's selection of a specific link (subcategory) in the top level category is shown in Figure 14B. i this example, the user selects the "Computers" link which points to the "Computers" subcategory. As shown in Figure 14B, the "Computers" subcategory in this example has various subcategories that are displayed in a next level grouping area on the display panel. The method 1400 then proceeds from block 1429 to block 1433. At block 1433, the user selects one ofthe links associated with any level category. At decision block 1437, the method 1400 loops back to block 1429 to display links associated with the next level category if the selected link points to another category. Otherwise the method 1400 proceeds to block 1445. At block 1445, the URL or hyperlink associated with the selected link is displayed in a body area on the display panel. Figure 14C illustrates an example ofthe system's response to the user's selection ofthe "Companies" link associated with the "Computers" category. As shown in Figure 14C, the subcategories associated with the "Companies" category are displayed in a new level grouping area on the display panel. Also shown in Figure 14C are the URLs or hyperlinks associated with the selected link ("Companies" subcategory). These URLs or hyperlinks are displayed in the body area on the display panel. In one embodiment, the different grouping areas coπesponding to the different category levels are displayed in an overlapping manner as illustrated in Figures 14B and 14C. In one embodiment, the system allows the user to switch back and forth between different levels of category groupings that are displayed on the same display panel. In one embodiment, the user can select a different category level by placing the cursor on the coπesponding category level. Figures 14 D and 14E show examples ofthe system's response to the user's selection ofthe "Computers" category level and the "Top" category level, respectively. As shown in Figures 14D and 14E, the category level selected by the user is brought forward and overlaid the other category levels.
In one embodiment, the user is allowed to individually select multiple categories at multiple levels in which to search for information. In one embodiment, the user is provided with a selectable indicator (also called a search light) 1451 for each category to select or click on if he wants the respective category to be included in the search. The user can select multiple categories at multiple levels in which to search for information by selecting or clicking on the selectable indicators (search lights) 1451 coπesponding to the categories that he wants to select, hi one embodiment, in response to the user's selections, the coπesponding search lights 1451 will change their color or intensity level to indicate to the user that the coπesponding categories have been selected. Figures 14F, 14G, and 14H show examples ofthe various categories at various levels that are selected by the user for searching. As shown in Figures 14F-H, the selectable indicators (search lights) coπesponding to the selected categories change their color when they are clicked on or selected by the user. The present invention thus allows for the specification of multiple categories at multiple levels in a single search that will return a single set of search results. The user interface illustrated in Figures 14A - 14H allows the user to specify or select multiple search categories at multiple levels in one single search request. This feature ofthe present invention is designed to solve one ofthe problems mentioned above, i.e., that cuπent search engines only allows for the specification of a search of one single category at a time. Figure 141 illustrates an example of a single set of search results returned by the system in response to a search request submitted by the user that includes multiple search terms and multiple categories at various levels in which to search, hi this example, the user entered the search terms "compaq pc" to search in various categories selected by the user as shown in Figures 14F-H.
Figure 15 shows a flow diagram of one embodiment of a method 1500 for performing the various category processing functions according to a request from a user. The method 1500 starts at block 1501 and proceeds to decision block 1505. At decision block 1505, the method 1500 proceeds to block 1509 to perform a registration function if the user is not a registered user. Otherwise the method 1500 proceeds to block 1513 to display a category processing user interface to allow the user to perform various category processing functions described herein. At block 1517, specification information regarding the respective category is supplied by the user using the user interface provided by the system. At block 1521, the method 1500 proceeds to block 1525 to perfonn a category create function if the information entered by the user is for a new category, otherwise the method 1500 proceeds to block 1529 to perform a category modify function. At decision block 1533, the method 1500 proceeds to block 1537 to perform a public upgrade function if the user has indicated that he wants to convert his private category to a public category. At decision block 1541, the method 1500 proceeds to block 1545 to perform a catshare function in response to a request from the user. At decision block 1549, the method 1500 proceeds to block 1553 to perform other category- processing functions in response to a request from the user. The method 1500 then proceeds to end at block 1591.
Figure 16 is a flow diagram of one embodiment of a method 1600 for creating a new category in response to a request from a user. At block 1605, category specification is obtained from the user. At block 1607, a category entry is created based upon the category specification provided by the user. At decision block 1609, the method 1600 proceeds to block 1613 if the user wants to add links to the new category. Otherwise the method 1600 proceeds to block 1631. At block 1613, a link user interface is displayed to allow the user to specify infonnation for the links that he wants to add. At block 1617, link specification is obtained from the user. At block 1621, one or more links are created based upon the link specification provided by the user. At block 1631, the category structure (category entry and associated link entries) are stored in the category database 233. Various data structures coπesponding to the newly created category and links are also stored in the extrapolated hierarchy database 239. The method 1600 then proceeds to end at block 1691. Figures 16A-B show an example of one embodiment of a user interface provided by the system to allow the user to create a new category, hi this example, the user is allowed to enter the name and keywords for the coπesponding category that he wants to create in the appropriate boxes provided by the user interface (Figure 16A). After the user enters the name and keywords for the category, another user interface as shown in Figure 16B is displayed to allow the user to specify link information for the category. In this example, the user can specify one or more links associated with the category. As illustrated in Figure 16B, for each link to be added to the category, the user is allowed to specify the coπesponding link infoπnation including the URL for the link, the name for the link, the description for the link, and one or more keywords for the link, h one embodiment, after the user has created the category and its associated link(s), another user interface is displayed as shown in Figure 16C to allow the user to select one or more advertisements to be displayed in connection with his category's usage. As illustrated in Figure 16C, the user (category owner) can select one or more advertisements from a list of available advertisements placed into the system by various advertisers, hi one embodiment, the category owner can go through the list to select one or more advertisements that he thinks are related to his category. In one embodiment, as shown in Figure 16C, the advertising rate associated with various actions regarding the coπesponding advertisement is also displayed in this advertisement selection user interface including the click rate (the rate for click through), the sale rate (the rate for buy through), and the lead rate (the rate for lead through). This rate information is provided to inform the category owner ofthe compensation rate and structure that he will receive from the various activities involving the particular advertisement that he selects for his category.
Figure 17 shows a flow diagram of one embodiment of a method 1700 for modifying an existing category. The method 1700 starts at block 1701 and proceeds to block 1705 to retrieve category and link information for the selected category from the category database. At block 1709, category and link information for the category are displayed to the user. At decision block 1721, the method 1700 proceeds to block 1725 to delete the links selected by the user to be deleted. At decision block 1731 , the method 1700 proceeds to block 1733 to display the link user interface if the user wants to add new links to the category. At block 1735, link specification for the new links are provided by the user. At block 1737, new link entries are created based upon the link specification provided by the user. At decision block 1741, the method 1700 proceeds to block 1743 to display the link user interface in response to the user's request to edit existing links for the respective category. At block 1745, existing links are modified based upon the user's specification. The method 1700 then proceeds to block 1751 to update the category database 233 and the extrapolated hierarchy database 239 to reflect the changes made by the user to the respective category and/or its associated links. The method 1700 ends at block 1791.
Figure 18 shows a flow diagram of one embodiment of a process 1800 for converting a private category to a public category. The process 1800 starts at block 1801 and proceeds to block 1805. At block 1805, the process 1800 proceeds to block 1809 to perform a category owner registration function if the user has not registered as a category owner. At block 1813, the process 1800 proceeds to block 1817 to perform a category create function if the category does not exist. The process 1800 then proceeds to block 1821 to display a public category creation user interface. At block 1825, public category information for the respective category is obtained from the user. At block 1829, an ad placement function is performed to associate or link one or more advertisements to the respective category. In one embodiment, as described herein, the system allows advertisers to place their advertisements in the system. The various category owners are allowed to choose from the list of available advertisements one or more advertisements that they think are related to their categories. At decision block 1845, the process 1800 proceeds to block 1849 to perform an alternate registration function if the user indicates that he wants to apply for alternate category status. At block 1853, the category database is updated accordingly based upon the information provided by the user. The process 1800 proceeds to end at block 1891.
Figure 19 illustrates a flow diagram of one embodiment of a method 1900 for allowing a user to customize a category structure. The method 1900 starts at block 1901 and proceeds to block 1905. At block 1905, a list of system default categories are displayed to the user. At block 1909, the method 1900 proceeds to block 1913 if the user wants to customize the displayed category. Otherwise the method 1900 proceeds to end at block 1991. At block 1913, the method 1900 proceeds to block 1917 to perform a user registration function if the user has not registered. Otherwise the method 1900 proceeds to block 1921 to display the category customization user interface. At block 1925, the user uses the category customization user interface to add or remove items from the designated category and specify a new name for the new category. At block 1929, the user selects a place within his category hierarchy to store the new category. At block 1933, the category database 233 and the extrapolated hierarchy database 239 are updated accordingly to reflect the changes made by the user. After the changes have been made, the categories displayed to the user will be changed accordingly.
Figure 20 is a flow diagram of one embodiment of a method 2000 for updating the data links of a given category. The method 2000 starts at block 2001 and proceeds to block 2005. At decision block 2005, the method 2000 proceeds to block 2009 to obtain link information from the user if the link is a new link to be added to the category. Otherwise the method 2000 proceeds to block 2013 to retrieve link information from the databases and display the link information to the user if the link is an existing link. At block 2017, the method 2000 proceeds to block 2019 to perform an add keyword function if the user indicates that he wants to add a new keyword to the link. At block 2027, the method 2000 proceeds to block 2029 to allow the user to modify an existing keyword selected by the user. At block 2037, the method 2000 proceeds to block 2039 to delete an existing keyword selected by the user to be removed from the link.
Figure 21 shows a flow diagram of one embodiment of a method 2100 for processing a search request submitted by a user. The method 2100 begins at block 2101 and proceeds to block 2105. At block 2105, a search request is received from the user. For illustrative and explanation purposes, the search request in this example is assumed to include two search terms (e.g., first and second search terms) and two categories in which to search (first and second search categories). It should be understood and appreciated by one skilled in the art that the teachings ofthe present invention are not limited to this specific example and should be applicable to any search request with any number of search terms and any number of categories in which to search. The method 2100 proceeds from block 2105 to block 2109. At block 2109, a search function is performed to identify those nodes (data links) in the first and second search categories whose associated key words match the first and second search terms specified in the search request. The search function or search process performed at block 2109 is described in detail below. At block 2113, the score for each category which contributes to obtaining the matches is determined. At block 2117, one ofthe contributing categories is selected as the winner for advertising purposes, i one embodiment, the selection of the winner for advertising purposes is performed randomly. In one embodiment, each contributing category is given a selection chance (probability) that is proportionate to its contributing score. In another embodiment, the selection may be done based upon a set of criteria including, but not limited to, the contributing score of each category, the number of contributing categories, the number of advertisements associated with each contributing category, the advertising rate for the associated advertisements, etc. The method 2100 proceeds from block 2117 to block 2121. At block 2121, the list of matches is presented to the user along with one or more advertisements associated with the winning category. The method 2100 proceeds to end at block 2191.
Figure 22 shows a flow diagram of one embodiment ofthe overall search process 2200 using the system 201 described above. The process 2200 starts at block 2201 and proceeds to block 2205. At block 2205, a user enters a search request via a web browser. As described above, users ofthe system 201, in one embodiment, are connected to the system via the Internet and can use a standard web browser to communicate (e.g., send data to and receive data from) with the system 201. At block 2209, in one embodiment, the search request is submitted to a web server (e.g., the web server 215) within the system 201. In another embodiment, the web server 215 is omitted and the search request can be submitted directly to a server application (e.g., the server application 217). At block 2213, the search request is sent by the web server 215 to a search program in the server application 217. h one embodiment, the search program is a program that is responsible for processing the search request. At block 2217, the search program performs a search function to search the extrapolated hierarchy database 239 (also refeπed to as the in-memory data structure herein) for matches based upon the search terms and search categories specified by the user in the search request. At block 2221, a set of node identifiers whose associated keywords match the specified search terms is produced. At block 2225, the node ID results are looked up in the category database 233 for text data (e.g., category and link information) coπesponding to the node ID results. At block 2229, the combined data (node ID results and the coπesponding text data retrieved from the category database 233) are sent back to the web server 213 by the search program. At block 2233, the data returned from the search program is combined with infoπnation retrieved from an ad database and one or more ad images (if extant) from a local file system. In one embodiment, the web server is responsible for retrieving the advertising information from the ad database and the coπesponding advertising images (if extant) from the local file system. In one embodiment, as described above, the advertising information and the coπesponding advertising images can be logically and/or physically configured as one or more subsets ofthe category database 233. At block 2237, the combined data (including category information, link information, advertising information, advertising images, etc.) are formatted into a web page and returned to the user by the web server 215. h one embodiment, the web page is formatted according to HTML specifications. It should be understood and appreciated by one skilled in the art that the web page or web document containing matching links, advertising information, etc. can be formatted in other formats as well including XSL and XML formats, etc. Figures 22A - 221 illustrate the process 2200 described above showing the interactions between the various system components in processing a search request submitted by a user.
Figure 23 shows a detailed flow diagram of one embodiment ofthe search function or process 2300 perfonned at blocks 2217 and 2221 in Figure 22. For explanation and illustration purposes, the search function 2300 is described using a sample search request submitted by a user that specifies two search terms (e.g., first and second search terms) and two search categories in which to search (e.g., first and second search categories). It should be understood and appreciated by one skilled in the art that the teachings ofthe present invention are not limited to this specific example and should be applicable to any search request with any number of search terms and any number of search categories in which to search. The search categories specified by the user in the search request are also refeπed to as herein as context nodes (i.e., nodes that are used to specify scope of search).
With continuing reference to Figure 23, at block 2303, the search request is received. At block 2305, the keyword dictionary aπay 810 is searched for a semantic match on the second search term. At decision block 2307, if there is no match, the process 2300 proceeds to end at block 2391. If there is a match (i.e., there is an entry in the keyword dictionary aπay 810 that contains a keyword matching the second search term), the process 2300 proceeds to block 2309. At block 2309, a coπesponding pointer in the matching entry is used to reference the keyword data structure to identify a list of nodes that contain the specified keyword (i.e., the second search term). Recall from the above description that each entry in the keyword dictionary aπay contains a pointer to a coπesponding keyword structure and that each keyword structure points to one or more nodes that contain the coπesponding keyword. At block 2311, a node from the list of nodes containing the second search term is selected for further processing. At block 2313, the parent's hierarchy ofthe selected node is checked to determine whether the selected node is contained within the first or second search categories specified by the user, hi one embodiment, as described above, each node contains a pointer to its parent node(s). This pointer is used to trace back to the ancestors ofthe respective node to determine whether the respective node is within the specified search categories. At decision block 2319, the process 2300 proceeds to block 2323 if the respective node is within the specified search categories. Otherwise the process 2300 proceeds to block 2361. At decision block 2323, the selected node is checked to see if it contains a keyword matching the first search term. If the selected node contains a keyword matching the first search term, the process 2300 proceeds to block 2327A to add the selected node to the result set. Otherwise the process 2300 proceeds to block 2331. The process 2300 also proceeds from block 2327A to block 2331. At block 2331, the ancestor nodes ofthe selected node are checked to see if they contain a keyword matching the first search term. At decision block 2335, if an ancestor node ofthe selected node contains a keyword matching the first search term, the selected node is added to the result set at block 2327B. Otherwise to process 2300 proceeds from block 2335 to block 2361. At decision block 2361, the process 2300 goes back to block 2311 to select another node from the list of nodes if there are more nodes to be processed. The processing continues until all nodes in the list of nodes have been processed as described above. If there is no more nodes in the list to be processed, the process 2300 proceeds to end and return the result set at block 2391. hi one embodiment, the search process 2300 as described above also performs other functions including scoring, user checking, handling user-edited categories, handling default/alternate CO selection, and handling catshares.
The following items or criteria are used to determine the score of each item returned in the search, and also determine the "winning" category that will be allowed to choose the advertisement to be presented to the user along with the search results. In one embodiment, the score values below are meant to be relative, and the system allows the values to be changed ("tuned") on the fly. As the results are being compiled, a table containing all ofthe included categories is created and running a total is kept for its particular score (or "lottery tickets"). When all ofthe results are compiled, the search process adds up the total score from all categories in the table, and randomly chooses a number between one and that number. That number is used to select one ofthe contributing categories as the "winner" in the ad lottery for advertising purposes. The "winning category" will then be used to select one or more coπesponding advertisements for presentment (e.g., display) to the user.
Since some categories and links may not themselves be term/keyword matches, but may in fact be an important reason that the match was found, an additional score is given to each node's category. This score is small but allows a "linking node" a chance to win the ad lottery.
The table below illustrates various types of scores (scoring criteria or scoring rules) that are used to determine the total matching score for each match (search result). These various scoring criteria and their coπesponding weights are shown for explanation and illustration purposes. The teachings ofthe present invention are equally applicable to other scoring methods or systems, other scoring criteria and their coπesponding weights, etc. For example, depending on the applications and/or implementations ofthe present invention, different scoring criteria and their coπesponding weights may be used to determine the respective score for each search result (e.g., match).
Figure imgf000047_0001
Figure imgf000048_0001
Figure imgf000049_0001
Figures 24A-C illustrate an example of one embodiment of an application ofthe various scoring criteria (also refeπed to as scoring types, scoring factors or scoring rules) described above with respect to a search request submitted by a user that contains three search terms in a specific order. As shown in Figure 24A, the user enters "mac monitor sony" as the search tenns. With respect to the sequence score criterion, it can be seen in Figure 24A that a match is considered a good or perfect match with respect to the sequence score if the keywords associated with the branch in which the matching node is found are in the same order as that ofthe search terms, hi this example, the branch shown on the left of Figure 24A illustrates a good match since the matching keywords are in the same order as that ofthe search terms ("mac monitor sony"). i contrast, the branch shown on the right side of Figure 24 A, while considered a match, is not as good because the matching keywords are not in the same order as that ofthe search terms.
Figure 24B illustrates and example of how the origin distance score criterion is used in determining the total score for each matching link, hi this example, it can be seen that the match identified on the left side of Figure 24B is considered a good or perfect match with respect to the origin distance criterion (i.e., to be given a higher origin distance score) because the matching link is close to the origin category, hi contrast, the match identified on the right side of Figure 24B, while considered a match, is not as good because the matching link is farther away from the origin category. Accordingly, the match identified on the right side of Figure 24B will be given a lower score with respect to the origin distance criterion, compared to that ofthe match shown on the left side of Figure 24B.
Figure 24C illustrates an example of an application ofthe term spread score criterion. In this example, it can be seen that the match shown on the left side of Figure 24C is considered a good or perfect match with respect to the term spread score criterion (i.e., to be given a higher tenn spread score) because the matching keywords are located closely together with respect to the tree structure in winch the matching keywords are found, hi contrast, the match shown on the right side of Figure 24C is not as good because the matching keywords are spread out with respect to the tree structure in which these keywords are found. Accordingly, the match shown on the right side of Figure 24C will be given a lower term spread score compared to the match shown on the left side of Figure 24C.
Figure 25 shows a flow diagram of one embodiment of a scoring process 2500 for determining the total matching score for a given match. For clarity, the various tasks performed by the scoring process 2500 are illustrated and described below in a sequential manner. However, it should be understood and appreciated by one skilled in the art that these various scoring tasks can be performed in parallel or in any other order depending on the specific applications and/or implementations. The process 2500 starts at block 2501 and proceeds to block 2505. At block 2505, the sequence score for the given match is determined. At block 2509, the origin distance score for the given match is determined. At block 2513, the tenn spread score for the given match is determined. At block 2517, the semantic score for the given match is determined. At block 2521, the total score for the given match is adjusted based upon the number of keywords in the nodes that are used to identify the given match.
Figure 26 shows a flow diagram of one embodiment of a method 2600 for selecting, from among the categories that contribute to obtaining search results, one category for advertising purposes (i.e., one or more advertisements associated with the selected category will be presented to the user along with the search results). The method 2600 starts at block 2601 and proceeds to block 2605. At block 2605, the total score for each contributing category is determined or calculated as described above with respect to Figure 25. At block 2609, each contributing category is assigned a selection probability that coπesponds to its total score as determined at block 2605. At block 2613, a number of selection tickets coπesponding to the selection probability of each contributing category is generated. For example, if a category "A" has a total score of 100 points, then it may be given 100 selection tickets to be put into a pool of selection tickets from other contributing categories. At block 2617, a ticket is selected from the pool ofthe selection tickets. At block 2621, the category that has the selected ticket is chosen as the winning category for advertising purposes, hi one embodiment, the advertisement(s) associated with the winning category will be presented to the user along with the search results. It can be appreciated that by using the method 2600 as described above, any category that contributes, either directly or indirectly, to obtaining the search results for the user, is given a chance to be selected for advertising purposes (which would generate coπesponding compensation for the respective category owner), regardless of how much the respective category contributes. However, as described and explained above, a contributing category that contributes more to obtaining the search results (i.e., has a higher score) is given a greater chance compared to a category that contributes less (i.e., having a lower score). As such, the method 2600 as described can be used to fairly and equitably compensate category owners based upon the amount of contributions their respective categories make in helping the user to obtain the infonnation that he wants.
Figure 27 illustrates a flow diagram of another embodiment of a method 2700 for selecting a contributing category as the winning category for advertising purposes. The method 2700 starts at block 2701 and proceeds to block 2705. At block 2705, the scores for the contributing categories are kept track of in a scoring table (also refeπed to as the master scoring table herein). In one embodiment, the master scoring table represents a list of categories and their coπesponding scores and is updated throughout the search. In one embodiment, while going through the search process as described above, a mini scoring table is created for each iteration. This table is used to keep track ofthe categories that take part in the suspected result. Each node that is "touched" is given some points, based on the scoring rules and criteria described and explained above. If a node is a "keeper" and added to the result set, the mini scoring table is merged with the master scoring table. Otherwise it is discarded or ignored. With continuing reference to Figure 27, all the scores are added to generate a total number at block 2709. At block 2713, a number between zero and the total number is randomly selected. In one embodiment, a random number generator is used to randomly select a number between zero and the total number. At block 2717, the master scoring table is traversed to select one ofthe contributing categories as the winning category for advertising purposes. In one embodiment, using the score of each category entry, a running total is kept as the master scoring table is traversed. The category which contains the generated number is selected as the winning category. At block 2721, the category identified at block 2717 is chosen as the winning category for advertising purposes (i.e., its associated advertisenιent(s) will be presented to the user along with the search results). The following example is used to further illustrate the method 2700. Assuming that the master scoring table contains four different categories, the first category has a score of 100, the second category has a score of 150, the third category has a score of 200, and the fourth category has a score of 350. The total score number for the four categories are therefore 100+150+200+350 = 800. If the random number is 44, then the first category is selected because the coπesponding running total as the master scoring table is being traversed for this category is 100, which contains the number 44. If the random number is 127, then the second category is selected because the coπesponding running total for this category as the master scoring table is being traversed is 100+350 = 450, which contains the random number 127. Similarly, if the random number is 763, then the fourth number is selected because the running total for this category as the master scoring table is being traversed is 100+350+200+150 = 800, which contains the random number 763.
The invention has been described in conjunction with the prefeπed embodiment. It is evident that numerous alternatives, modifications, variations and uses will be apparent to those skilled in the art in light ofthe foregoing description.

Claims

CLAIMSWhat is claimed is:
1. A method comprising: allowing a user to submit, in a single search request, one or more search terms and one or more categories in which to search for information.
2. The method of claim 1 wherein allowing comprises: presenting to the user one or more lists of categories; for each category in the one or more lists, providing the user with a mechanism to individually select the respective category to be included in the search request.
3. The method of claim 2 wherein providing the user comprises: presenting a selectable indicator in connection with the respective category, the selectable indicator when marked by the user indicating that the coπesponding category is to be included in the search request.
4. The method of claim 3 wherein the display characteristics ofthe selectable indicator, if marked by the user, are changed from one display state to another display state to reflect the user's selection ofthe coπesponding category that is to be included in the search request.
5. The method of claim 4 wherein the color ofthe selectable indicator is changed from a first color to a second color in response to the user's selection.
6. The method of claim 4 wherein the intensity level ofthe selectable indicator is changed from a first level to a second level in response to the user's selection.
7. The method of claim 4 wherein the shape ofthe selectable indicator is changed from a first shape to a second shape in response to the user's selection.
8. The method of claim 2 wherein the one or more lists of categories are presented on one display page.
9. The method of claim 2 wherein presenting comprises: displaying a first list of categories to the user; in response to the user's selection of one ofthe categories in the first list, displaying to the user a second list of categories that are subcategories with respect to the selected category in the first list.
10. The method of claim 9 wherein the first list is displayed in a first display area and the second list is displayed in a second display area, the first and second display area being on a same display page.
11. A method comprising: providing a user with a user interface to specify, in a search request, multiple categories at multiple category levels in which to search for information that match one or more search terms specified by the user, each category comprising one or more links, each link pointing to a data source, said data source being either a category or an identifier of a document.
12. The method of claim 11 comprising: displaying a first list of links coπesponding to a first level category, each link in the first list pointing to a coπesponding category; in response to the user's selection of one ofthe links in the first list, displaying a second list of links coπesponding to a second level category selected by the user in the first list; and for each link displayed, providing the user with a mechanism to individually select the respective link to be included in the search request.
13. The method of claim 12 wherein providing comprises: displaying a selectable indicator in connection with the respective link being displayed, the selectable indicator when selected by the user indicating that the respective link is to be included in the search request.
14. The method of claim 13 wherein the display attributes ofthe selectable indicator, in response to the user's selection, are changed from one state to another state to reflect the user's selection.
PCT/US2001/011034 2000-04-04 2001-04-04 Method, apparatus, and system for creating and maintaining a shared hierarchical directory system WO2001075681A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001249878A AU2001249878A1 (en) 2000-04-04 2001-04-04 Method, apparatus, and system for creating and maintaining a shared hierarchical directory system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54221800A 2000-04-04 2000-04-04
US09/542,218 2000-04-04

Publications (2)

Publication Number Publication Date
WO2001075681A1 true WO2001075681A1 (en) 2001-10-11
WO2001075681A9 WO2001075681A9 (en) 2002-12-27

Family

ID=24162827

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/011034 WO2001075681A1 (en) 2000-04-04 2001-04-04 Method, apparatus, and system for creating and maintaining a shared hierarchical directory system

Country Status (2)

Country Link
AU (1) AU2001249878A1 (en)
WO (1) WO2001075681A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011076919A1 (en) * 2009-12-24 2011-06-30 Xelion B.V. Method for generating a search query

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842218A (en) * 1996-12-06 1998-11-24 Media Plan, Inc. Method, computer program product, and system for a reorienting categorization table
US6032145A (en) * 1998-04-10 2000-02-29 Requisite Technology, Inc. Method and system for database manipulation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5842218A (en) * 1996-12-06 1998-11-24 Media Plan, Inc. Method, computer program product, and system for a reorienting categorization table
US6032145A (en) * 1998-04-10 2000-02-29 Requisite Technology, Inc. Method and system for database manipulation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011076919A1 (en) * 2009-12-24 2011-06-30 Xelion B.V. Method for generating a search query
US8930842B2 (en) 2009-12-24 2015-01-06 Xelion B.V. Method for generating a search query

Also Published As

Publication number Publication date
AU2001249878A1 (en) 2001-10-15
WO2001075681A9 (en) 2002-12-27

Similar Documents

Publication Publication Date Title
Rowley Product search in e‐shopping: a review and research propositions
US6978263B2 (en) System and method for influencing a position on a search result list generated by a computer network search engine
US7181438B1 (en) Database access system
US7822733B2 (en) Content/information search system
US8751489B2 (en) Predictive selection of item attributes likely to be useful in refining a search
US8768937B2 (en) System and method for retrieving and normalizing product information
US6311194B1 (en) System and method for creating a semantic web and its applications in browsing, searching, profiling, personalization and advertising
US7225182B2 (en) Recommending search terms using collaborative filtering and web spidering
US8843481B1 (en) System and method of forming action based virtual communities and related search mechanisms
US6778975B1 (en) Search engine for selecting targeted messages
US6868525B1 (en) Computer graphic display visualization system and method
US7792818B2 (en) Method and apparatus for categorizing and presenting documents of a distributed database
US8260786B2 (en) Method and apparatus for categorizing and presenting documents of a distributed database
US20020107718A1 (en) "Host vendor driven multi-vendor search system for dynamic market preference tracking"
US20060167857A1 (en) Systems and methods for contextual transaction proposals
US20080288588A1 (en) Method and system for searching using image based tagging
US20030046389A1 (en) Method for monitoring a web site's keyword visibility in search engines and directories and resulting traffic from such keyword visibility
US20030093285A1 (en) System and method allowing advertisers to manage search listings in a pay for placement search system using grouping
US20110252015A1 (en) Qualitative Search Engine Based On Factors Of Consumer Trust Specification
US20030078928A1 (en) Network wide ad targeting
JP2008544377A (en) A system for generating relevant search queries
WO2001044992A9 (en) Context matching system and method
Liu et al. Deployment of personalized e-catalogues: An agent-based framework integrated with XML metadata and user models
WO2001075681A1 (en) Method, apparatus, and system for creating and maintaining a shared hierarchical directory system
WO2001075656A1 (en) Method, apparatus, and system for creating and maintaining a shared hierarchical directory system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

AK Designated states

Kind code of ref document: C2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: C2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

COP Corrected version of pamphlet

Free format text: PAGES 1/50-50/50, DRAWINGS, REPLACED BY NEW PAGES 1/50-50/50; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP