When using this method you construct an (almost) arbitrary, internal record key based on the contents of the record itself and other system information. If you have a group of records that explicitly associates an ID with each record, this method is convenient. For example, the record format may contain a title or a ID-number - unique within the group. In either case you specify the Z39.50 attribute set and use-attribute location in which this information is stored, and the system looks at that field to determine the identity of the record.
   As before, the record ID is defined by the recordId
   setting in the configuration file. The value of the record ID specification
   consists of one or more tokens separated by whitespace. The resulting
   ID is represented in the index by concatenating the tokens and
   separating them by ASCII value (1).
  
There are three kinds of tokens:
       The token refers to a key that is
       extracted from the record. The syntax of this token is
       ( set ,
       use ),
       where set is the
       attribute set name use is the
       name or value of the attribute.
      
The system variables are preceded by
        $
       and immediately followed by the system variable name, which may one of
Group name.
Current database specified.
Record type.
A string used as part of the ID — surrounded by single- or double quotes.
   For instance, the sample GILS records that come with the Zebra
   distribution contain a unique ID in the data tagged Control-Identifier.
   The data is mapped to the BIB-1 use attribute Identifier-standard
   (code 1007). To use this field as a record id, specify
   (bib1,Identifier-standard) as the value of the
   recordId in the configuration file.
   If you have other record types that uses the same field for a
   different purpose, you might add the record type
   (or group or database name) to the record id of the gils
   records as well, to prevent matches with other types of records.
   In this case the recordId might be set like this:
   
   
    gils.recordId: $type (bib1,Identifier-standard)
   
(see Chapter 9, GRS-1 Record Model and Filter Modules for details of how the mapping between elements of your records and searchable attributes is established).
   As for the file record ID case described in the previous section,
   updating your system is simply a matter of running
   zebraidx
   with the update command. However, the update with general
   keys is considerably slower than with file record IDs, since all files
   visited must be (re)read to discover their IDs. 
  
   As you might expect, when using the general record IDs
   method, you can only add or modify existing records with the
   update command.
   If you wish to delete records, you must use the,
   delete command, with a directory as a parameter.
   This will remove all records that match the files below that root
   directory.