Search system which continuously displays search terms during scrolling and selections of individually displayed data sets4879648Abstract The method of variably displaying search terms includes continuously displaying the names of categories on a video terminal screen. When the cursor is adjacent a category, one data set or search term is displayed, that search term being one of a plurality of terms in a list associated with the particular category. The user displays another term from the list by actuating a scrolling control key input. To select a desired term and move to the next category, the user actuates a select control key input. Therefore, the display system utilizes only two control inputs to select a plurality of terms for a plurality of categories. One list of terms represents control commands that control, among other things, the output of data from the system. One technique of formulating the list is to obtain the data fields from a particular field, corresponding to the category, from all records in a data base. The retrieved data fields are then used as search terms in this dynamically formed list. The terms can also be grouped in fixed or static lists. A routine is used to segment or subdivide the data base search for the dynamic list or to subdivide the static list. Claims What we claim is: Description BACKGROUND OF THE INVENTION
______________________________________
TAB (-TAB-) to rotate the list forward
BACKSPACE (-BKSP-)
to rotate the list backward
RETURN (-R-) to advance to the next position
______________________________________
The cursor is used to mark the location where the user is making a selection. As the cursor advances to the next location, the user is required to interact with the program in that category. A list of terms usually includes a null field term or "blank" term as one term in the list. If the user chooses not to select a qualifier in a given category or if there are several locations for one category (see Activities on Site category in FIG. 4 if the user does not want to require further amenities at the hotel), the blank term is scrolled to, displayed and selected by the user. A location will not display a "blank" as one term in the list if the user is required to choose a term for that particular category in order to search through a particular data base or to interact with the selection process. For example, if price must be specified, in the example of FIGS. 1a and 1b, the Price list will not have a blank term, hence it will not be possible to rotate a "blank" field term to the visible display location L.sub.1. In general, when all terms of interest have been rotated to the visible position (i.e., displayed) and "blank" spaces are in place where qualifiers are not to be used in the search, the records that meet the user's criteria are identified by an appropriate search through the data base. The programming steps necessary to search through the data base may vary from one situation to another. Principally, these steps are determined by the structure of the data base and the preferences of the programmer designing the search routine. Specific techniques of data base management are not encompassed by this invention. However, the method of presenting all possible decision making categories (or at least a large number thereof) at one time to the user and displaying the terms selectable for those categories in a most efficient order is the thrust of this invention. Hence, the invention is considered substantially independent of data storage and retrieval techniques such as indexing, coding or linking fields. Once the data base records have been searched and the records selected and obtained or made available, the user may read the records, i.e., display the records on the video terminal, transfer them to some other device such as a printer, find out how many records are in the data base that contain all the search terms selected by the user, or perform other operations of interest. If the number of records found is too large due to the selected set of search terms, or too small for a given purpose, the user may choose to change the set of search terms and conduct either a more restricted or less restricted search by modifying the terms. This modification is easily accomplished because all the search terms previously selected are displayed proximate to the category. The general features of the present invention are presented below from the viewpoint of the programmer setting up or structuring the applications program for the ultimate user. Constructing Static and Dynamic Lists of Terms Lists of terms are constructed in one of two ways: they are either (1) developed "logically" from what is already known about how the information in a particular data base is classified and used, (called herein "fixed" or "static" lists), or (2) they are built "dynamically" from the data records (dynamic lists herein). Since lists developed logically utilize existing knowledge about the content of the data base, these lists have a "fixed length", i.e., a fixed number of terms, and hence are called "static" lists because they do not change unless the programmer changes the program. Static lists are constructed from the theory or expectation of the use of the data base. They are prepared in advance of the use of te applications program and do not require an interactive search through the data base as compared to dynamic lists. Static lists may be modified from time to time as the structure of the data base changes by a programmer skilled in the use of the applications program that is the subject of this invention. Nonetheless, these lists are considered static because during the use of the applications program, the list does not change. For example, using color as a decision making category (FIG. 1a), a list of all color choices can be sequentially displayed and used in selecting records from a data base. A short list would consist of: Blue Bluegreen Green Red Yellow Each of these terms is individually displayed upon actuation of the scroll control key, herein the tab key (-TAB-). The terms appear only once at any display location even if there was more than one record with the same color data field. Also, the terms appear even if there are no records having those colors. The color category list can also be constructed dynamically. A dynamic list consists of all terms that appear at least once in a field in all the records in the data base, i.e., it consists only of data that is obtained from the data base. If at a given time, the color data field only consists of Blue, Bluegreen, Green, and Red, and a new record is added to the data base having a color data field Green, there is no change in the dynamic list that is constructed during the use of the present invention. However, if the Color data field on the new record is Yellow, when the dynamic list for the color category is generated, the term "Yellow" will then appear in the list. In dynamic lists, every term that appears in the list can be found in one record in the data base because the terms in the list correspond to the particular data fields extracted from the presently available records. In a sense, the data fields are converted from information fields to search terms available for selection by the user. Decisions to use static or dynamic lists for decision making category in any particular data base search are made on the basis of the advantages and disadvantages of each kind of list. Static lists anticipate all choices even if there are no records that satisfy the choice at the time the list is constructed. They do not require a search of the data base to produce the list of terms, i.e., the list is not interactively formed in conjunction with the data base. Dynamic list present only terms that have at least one corresponding record. Dynamic lists give an accurate, up-to-date list of terms that actually appear in the data base. For extremely large data bases or ween search capability (such as hardware, software, speed or cost) is limited, static lists may be more efficient because the search time to develop the dynamic list may be lengthy. However, if the search capability is adequate (or if the data base is small), dynamic lists may be preferable because at least one "hit" or record is always available. Further, if the data base is continually changing (if the merchandise in a particular color readily sells out) then dynamic lists may be preferable because the buyer of the merchandise is more concerned with availability of the product. It may also be preferable to allow the user to choose whether a dynamic list or a static list is appropriate for a particular category; however, this assumes a relatively sophisticated user who understands the distinctions between static and dynamic lists. Presenting Lists of Terms There are several refinements to increase the efficiency of the presentation of long lists by minimizing the number of key strokes (-TABs-) necessary to scroll through a list of terms to display the desired term on the screen, i e., to move the term to a visible position on the screen. Taking Previous Decisions into Account: The list of terms that is presented at any display location on the screen is either a static or dynamic list. It may be the entire list available for that location or, depending on previous decisions or a required character sting input, it may be a subset or a segment of terms on the list. A portion of the list will be presented at a location if earlier selections indicate that only some terms in a list are valid choices. For example, a product for sale in a merchandise data base may be available at $20.00, $15.00, $10.00 and $5.00 in Blue, Bluegreen, Green, Red and Yellow but Blue and Green products are the only ones available at $5.00. If the lists are dynamic and a Price term has been selected, the list for color will be determined by the price that has been chosen. Thus, if the user selects $10.00 as a qualifier, all five colors will be rotated at the price location (because all five colors are available at $10.00); however, if the user selects $5.00 as the qualifier, only two colors, Blue and Green, will be rotated at the Color location. Similarly, if the user selected color first, $20.00, $15.00, $10.00 and $5.00 is rotated if Blue or Green were chosen as qualifiers, but only $20.00, $15.00 and $10.00 are rotated at the Price location L.sub.1 (FIG. 1a) if Bluegreen, Red or Yellow is selected. Length of Lists: Lists of terms can be divided into parts or segments. Using only a segment of a list in a rotation increases efficiency of the selection process in situations where there is a high probability that the desired term appears somewhere in the identified segment and a low probability that it appears anywhere else in the list. That is, out of all possible terms T.sub.s, a segment, t.sub.s is identified for rotation if there is a high probability that the desired term T.sub.x will be found in segment t.sub.s. Segment t.sub.s is a subset or sublist of list T.sub.s. For example, if a list consists of proper names in alphabetical order, a segment may be defined as all names starting with the same first letter. If the user is looking for the name "Holiday" (FIG. 5), all H's in an alphabetic list of hotel names is the list segment. The list segment is also called a "sublist" herein. In this case the terms that are "held behind the screen," but can be rotated or scrolled to the visible position, are limited to those which start with H. To segment the list, the user is prompted to input a character string. Herein, the term "character string" means one or more keyboard characters which can be alphabetic, numeric or otherwise. After inputting the character string, a match between one or more of the characters in the string and the terms in a static list is found. For dynamic lists, the input character string is used to limit or focus the search through the data base while forming the dynamic list. The term "search limiter string" describes this type of input character string herein. If the user mistypes any letter beyond the first letter of the input character string, the program can be designed as shown below to list the correct name somewhere in the list segment. Perhaps the desired hotel name starts with "Hal" instead of "Hol", if an H list is used to form the list segment, the user can scroll through the H list to find the desired term without examining the names that start with some other letter. When the applications program of the present invention is first implemented for any data base, theory and experience with other data bases are used to determine whether a categorical list will be segmented. Important characteristics to consider are: (1) length of lists, (2) organization of lists, and (3) expected error patterns of the users. In the above example of names in alphabetical order, the probability of making an error in the second letter, which is a vowel, is much greater than the probability of making an error in the first letter. Therefore, it is useful to put all the "H" names in the segmented list of hotel names and therefore allow the user to scroll through that list. If the sublist of H Hotel Names was very long and if the users are skilled typists and familiar with the spelling of the terms that appeared in the lists, the decision to segment on the basis of the first two characters of the input character string might be made. If the user/typist is very skilled, they may be expected to correctly type all the letters of a desired term as an input string. This may be preferable if a record included data field having a textual abstract of an article (the subject of the record). In that case, the data base supplier expects the user to search the abstract using key words. The static list would include all key words. The user would be required to input almost a complete key word as a character string to segment the key word list. For example, in a legal data base including court decisions, the user inputs "contract" and the segmented list includes all the key words that have "contract" in their phrases. Based on the narrowed sublist, the user scrolls through the list to identify and select one or more key word phrases. The sublist could be used at multiple display locations to facilitate formation of a string search command. The multiple key word phrases can be logically connected together via selectable logical operators such as "and" or "or". When the string search command is fully formed, the textual abstract is searched using the string command and an appropriate number of records are found and reported. As a data base is actually used, actual error patterns and selection patterns can be used to improve the efficiency. Order of Lists: The system or program operates more efficiently if the lists of terms are ordered alphabetically, numerically or chronologically because, if the user can logically predict the position of a desired term in a list being "held behind the screen", the term can be easily displayed by scrolling forward (-TAB-) or backward (-BKSP-) through the list. When there is no inherent linear or logical order to lists, each list is ordered according to the probability that a particular term is the desired term. The most likely term is initially displayed as T.sub.0, the second T.sub.1, third T.sub.2, the fourth T.sub.3 and fifth T.sub.5 assuming only a forward scrolling control. Determining the First or Starting Position: Efficiency is increased by identifying the term that holds the highest probability of being the desired term and displaying it first in the visible position, with the other terms in the list or list segment held "behind the screen", ready to be rotated forward if need be. For example, if the user inputs the character string Hol in response to the prompt at the currently selected category of Hotel Name, it is more probable than not that those three letters are the correct ones (see FIGS. 4 and 5). Therefore, in a list that is segmented to hold all H Hotel Names, the first name starting with Hol is initially displayed on the screen. When the term is correctly predicted, no scrolling key strokes are necessary, because selection of the term is made by actuating the select control (return (-R-)) and the cursor moves to the next category. Preferably, the term that appears first in the list is marked with a symbol such as [] or ***. If the user does rotate the list, recognition of the starting position is provided by the symbol. This is shown in the static lists of FIG. 4 and in the segmented list in FIG. 5. If the user indicates that the term should start with "Hol", the term "***Holiday Inn" is first displayed. Using the rotating drum metaphor, it will appear on the screen as illustrated in FIG. 5. Required User Input Fields: Each category that is segmented and/or has a starting position determined by the user requires an "input field" as well as a unique display location on the screen for displaying the input. This is shown in FIG. 4 by the dashed boxes immediately above the dynamic list display locations for City, Hotel Name and Reference categories. By requiring the user to type in an input character string, the segment and/or the starting position of the list or segment is found. The details of this subroutine are discussed with respect to FIGS. 9, 11 and 12. The positioning of the input field on the computer screen is not critical. For instance, the input field may be immediately above the coordinates of the display location for the list that the input will influence or it may be at the same coordinates. As an alternative, the input fields may also be grouped along the top or bottom of the screen so that the user inputs all required information before any of the lists or segments are displayed. Of course, input fields can be associated with static lists as well as dynamic lists. There are two situations in which the characters input by the user in the input field cannot result in a starting position and/or segment that is exactly what the user expects. Assume N letters are input as a character string. In one case, the list does not contain a term starting with all of the N letters typed. For example, the user might type Hol, to identify a starting position in a list that has terms starting with Ha and Hu, but not Ho. In such situations, a segment is generated that starts with a term having as many characters as can be matched to the input character string. The segmented list would start with Ha since only H matched. Further, to give the user some kind of "feedback" to explain why the initial term that appears is different than what was requested; a message or prompt appears at the bottom of the screen stating: "No segment found starting with Hol. This segment starts with Ha". In the second situation, none of the N characters input by the user match any term in the list. For example, the user inputs Hol to identify a starting position in a list where there are no terms starting with H. In this situation, the program either selects some starting position or segment that is logically prior to the input string and gives the user feedback similar to the prompt described above or, depending on the structure of the list, the program may direct the user to input a further or a different character string in the input field. In the latter case a second feedback statement is presented on the screen which instructs the user to input different characters. It may say "No segment starting with H. Identify a new starting position." Required Control Line: Most locations on the screen display static or dynamic lists containing terms that specifically refer to the data base. However, one static list, positioned at or near the bottom of the screen in FIG. 4, is needed to give the user control over the applications program. At a minimum, this list is a Control Command list that allows the user to exit the program or execute the search. More realistically, it gives the user several choices of how to proceed. The following kinds of control commands are considered typical of those that appear on the required control line: *** Give Number of Records Display Present Records Display Previous Records Quit Clear Screen Modify Selection In this example, these terms have the following meaning:
______________________________________
Give Number of Records
Display a count of the number
of records that satisfy all
the displayed and selected
terms (i.e., qualifiers) that
are now shown on the screen
Display Present Records
Display the records that
satisfy all the qualifiers
that are in the visible
position on the screen
Display Previous Records
Display the records that
satisfy all the qualifiers
shown on the screen before the
most recent modification of
the qualifiers
Quit Exit from the applications
program
Clear Screen Remove all the displayed terms
or qualifiers from the screen
and allow the user to begin
again (reinitialize program)
Modify Selections
Allow the user to change some
or all of the terms or
qualifiers beginning from a
predetermined location
______________________________________
At its assigned sequential position in the Control Command list, "*** Give #of Records" appears initially on the screen because it is the most often selected term. As described above, the "***" identifies the first displayed term. The two next most often selected terms are Display Present Records and Modify Selections so they appear in the T.sub.1 and T.sub.n positions. Each takes one key stroke to be brought to the visible position of the screen (either (-TAB-) or (-BKSP-)). Quit, the term least likely to be selected, is the farthest from the starting position and would take the greatest number of key strokes to be brought to the visible position on the screen. An illustration of the rotation concept is schematically shown in FIG. 6. The Required Control Line can give choices that are different than the ones discussed above. For instance, instead of an option to modify beginning from one location on the screen, there could be separate options to modify terms at specified categories. The terms could be "Modify Name", "Modify Address", et cetera. If the categories were numbered, the terms could be "Modify 3", "Modify 4", et cetera could be used. Optional Control Lines: There may also be one or more Optional Control Lines, usually at or near the top of a computer screen. Optional control lines may indicate how terms are to be combined to search through a particular data base. All Control Lines, whether required or optional, are static lists. The exact organization of such lists is based upon the data retrieval methodology for the particular data base being searched. The terms can be written so that the user can choose to have the program skip some categorical locations if the qualifiers or terms at those locations are antithetical or contradictory to other terms. For example, in FIG. 4, there is a practical reason for deciding that hotels must be selected either by their proper name or by their physical characteristics such as size and building type (but not on both). The secondary or optional Control Line is the Search Method category that specifies those choices so that the user must select a decision path from the list. Two of the terms available for display on the secondary control line, Search Method, are City & Name of Hotel and City & Hotel Criteria. If the user selects the first term, the program moves the cursor to the City category, requires the user to select a city search term, moves the cursor to the Hotel Name category and requires an input selection but the program will not allow the user to identify a hotel by its physical characteristics, i.e., rate, size, etc. Conversely, if the city and hotel criteria term is selected as the qualifier, the user will select city and rate, size, meeting rooms, etc., features but the user is not allowed to select a Hotel Name term as a qualifier. The Optional Control Line can also be used to have the program link qualifiers or search terms using any of the three logical connectors: "or", "and" or "not". Examples of control terms that link qualifiers are given below. The substantive terms are taken from the list of terms describing members of a professional legal organization. Professional Membership or Professional Rating Most Recent Degree and Years Experience Specialty, not Employed by One Client Here, if the first term is selected, the user is required to identify members by either the professional groups, e.g., American Bar Association, which they are a member of or the rating that they have been given by a professional rating system, e.g., by Martindale & Hubbel. The second term demands that the user identify members by the their most recent academic degree and the number of years of experience. The logical connectors are underlined above. The last example given indicates that members are identified using the name of their specialty so long as they are employed by more than one client. The above example assumes a structured data base listing members of a large professional organization. Qualifiers could include the following: name of member; city and state where profession is practiced; name of firm where employed; name of undergraduate college and degrees awarded; name of graduate school or college and degrees awarded; most recent degree; date of most recent degree; name and date of most recent continuing education session attended; specialty of member; specialty of firm where employed; size of firm where employed; rating given member by professional colleagues; rating given firm where employed; number of years in profession; names of key clients; et cetera. If a secondary Control Line is used, the cursor will not necessarily move consecutively from one location to another. It may skip some locations or go to a location near the bottom of the screen and then to one closer to the top of the screen. When this is done, the program moves the cursor past the locations that are not relevant and does not allow any selection to be made in those categories. DESCRIPTION OF ONE EMBODIMENT OF THE INVENTION The following is a description of one embodiment of the applications program of the present invention. In general, FIG. 7 shows a flow chart for the initial steps of this program which is unique to the hotel data base described earlier. FIG. 8 is a flow chart that is generally applicable to many embodiments of the present invention. FIGS. 9, 10, 11 and 12 are flow charts showing various subroutines which increase the efficiency of the applications program in accordance with the principles of the present invention. FIG. 13 is a D type flow chart showing the control routine for the particular hotel data base embodiment. FIGS. 7-13 are associated with the display shown in FIG. 4. FIG. 14 illustrates the data base structure of the hotel data base provided as an example herein. FIG. 7 depicts a flow chart of the initial steps involved in one embodiment of the present invention. As discussed above with respect to FIG. 4, the cursor initially is proximate the Location category. The user is prompted to input either a two character state code (e.g., VA) or a three character airport code (e.g., DCA) in step 110. After the user has input the two or three character string, shown in the flow chart as (-N Keys-), the user can either actuate the space bar (-Sp-) or actuate the enter or the return key (-R-). The decision step 112 reflects the user's actions. Herein, when the user must provide some input into the applications program, the flow charts designate the -N keys-, or some type of control input such as -R-, -TAB-, or -BKSP-. In step 114 all the state codes or airport codes are linked with logical connectors "and" and in step 116 a search through the data base (shown as Data Base.sub.0) is conducted to obtain Data Base.sub.1 as a subset of Data Base.sub.0. Subset Data Base.sub.1 includes all the records having the unique state or airport codes. Step 118 simply shows the interconnection between the flow chart illustrated in FIG. 7 and the flow chart illustrated in FIG. 8. In FIG. 8, step 10 indicates that the method begins with an existing data base, Data Base.sub.1, and variable D is set to Data Base.sub.1. The Category Counter, C, and the Location Counter, L, are initialized to 1 in step 11. The currently selected category (i.e., the category under the user's scrutiny) is defined by variable C and the current display location on the computer screen is defined by variable L in step 12. For ease of understanding, FIG. 8 beginning with step 13 is analyzed in two parts. The first part, from steps 13 to 24, describes four different paths that may be used to identify the term that is to be displayed on the computer screen. The second part, from steps 25 to 33, describes how the user selects a term or qualifier from the available terms in the list and how the applications program advances to the next Category and to the next Location as needed. Identifying the Term: The first decision step 13 determines if a dynamic list is to be used. If the list is dynamic, it is determined if the list is to be segmented in step 14. If a dynamic list is not segmented, he program identifies and orders all possible terms that can be selected for that Category from the data base in step 15. FIG. 10 presents the detail of this subroutine and is discussed later. Next, it is determined if the user is to select the starting position of the list in step 22. If that is the case, the user inputs N characters of an input character string into the designated input field on the screen in step 23 and that information is used to identify the term that is to be initially displayed in step 24 and displays that term at the appropriate location in step 25. FIG. 12, described later, sets forth the subroutine in step 24 in greater detail. If the user does not need to select the starting position of the list per decision step 22, the first term in the list is displayed in step 25. This completes the term identification procedure for non-segmented dynamic lists. If a dynamic list is to be segmented per step 14, the user inputs N characters of an input string in at the designated input field in step 16. It should be noted that the program and not the user determines the decisions in steps 13, 14, 19, 22, 30, 33 and 130. Decisions in steps 13 and 14 are based on the specific category under consideration. For example, if the data base is changing rapidly, a dynamic list is used for a particular category. This selection is the programmer's choice and not the user's. Likewise, if the list is long, the list is segmented per the programmer's discretion. Using the N input characters supplied by the user in step 16 (note the -N keys- designation), the program identifies and orders the appropriate segment of all possible terms that can be selected for the Category from the data base and identifies the starting position of the newly formed dynamic list in step 17. This is explained in further detail with respect to FIG. 9. The first term is then displayed at the appropriate location on the screen at step 25. This completes the term identification procedure for segmented dynamic lists. If it is determined that a dynamic list is not being used in step 13, the program identifies the appropriate static list for that Category in step 18 and determines if the list is to be segmented in step 19 based on the particular category. The fixed or static list is stored in memory. If the list is to be segmented, the user types N input characters in the designated input field at step 20. The program then removes terms from the static list that do not match at least one character of the N input characters in step 21 and displays the first term in the visible position on the screen in step 25. FIG. 11 describes step 21 in greater detail. This completes the term identification procedure for static lists that are to be segmented. If it is determined that the static list is not to be segmented in step 19, it is then determined if the user must select the starting position of the list in step 22. If the starting position is to be selected, the user types N input characters (step 23), which are then used to identify the first term (step 24) to be displayed in the visible position of the screen (step 25). FIG. 12 describes step 24 in greater detail. If the starting position is not to be selected by the user (step 22), the first term in the static list is displayed at step 25. This completes the term identification procedure for logical lists that are not segmented Selecting the Term: In summary, one term from a list or segment of a list for a particular Category, selected using one of the four decision paths described above, is displayed in the visible position at a particular Location on the screen (step 25). The user then determines if the displayed term is the desired term or desired qualifier (step 26). If it is not, a decision is made to examine the terms held "behind the screen" to find the desired term or qualifier (step 27). If the term is likely to be in the "forward" direction in the rotation, the user types the forward scroll control key (-TAB-) that rotates the list of terms "forward" and the next term is displayed on the screen (step 28). If the user determines that the qualifier is likely to occur in a position that is "backward" in the rotation, the user types the reverse scroll control key (-BKSP-) that rotates the list of terms in the opposite direction and the "previous" term is displayed on the screen (step 29). When the displayed term is the desired term or qualifier (step 26), the user actuates the select control key (-R-) and selects the term. Thereafter, the program determines if another list of terms should be presented for the same Category or if additional terms from the same list should be presented for the same Category (step 30). If so, the first term in the new list or the next term in the old list is displayed at the next location on the screen (step 31) and the process of selection begins again. For example, in FIG. 4 there are three locations for desired terms in the category of "Activities on Site". However, the same static list is used for all the display locations and, in one embodiment, when the first term is selected, the next term displayed is the term sequentially following the first displayed and selected term. Alternatively, since the user only selects Pool, Golf and Tennis terms once, the same list is used and the program simply deletes or makes unavailable the previously selected term. When all qualifiers have been selected for a particular Category, the program searches through the Data Base.sub.2 (in the first instance), excludes records that do not contain terms chosen for that Category (step 32), thus reducing the number of records being considered, creating Data Base.sub.2 as a subset of Data Base.sub.1 and setting variable D equal to Data Base.sub.2. The program then determines if there are any additional Categories to be used in the selection process (step 33). If there are, the method advances to the next Category and advances to the next Location on the screen (step 34) and the process begins again. Otherwise, step 130 determines if a particular category C.sub.x has been dictated by an Optional Control Line, e.g., the Search Method category in FIG. 4, and then sets C equal to C.sub.x (and L=L.sub.x). For example, if City and Criteria were selected (FIG. 4) the next selected category is City, then the following category is Rate wherein the Hotel Name and Reference categories are jumped over. If no additional categories are to be currently selected per decision step 33, the program jumps to the Control Routine shown in FIG. 13. The detail for generating a dynamic list from a data base is described in FIG. 9. As stated earlier, the programmer designates or determines which categories utilize static or dynamic lists, which lists are to be segmented or subdivided and which lists require a start position. In this sense, a category is assigned a dynamic list function. FIG. 9 is applicable to a dynamic list that is segmented and wherein the starting position of that list is under the control of the user. FIG. 9 is a clarification of step 17. To begin, N is an integer set equal to the number of characters in the character string input by the user; n is an integer set equal to the number of characters used by the subroutine to identify the segment; d is initialized to be the first record in the data base, D (step 51). "Term" is set equal to the data field present in the field that corresponds to Category C in the current record d (step 52). As stated earlier, data field is a value representing the information in a field of a record. If the first n characters of "term" match the first n characters of the input character string input by the user (step 53), "term" is added to the list (step 54). This begins the formation of a new dynamic list since "term" is then considered to be a search term or data set in the list. It is then determined if there are more records d in data base D (step 55). If there are, d is set equal to the next record in D (step 56) and the value of "term" is updated (step 52) to the next data field in the next record. When there are no more record d's , it is determined if there are any terms (i.e., data sets) in the list (step 57). If the list does not contain any terms, there are no terms available for the user to select as a qualifier. A "feedback message" is then presented (message #1) that informs the user that there is no segment starting with any of the letters chosen and suggesting he start again by typing a different set of characters (step 58). If the list is not empty, it is put in order and duplicate terms are eliminated (step 59). The correlation between the searched out records and the terms in the dynamic list is ignored. To identify the starting position of the newly formed dynamic list, an integer NUM is initialized to N (step 60). If there is a term in the list that matches the first NUM characters of the input character string (step 61), that term is placed in the first visible position on the screen and marked with the symbol *** that indicates the beginning of a list (step 62). If there is no term in the list that matches the first NUM character, NUM is decremented (step 63) until a match is found. Because N is greater than n and n is used to identify the segment, there will always be a match of at least n characters. In such a case where NUM is decremented, the term most closely matching the input character string is then marked and placed in the first visible position on the screen. Since the list will be starting with a term somewhat different than the term the user specified, a second "error message" (message #2) is presented. It will inform the user that there is no segment starting with all the letters typed, but that the first term starts with NUM letters (step 65). The detailed flow chart for generating a dynamic list from a data base that is not segmented is described in FIG. 10. It is an expansion of step 15 in FIG. 8. To begin, variable d is initialized to equal the first record data base, D, (step 41). Variable d is set equal to the first record in data base D or set equal to all the fields in the record (the entire record is available to the program). The variable "term" is set equal to the data field in record d. The data field is in a field of the record that corresponds to the currently selected Category C (step 42). The "term" is added to the list (step 43). In another sense, data field is converted to a search term. If there are more record d's in data base D (step 44), d is set equal to the next record in D (step 45) and the value of "term" is updated to equal data field from the new record (step 42). As stated earlier, data field is a value or a piece of information. When there are no more additional record d s, the list is put in order and duplicate terms are eliminated (step 46). Any logical order (alphabetical, chronological, numerical, etc.) can be used. The duplicates are removed because the correlation between the data fields and the records is disregarded. The important aspect is that each term in the dynamic list corresponds to at least one record in existence in the data base. The detailed flow chart for generating sublists from static lists and identifying a starting position for the sublist is presented in FIG. 11. FIG. 11 is a clarification of step 21. To begin, N is set equal to the number of characters input by the user; n is set equal to the number of characters used by the program to identify the segment; t is initialized to be equal to the first term in the list (step 71). If the first n characters of term t do not match the first n characters of the input character string (step 72), term t is removed from the list (step 73). If there are more t's in the list (step 74), t is set equal to the next term in the list (step 75). When there are no more terms in the list, it is determined if the list is empty (step 76). If the list is empty, "message #1", as described above, is presented (step 77). To identify the starting position of the list, initialize integer NUM to N (step 78). If there is a term in the list that matches the first NUM characters of the character input string (step 79), place that term in the first visible position on the screen and mark it with the symbol *** that indicates the beginning of a list (step 80). If there is not a term in the list that matches the first NUM characters, NUM is decremented (step 81) until the closest match is found. If, after such a match is found, NUM does not equal N, "message #2" is presented (step 83). The detailed flow chart for identifying the starting position in dynamic and static lists that are not segmented is presented in FIG. 12. FIG. 12 is a clarification of step 24. To begin, integer N is set equal to the number of characters input by the user (step 91). NUM is initialized to N (step 92). If there is a term in the list that matches the first NUM characters input (step 93), that term is placed in the first visible position on the screen and marked with the symbol that indicates the beginning of a list (step 94). If there is no such match, NUM is decremented (step 95) until a match is found or until NUM=0. If NUM is decremented to 0 (step 95), indicating that no match was found, "message #1" is presented (step 97). If a match is found, that term is placed in the first visible position on the screen and mark it with the symbol that indicates the beginning of a list (step 94). If NUM is not equal to N (step 98), "message #2" is presented in step 99. FIG. 13 illustrates the flow chart of the control subroutine. FIG. 13 is a D type flow chart as is recognized in the art. The various steps are clearly laid out in that Figure. It is to be noted that "D" represents the ultimate data base subset having all the records retrieved using the displayed and selected search terms obtained by operation of the program. Either the program retrieves the entire record or maintains a list of the accession numbers of all the records found using the search terms. Therefore, under the Display Present Records routine, the first record from D is obtained and then displayed. In addition, a status line is included showing "#of D", such as "1 of 10", identifying that this record is the first record of 10 records in the Data Base subset D. As shown at the end of that routine, actuating the return (-R-) key calls back the "filled out" screen with all the displayed and selected terms are shown thereon. The other routines, such as Modify Selections, were described earlier. FIG. 14 is a schematic of the data base structure for the particular embodiment of the hotel data base. To speed the search of the data base, certain indexes are formed from the main file. For example, Index a is the State/City Index. Each item in Index a includes a two letter state code followed by the first letter of the city in the particular state. Thereafter, some type of identifier or correlator between Index a and the main file is present which is illustrated in FIG. 14 by address 2 and address 4 symbolized by Ad.sub.2 and Ad.sub.4. The index is formed primarily to speed the generation of the dynamic list for the applications program. However, when the dynamic list is anticipated to be relatively small (for example, less than 50 records), an index to the main file probably is not necessary. Index b is the three character airport code for the main file. Index c is the state code, entire city, and the first letter of the hotel name. Index d is the two character state code, the first character of the business reference. All index records, shown by the boxes in the index files, include the relevant addresses of the records in the main file. For example, record 4 in the main file relates to the Marriott Gateway Hotel in Arlington, Va., very near Washington National Airport (DCA) and also relatively near the Pentagon, the headquarters of the U.S. Department of Defense. The index files for main file record 4 are shown in FIG. 14. The present invention can be used in conjunction with a data base that is commercially available and accessible via a telecommunications network. The following example uses DIALOG Information Retrieval Service, File 150, Legal Resource Index (herein LRI). The LRI data base file includes law and law related literature and DIALOG provides search capabilities through the data fields in the fields of each record. The available fields to search are shown in FIG. 15. For simplicity, consider the following fields for a screen display.
______________________________________
Article Type Journal Name
Author Jurisdiction
Case Name Publication Year
______________________________________
The screen can be set up as shown in FIG. 16. To access the LRI data base, one unique key or one field unique to each record is required. In this case, each record has what DIALOG calls an "Accession Number". If there was no unique key for each record, the programmer would build a table and number the records as they appear in the file (i.e., the first record would be referenced as #1, the second as #2, etc.). Next, a MATCH TABLE is established in the computer accessing the LRI data base as follows:
______________________________________
MATCH TABLE
______________________________________
accession #1 . . . match?
accession #2 . . . match?
o .
o .
o .
accession #n . . . match?
______________________________________
For each record in the data base there is exactly one entry in the MATCH TABLE. The "Match?" field is "True" for each entry in the MATCH TABLE at the beginning of the program. This means that when no qualifiers or search terms have been chosen, all the records in the data base could conceivably match the user's search criteria. The MATCH TABLE is used for two purposes: to decrease the size of the considered data base as the qualifiers (search terms) are selected and to build dynamic lists from the current data base. The cursor would be positioned at the location immediately to the right of the categorical identifier Article Type in FIG. 15. Based upon a description of the LRI data base, the article types are classified as follows: Article Book Review Case Note President's Page Column Letter to the Editor Obituary Transcript Biographical Piece Editorial As described above, the static list could be scrolled through by the user. After the user selects one of the Article Types, the program loops through the MATCH TABLE looking for entries with "Match?"=TRUE. When such an entry is found, the record is retrieved and examined by using the Accession Number from the LRI data base to see if it contains the displayed and selected Article Type. If it does, the MATCH TABLE is not changed and the program obtains the next record per the listed Accession Number. If the record is not of the desired Article Type, the program marks the "Match?" field FALSE in the MATCH TABLE. This action means this record does not match the user's criteria and will not be considered in later searches. To review, the general procedure for eliminating non-matching records after a qualifier (a search term) is selected is as follows. Loop through the MATCH TABLE. For each entry that has "Match?"=TRUE, check to see that the corresponding record in the data base contains the qualifier selected. If it does not, change the "Match?" field for this entry to FALSE. Next, the program may construct a dynamic list of authors for a certain article type. There are two types of dynamic lists that may be constructed: segmented and non-segmented. First, consider non-segmented dynamic list construction. If the selected Article Type is a Column, the Author list may be formed as a non-segmented dynamic list. When the user's cursor is positioned at the Author location, a search through the LRI data base subset of Columns takes place. The MATCH TABLE is used to generate a list of Author terms for the user. Loop through the TABLE looking for entries that have "Match?"=TRUE. Upon finding such an entry, retrieve the record and place the data field for the Author field into the dynamic Author list. After examining all matching records in the data base, sort the Author list and remove duplicate entries. The list is then displayed for the user. Author could also be a segmented dynamic list. To construct segmented dynamic lists, the programmer must decide on the number of letters that will identify the segment and the number of letters that the user will be able to type to identify the starting position within the list. One solution is to identify segments by the first three letters of each term in the list and to allow the user to type eight letters to identify a starting position. If the user is looking for an author named Brown, he would enter BROWN (Return) on the first line after the "Author:" prompt. Thereafter, the program generates a segment consisting of all authors that begin with the letters "BRO", since the programmer uses three letters to identify a segment. The input character string "BROWN" identifies the starting position within the sublist, because the program uses up to eight letters to identify the starting position. After inputting the character string, the program loops through the MATCH table looking for entries with "Match?"=TRUE. After finding such an entry, the program retrieves the record and examines the Author field of the record. If the field begins with the same characters the user typed (in this case "BRO"), the program puts the author's name the data field) into the dynamic Author list. If the data field does not match, the program continues looping through the MATCH TABLE. When all entries with "Match?"=TRUE are examined, the program sorts the Author list and removes duplicate entries. The list is then displayed for the user. After the list is displayed and the user selects one desired term, the MATCH TABLE is used to decrease the size of the data base. After the user has selected as many terms as desired, the control command list is presented proximate the procedure category. Upon selecting the appropriate command, the remaining records in the MATCH TABLE are searched, retrieved and displayed. In the claims, each term in the list is called a "data set" since the terms may be a single word, a phrase or series of words interrelated by some logical operator. The particular equipment used in the hotel data base example is a Digital Equipment Corp. MicroVAX computer having a three megabyte memory. It should be appreciated that techniques are described herein for limiting the user intervention in the first few steps of the hotel data base example, i.e., the selection of a term from the Location category. Therefore, a static list including terms representing state codes and a static or a dynamic list for airports representing the three character airport codes could be incorporated herein. The static state code list would require the user to input at least the first character of the state such that the static list is segmented to certain states (e.g., all states being with "M") so the user does not have to scroll through the entire list of 52 states. The airport code could be listed based upon the closest city to the airport, the airport name itself or other logical item related to the airport as input by the user as an input character string. In an alternative embodiment, the Type of Lodging category is a dynamic list rather than a static list. The formation of such a dynamic list is apparent based on the description herein. It is important to note that the specific embodiment illustrated in FIG. 4 does not show blank data sets or blank terms in the static lists. Also, the static lists are not complete but are, in fact, abbreviated in order to simplify the explanation of the present invention. The order of presentation of the categories is primarily based on the expectation of the user and particularly on what questions the user would ask to initially search through the data base. It is apparent that the present program can be easily linked with a search routine through a data base. It is important to note that the program must obtain the data field for a particular category in a set of records in order to formulate the dynamic list described herein. Therefore, the present invention must be interactive with the data base search routine to utilize this feature. The claims appended hereto are meant to cover these and other modifications of the present invention.
|
Same subclass Same class Consider this |
||||||||||
