/** * This load a chunk (just the document ids!) and decompress it * * @throws IOException */ protected final void load() throws IOException { chunkSize = (numberOfEntries > chunkSize) ? chunkSize : numberOfEntries; idsCodec.decompress(input, ids, chunkSize); Delta.inverseDelta(ids, chunkSize); currentPosting = -1; blkCnt = 0; decompressed = false; }
/** * Read the posting components from the chunk * * @param pos the posting to load (as index in the internal arrays) * @throws IOException */ protected final void get(final int pos) throws IOException { if (!decompressed) decompress(); id = ids[pos]; tf = tfs[pos]; if (fieldsCount > 0) { for (int j = 0; j < fieldsCount; j++) fields[j] = fieldsMatrix[j][pos] - 1; // -1, to deal with gamma and unary codec } if (hasBlocks > 0) { bf = bfs[pos]; for (int i = currentPosting + 1; i < pos; i++) blkCnt += bfs[i]; blocks = Arrays.copyOfRange(blocksMatrix, blkCnt, blkCnt + bf); Delta.inverseDelta(blocks, blocks.length); blkCnt += bf; // <-- because currentPosting may start from -1 } numberOfEntries -= pos - currentPosting; currentPosting = pos; }