Patent ID: 7734671

Claim:
A method of indexing data on a computer, comprising the steps of: a) receiving data in a computer system, the received data stored in a user-definable storage medium; b) applying Burrows Wheeler transform to create a Ferragina-Manzini index, having rows and columns; c) marking a user-definable number of rows of the Ferragina-Manzini index; d) storing a last column of the Ferragina-Manzini index as a wavelet tree in a user-definable number of data buckets; e) storing the locations of the user-definable number of marked rows in each user-definable number of data buckets; f) creating at least one data blocks, the at least one data blocks comprising the user-definable number of data buckets; g) for each data block, calculating the number of times each character appears in the data block before each user-definable number of data buckets and appending the result to the data block; h) creating a header block, the header block comprising an array containing the number of times each character appears in the last column of the Ferragina-Manzini index before each at least one data blocks, the location of the end of each at least one data blocks and the location of the end of the data; i) appending the header block to the at least one data blocks; j) storing the header block and each at least one data blocks in a user-definable medium; and k) if additional data is received in a computer system, returning to step (a), otherwise stopping.