Patent GB-1280483-A (GB)
Title: Method and means for generating compressed keys
IPC: G06F12/00
Filed: 1969-12-30
Abstract: 1280483 Information retrieval; calculating INTERNATIONAL BUSINESS MACHINES CORP 30 Dec 1969 [3 Jan 1969] 63202/69 Headings G4A and G4C] Compressed keys, for information retrieval, are generated from a source index of uncompressed keys by accessing each key and its next key in a sorted sequence to obtain a pair of keys and generating a compressed key for one of them using the other. Each key is compared with the next to determine the highest-order unequal byte position (called the difference position). If the difference position for this pair of keys is to low order of the difference position for the preceding pair (the second key of which is the first key of the present pair) the bytes in the second key, say, of the present pair from after the "preceding" difference position up to and including the "present" difference position are included as key bytes in the compressed key being produced for the uncompressed key from which the bytes come, except that the byte to high order of this selected set is also included if no key bytes were included in the preceding compressed key (see below). If the present difference position is to high order of the preceding difference position, no key bytes are placed in the compressed key. If the present and preceding difference positions are the same position, the byte at this position alone is taken as a key byte in the compressed key or no byte is, alternately in the case of a sequence of same difference positions. Alternatively, in a modification, the difference position byte is always taken in this case. Each uncompressed key has a length field for the key bytes, the key bytes themselves, a length field for a pointer, and the pointer itself. The pointer directly or indirectly (i.e. via one or more further pointers) gives the location of the item of information associated with the key. Each compressed key has a length field for the key bytes in it, a length field for the sequence of key bytes in the uncompressed key which were not included in the compressed key but were to high order of the bytes which were included, the key bytes themselves, and (copied from one of the uncompressed keys) the pointer length field and the pointer. If either of the first two length fields of the compressed key mentioned requires more bit positions than those allocated, a particular code is placed in the field as a signal that an extended field follows before the key bytes, the extended field holding the length value. Extra key bytes can be included in the compressed key, e.g. for error detection or correction. One possibility mentioned is to include the first byte to low order of the difference position but increased in value by one (i.e. to the next character in the "alphabet" used), and if it cannot be so increased (due to being the last character in the "alphabet") further bytes are included until one is found which can. The apparatus used includes a source memory for the uncompressed keys, an adder the latched output of which can be signtested and zero-tested, a set of registers fed from the adder output and the source memory and feeding the adder, and a destination memory for the compressed keys fed from the adder output. One input to the adder has a complementer which can pass its input in true or complemented form or with one or two added. The registers include two address registers for the source memory and one for the destination memory. The compressed keys may be searched as in Specification 1,280,485 (referred to). Specification 1,280,484 is also referred to.