@Override public int nextDoc() throws IOException { while (true) { if (count == docFreq) { return doc = NO_MORE_DOCS; } count++; // TODO: maybe we should do the 1-bit trick for encoding // freq=1 case? // Decode next doc // System.out.println(" sep d&p read doc"); accum += docReader.next(); // System.out.println(" sep d&p read freq"); freq = freqReader.next(); pendingPosCount += freq; if (liveDocs == null || liveDocs.get(accum)) { break; } } position = 0; return (doc = accum); }
@Override public int nextDoc() throws IOException { while (true) { if (count == docFreq) { return doc = NO_MORE_DOCS; } count++; // Decode next doc // System.out.println("decode docDelta:"); accum += docReader.next(); if (!omitTF) { // System.out.println("decode freq:"); freq = freqReader.next(); } if (liveDocs == null || liveDocs.get(accum)) { break; } } return (doc = accum); }
@Override public int nextPosition() throws IOException { if (posSeekPending) { posIndex.seek(posReader); payloadIn.seek(payloadFP); posSeekPending = false; } // scan over any docs that were iterated without their // positions while (pendingPosCount > freq) { final int code = posReader.next(); if (storePayloads && (code & 1) != 0) { // Payload length has changed payloadLength = posReader.next(); assert payloadLength >= 0; } pendingPosCount--; position = 0; pendingPayloadBytes += payloadLength; } final int code = posReader.next(); if (storePayloads) { if ((code & 1) != 0) { // Payload length has changed payloadLength = posReader.next(); assert payloadLength >= 0; } position += code >>> 1; pendingPayloadBytes += payloadLength; payloadPending = payloadLength > 0; } else { position += code; } pendingPosCount--; assert pendingPosCount >= 0; return position; }