@Override protected void writePostingNotDocid(Posting _p) throws IOException { BlockPosting p = (BlockPosting)_p; output.writeUnary(p.getFrequency()); final int positions[] = p.getPositions(); final int l = positions.length; output.writeUnary(l+1); if (l== 0) return; //System.err.println("posting has " + l + "blocks"); output.writeGamma(positions[0]+1); for(int i=1;i<l;i++) { output.writeGamma(positions[i] - positions[i-1]); } }
protected void testInverted(Index index) throws Exception { PostingIndexInputStream piis = (PostingIndexInputStream) index.getIndexStructureInputStream("inverted"); IterablePosting ip = null; BlockPosting bp = null; while(piis.hasNext()) { ip = piis.getNextPostings(); if (ip == null) continue; bp = (BlockPosting) ip; while(ip.next() != IterablePosting.EOL) { int tf = bp.getFrequency(); int[] blocks = bp.getPositions(); assertTrue("blocks.length="+blocks.length + " tf="+tf, blocks.length <= tf); assertTrue("blocks.length="+blocks.length + " tf="+tf + ", blocks longer than max "+ maxBlocks, blocks.length <= maxBlocks); } } piis.close(); } }