@Override public long nextOrd() { if (input.eof()) { return NO_MORE_ORDS; } else { currentOrd += input.readVLong(); return currentOrd; } }
@Override public long nextOrd() { if (input.eof()) { return NO_MORE_ORDS; } else { currentOrd += input.readVLong(); return currentOrd; } }
@Override public void setDocument(int docId) { bytes = values.get(docId); in.reset(bytes.bytes, bytes.offset, bytes.length); if (!in.eof()) { // first value uses vLong on top of zig-zag encoding, then deltas are encoded using vLong long previousValue = longs[0] = ByteUtils.zigZagDecode(ByteUtils.readVLong(in)); count = 1; while (!in.eof()) { longs = ArrayUtil.grow(longs, count + 1); previousValue = longs[count++] = previousValue + ByteUtils.readVLong(in); } } else { count = 0; } }
/** Load current stats shard */ final void refillStats() throws IOException { final int offset = statsBlockOrd * numSkipInfo; final int statsFP = (int)skipInfo[offset]; statsReader.setPosition(statsFP); for (int i = 0; i < INTERVAL && !statsReader.eof(); i++) { int code = statsReader.readVInt(); if (hasFreqs()) { docFreq[i] = (code >>> 1); if ((code & 1) == 1) { totalTermFreq[i] = docFreq[i]; } else { totalTermFreq[i] = docFreq[i] + statsReader.readVLong(); } } else { docFreq[i] = code; } } }
/** Load current metadata shard */ final void refillMetadata() throws IOException { final int offset = metaBlockOrd * numSkipInfo; final int metaLongsFP = (int)skipInfo[offset + 1]; final int metaBytesFP = (int)skipInfo[offset + 2]; metaLongsReader.setPosition(metaLongsFP); for (int j = 0; j < longsSize; j++) { longs[0][j] = skipInfo[offset + 3 + j] + metaLongsReader.readVLong(); } bytesStart[0] = metaBytesFP; bytesLength[0] = (int)metaLongsReader.readVLong(); for (int i = 1; i < INTERVAL && !metaLongsReader.eof(); i++) { for (int j = 0; j < longsSize; j++) { longs[i][j] = longs[i-1][j] + metaLongsReader.readVLong(); } bytesStart[i] = bytesStart[i-1] + bytesLength[i-1]; bytesLength[i] = (int)metaLongsReader.readVLong(); } }