for(int i=0;i<fieldCount+3;i++)
documentTerms[i] = new int[df];
final TIntArrayList blockids = new TIntArrayList(df); //ideally we'd have TF here
try{
final BitIn file = this.file[pointer.getFileNumber()].readReset(startOffset, startBitOffset);
if (loadTagInformation) { //if there are tag information to process
//documentTerms[2] = new int[df];
documentTerms[0][0] = file.readGamma() - 1;
documentTerms[1][0] = file.readUnary();
for(int fi=0;fi < fieldCount;fi++)
documentTerms[2+fi][0] = file.readUnary() -1;
int blockfreq = documentTerms[2+fieldCount][0] = file.readUnary() - DocumentBlockCountDelta;
int tmpBlocks[] = new int[blockfreq];
int previousBlockId = -1;
for(int j=0;j<blockfreq;j++)
{
tmpBlocks[j] = previousBlockId = file.readGamma() + previousBlockId;
}
blockids.add(tmpBlocks);
for (int i = 1; i < df; i++) {
documentTerms[0][i] = file.readGamma() + documentTerms[0][i - 1];
documentTerms[1][i] = file.readUnary();
for(int fi=0;fi < fieldCount;fi++)
documentTerms[2+fi][0] = file.readUnary() -1;
blockfreq = documentTerms[2+fieldCount][i] = file.readUnary() - DocumentBlockCountDelta;
tmpBlocks = new int[blockfreq];
previousBlockId = -1;
for(int j=0;j<blockfreq;j++)
{
tmpBlocks[j] = previousBlockId = file.readGamma() + previousBlockId;
}
blockids.add(tmpBlocks);
}
} else { //no tag information to process
documentTerms[0][0] = file.readGamma() - 1;
documentTerms[1][0] = file.readUnary();
int blockfreq = documentTerms[2][0] = file.readUnary() - DocumentBlockCountDelta;
int tmpBlocks[] = new int[blockfreq];
int previousBlockId = -1;
for(int j=0;j<blockfreq;j++)
{
tmpBlocks[j] = previousBlockId = file.readGamma() + previousBlockId;
}
blockids.add(tmpBlocks);
for (int i = 1; i < df; i++) {
documentTerms[0][i] = file.readGamma() + documentTerms[0][i - 1];
documentTerms[1][i] = file.readUnary();
blockfreq = documentTerms[2][i] = file.readUnary() - DocumentBlockCountDelta;
tmpBlocks = new int[blockfreq];
previousBlockId = -1;
for(int j=0;j<blockfreq;j++)
{
tmpBlocks[j] = previousBlockId = file.readGamma() + previousBlockId;
}
blockids.add(tmpBlocks);
}
}
documentTerms[documentTerms.length-1] = blockids.toNativeArray();