Patent GB-1280484-A (GB)
Title: Compressed index method and means
IPC: G06F17/30
Filed: 1969-12-30
Abstract: 1280484 Information retrieval INTERNATIONAL BUSINESS MACHINES CORP 30 Dec 1969 [3 Jan 1969] 63203/69 Heading G4C A compressed key is generated from a sequence of sorted uncompressed keys by counting pairs of equal correspondingly-positioned bytes in two successive uncompressed keys from the highest-order position until an unequal pair is reached and registering a byte from the second of the two keys at the position indicated by the count, and (claimed separately) during searching of compressed keys using a search argument, where each compressed key includes a control field representing the above position of the unequal pair, the control fields of two compressed keys are compared. Generating compressed keys.-Uncompressed keys arranged in ascending order, are taken in pairs in that order (the second key of one pair being the first key of the next) and corresponding bytes are compared starting at high order, the number of byte positions to high order of the first unequal byte pair being counted and stored as a control field in a compressed key produced from the pair of uncompressed keys together with one or more (key) bytes from the second key of the pair. If the "unequal" byte position is at the same position as, or a higher-order position than, the "unequal" byte position from the preceding pair of uncompressed keys, only the byte from this position is included in the compressed key, but otherwise each byte position which is to low order of the "unequal" position of this preceding pair but not to low of the "unequal" position of the current pair, is included. For the first pair of uncompressed keys, the "unequal" byte position of the "preceding" pair is taken as being to high-order of the highest-order position. A pointer address accompanying each uncompressed key (and indicating associated information) is stored after the compressed key generated from the pair of uncompressed keys having the given uncompressed key as its first key. The sequence of uncompressed keys is preceded in buffer memory by bytes specifying the number of bytes allowed in the buffer memory for each uncompressed key and for each pointer, and a byte specifying the level of the indexing viz. whether there is a pointer after every one or two PK fields in the compressed index (P being the control field mentioned above and K the one or more key bytes), these bytes being retained in the buffer memory as the uncompressed index is gradually replaced by the compressed index during generation. Searching compressed keys.-Successive search argument bytes, starting from high-order, are compared with the compressed key bytes to detect equality with key bytes which had corresponding positions in the uncompressed keys, going to the next-lower-order search byte on such equality and to the next compressed key if the search byte is greater than the key byte at such corresponding positions. An "equal" counter indicates the number of search bytes found equal to the corresponding key bytes, being incremented on every equality between key and search bytes which occurs when this counter's content (which indicates the search byte position) is equal to the "uncompressed-key position" of the key byte. The latter position is given by the control field, suitably incremented in a counter. The contents of this counter are also compared with the contents of a register loaded with the next control field to indicate when all key bytes of a given compressed key have been taken, and to control loading of the counter from the register this occurring on entering a new compressed key if the new control field is less than the counter contents. The search is ended on finding a search byte less than the key byte with corresponding "uncompressed-key" position, the corresponding pointer being used to retrieve the information associated with the key. If a comparison of this with the search argument indicates inequality, the search argument was not originally in the uncompressed index. To avoid search ambiguity, the lowest order search argument byte should be followed by a byte less than any possible key byte. Specifications 1,280,483 and 1,280,485 are referred to.