5.5    Retrieval - Search, Get, and Replace

       You have two basic methods of retrieval, GET and SEARCH.
       Neither is case-sensitive: capitals and lower case can be
       freely mixed.  These commands can be accessed from the
       Main screen via their own individual buttons, or from the
       List screen via the 'Find recs' button.

       FIND also includes a search-and-replace command which can
       be used to locate and update, or simply locate, ANY text
       string - not just keywords.      (NOT IN FREEWARE VERSION)

5.5.1  Search

       Overview
       --------

       You can search a database for KEYWORDS appearing in the
       Key line, or elsewhere.  Click Search and enter your
       chosen keyword(s) - up to eight per "query".  Search will
       generate a List of all records containing the keywords you
       entered (assuming there are some).  If a new List is
       generated, it replaces the old and the List screen is
       automatically brought up.  If there are no "hits", you are
       notified by a beep and (on the Main screen only) a
       "No matching entries located" message at lower left of
       screen.

       A keyword - for the purposes of Search query input - is
       defined as any string of typeable characters EXCEPT a
       space.  These are matched against words in the database,
       defined as any string of typeable characters DELIMITED by
       spaces (or end-of-field, of course).

       To generate a hit, only the characters you actually enter
       have to match.  For example, if a record contains the
       words "President Kennedy - JFK", then "Pres", "PRESI",
       "Kenn", "KeNNedy", "JF" and "-" will all find it.
       ("ident", or "FK", will not. )

       ----------------------------------------------------------
       However, as a format-friendly measure, to improve the
       odds of a "hit", records IN THE DATABASE are edited as
       they are being searched, just before comparison, to blank
       out (temporarily) a total of 16 `nuisance' characters, ie:

       (){}[]<>`'",/=*  and  ;

       Note that the keywords YOU enter are NOT adjusted.

       (This feature can be turned off by setting EXCLUDE=NO in
       the BLUEBOOK.INI file, either manually or via BBIni.Exe)
       ----------------------------------------------------------

       Example:  Suppose you have a record with this key -

           "2001,a Space Odyssey" [MOVIE--rated G] <<SEE!
           ------------------------------------------------
                                                        Key

       Then you make these queries (with Exclude turned ON).
       Do they find it?

       space         Yes     Exact match, not case-sensitive
       spac          Yes     Matches as far as it goes
       pace          No      No keyword beginning with `p'
       "2001         No    " blanked out in database, not query
       2001          Yes  ", blanked in database making `2001 a'
       A             Yes   , blanked out; not case-sensitive
       Odyssey"      No    " blanked out in database, not query
       Odyssey.      No      Doesn't match adjusted ` Odyssey '
       rated         No      not a word (part of `MOVIE--rated')
       <SEE          No      all < characters blanked
       space movie   Yes     2 separate keywords, 2 matches
       space cadet   Yes     2 separate keywords, 1 match

       ----------------------------------------------------------
       TIP:  It's a good idea to keep search words short and not
       too specific -- `movi', for example, would retrieve all
       entries for `MOVIE' and `MOVIES' (and very little else),
       but `movies' could miss a lot.
       ----------------------------------------------------------


       Compound Words
       --------------

       The above is all very well, but what happens when you need
       to input "New York" or "Los Angeles".   A search on "York"
       will succeed, but it might also return "York, England" or
       "Yorkminster".  Likewise, "Los" will succeed, but it might
       also return "Loss-making Greenland Safari Park Folds!".

       In these case, if you wish, you can enter a compound word.

       Instead of a space between "New" and "York", type ^D
       (ie, hold down Ctrl key, press D).  A dot is inserted
       [^D for dot] so you get "NewYork", which can be searched
       for as one word.


       Logic Used
       ----------

       Search uses "OR" Boolean logic.  In other words, if you
       enter the keyword "cat", followed by the keyword "dog",
       you are asking for all records with EITHER "cat" OR "dog"
       in them.  You cannot ask (directly) for records with "cat"
       AND "dog".

       If you want records with "cat" AND "dog", search for "cat"
       first.  Then run a second query, not on the entire
       database, but just on the List generated by the first
       query (NOT IN FREEWARE VERSION).  This time, search for
       "dog".  Assuming there ARE records with both, that is what
       the List will now display - and ONLY those records.

       This approach allows you to build up quite complicated
       queries, quite simply.  (In practise, you are unlikely to
       need them!)


       How to do a Search
       ------------------

       Click "Search" or type S.  A panel or window pops up over
       the current record, with five buttons, two check box
       "panes", and a floating Keywords box.

       Click the "keyWords" button/type W, or click the Keywords
       box itself, to enter the words or word-stems you wish to
       search for (up to 8).  You can use ANY of the eight lines
       provided, and enter either upper or lower case: what you
       enter will be "scrunched up" and "upper-cased"
       automatically.  Use Tab or the arrow keys to move between
       lines, or just click the line you want to use.

       Enter one word per line - anything after the first space
       is ignored.  When done, click the small "ok" button or hit
       F2 (or Esc, of course).   Words are entered using exactly
       the same editing commands as when updating text in the
       record itself, via the Mod command.

       Now select the search "range": either the ENTIRE DATABASE
       or CURRENT LIST ONLY.  Click the desired line to put an X
       in its check box.                (NOT IN FREEWARE VERSION)

       Next select the "scope" - the part(s) you want to search.
       As above, click one of: KEY LINE ONLY, or "TOPIC" FIELD,
       or BOTH, or ENTIRE RECORD.       (NOT IN FREEWARE VERSION)

       ----------------------------------------------------------
       If you click UNMATCHED, you are inverting your search.
       All records that do NOT match your criteria are retrieved.
       ----------------------------------------------------------

       Now click Search (in the Search panel).  A new List will
       be displayed, or you will hear a beep indicating "no hits"
       (in which case the old List is retained).

       Don't worry too much about the speed warnings you see:
       they are relative to each other, and all are pretty fast.

       ----------------------------------------------------------
       NOTE - for performance reasons, you cannot interrupt a
       Search once it has started (but you should never have to
       wait more than a few seconds).
       ----------------------------------------------------------

       The above steps can be done in any order.

       ----------------------------------------------------------
       If you're "keyboarding", observe the dot beside the check
       boxes.  That's the currently selected check box.  Use Tab
       or the arrow keys to change it, <Enter> to check/uncheck.
       ----------------------------------------------------------


       Recalling Queries                (NOT IN FREEWARE VERSION)
       -----------------

       You can recall up to 16 previous queries round-robin style
       and either re-run them, or adapt them as required.

       Note that range and scope settings are also recalled, not
       just keywords: don't forget to adjust these if required
       before starting a Search.

       Click Recall or type R.


       Using Pick Lists                 (NOT IN FREEWARE VERSION)
       ----------------

       You don't have to guess what words to search for.  The
       "pickLists" command on the List screen allows you to
       compile lists of words in the database, or various parts
       of it - the KEY line, TOPIC line, BOTH of these, or GLOBAL
       (entire record/database).  And you can use these in the
       Search panel to construct queries.

       ----------------------------------------------------------
       Pick lists are simply lists of possible keywords sorted
       into alphabetical order (or ASCII sequence to be precise).
       They are stored separately from the actual database, in
       associated files that have the same name and reside in the
       same directory, but which have extensions of .PLK, .PLT,
       .PLB, and .PLG, depending on the part of the database they
       list.   So a database called COOKBOOK would consist of 3
       files COOKBOOK.BBL, COOKBOOK.BBI and COOKBOOK.BBD, but
       could also have pick list files COOKBOOK.PLK, etc.
       ----------------------------------------------------------

       Pick lists can be regenerated (refreshed) at any time.

       To use them to construct a query, click "picK lists" in
       the Search panel or type K.  A floating panel pops up
       listing the four files by name, or as "not available"
       (because you haven't compiled it yet).

       Click the button for the list you want to use, or type
       K/T/B/G.  The list comes up (name and number of words at
       top).

       At this point, there is internal help always available, so
       we won't repeat it here - just click Help or type H.  The
       basic idea is: page through, select a word by highlighting
       it, then click the line on the Keyword panel you want to
       load it into.  (Any existing word in that line is
       overwritten.)  You can "undo" in the same way, by clicking
       a Keyword line that matches the highlighted pick list
       entry.

       You don't have to laboriously page through each time.  You
       can click 'Find' and enter a character or two (up to 16)
       to jump directly to that point in the pick file.

       Keywords can be loaded in from any pick list, even if you
       plan to search other parts of the database.  Obviously, if
       the relevant pick list is used (and is relatively up to
       date), then the chances of a hit are improved.


       Performance
       -----------

       On an uncached 33MHz 386-SX, searching only the Key line,
       BlueBook will process over 1000 records per second.


