Patent ID: 8566324

Claim:
A method of using a computer to represent an inverted list record containing a key and one or more pointers, the number of said pointers being n, said pointers being logical or physical pointers, by n records, the i-th record including the key of said inverted list record followed by the i-th pointer in said inverted list record, where each record is stored by said computer in an index structure organized by data pages and said computer operating for implementing a prefix compression, said prefix compression being obtained by identifying the common prefix that the current record to be compressed has in common with the previous record in the page, said common prefix being empty if the current record is the first record in the page, said record being stored as the length of the common prefix and said record without the common prefix, where each group of pointers with contiguous values is represented by a single record containing the key of said inverted list, the lowest pointer value in the group of pointers, and the difference between the highest pointer value in the group and the lowest pointer value in the group, said group having one or more pointers, further characterized by using the computer for computing an intersection of N inverted lists, each list J having a cursor C[J] with a component C[J].pos identifying a current position in the ordered list of records, and a component C[J].cont representing a range of contiguous pointers in the form <ps, pe>, where ps identifies the first pointer in a range and pe the last pointer in the range, C[J].cont being set when the current record identified by C[J].pos is read and being derived from the current record <K, p, delta>, where p is the first pointer in the range, and delta is the length of the interval of contiguous pointers, by setting pS=P and pe=ps+delta and further characterized by the computer carrying out the following steps: a. compute minp as the minimum pe for all the cursors and maxp as the maximum ps for all the cursors; b. if min p>=maxp then output <maxp, minp> and advance each cursor to minp+1, otherwise advance the cursor with the minimum pe to the next element, iterate in both cases steps a and b until any cursor reaches the end of file during advancing.