public void init(long skipPointer, long docBasePointer, long posBasePointer, long payBasePointer, int df) throws IOException { super.init(skipPointer, trim(df)); lastDocPointer = docBasePointer; lastPosPointer = posBasePointer; lastPayPointer = payBasePointer; Arrays.fill(docPointer, docBasePointer); if (posPointer != null) { Arrays.fill(posPointer, posBasePointer); if (payPointer != null) { Arrays.fill(payPointer, payBasePointer); } } else { assert posBasePointer == 0; } }
/** Skips entries to the first beyond the current whose document number is * greater than or equal to <i>target</i>. Returns the current doc count. */ public int skipTo(int target) throws IOException { // walk up the levels until highest level is found that has a skip // for this target int level = 0; while (level < numberOfSkipLevels - 1 && target > skipDoc[level + 1]) { level++; } while (level >= 0) { if (target > skipDoc[level]) { if (!loadNextSkip(level)) { continue; } } else { // no more skips on this level, go down one level if (level > 0 && lastChildPointer > skipStream[level - 1].getFilePointer()) { seekChild(level - 1); } level--; } } return numSkipped[0] - skipInterval[0] - 1; }
private boolean loadNextSkip(int level) throws IOException { // we have to skip, the target document is greater than the current // skip list entry setLastSkipData(level); numSkipped[level] += skipInterval[level]; // numSkipped may overflow a signed int, so compare as unsigned. if (Integer.compareUnsigned(numSkipped[level], docCount) > 0) { // this skip list is exhausted skipDoc[level] = Integer.MAX_VALUE; if (numberOfSkipLevels > level) numberOfSkipLevels = level; return false; } // read next skip entry skipDoc[level] += readSkipData(level, skipStream[level]); if (level != 0) { // read the child pointer if we are not on the leaf level childPointer[level] = skipStream[level].readVLong() + skipPointer[level - 1]; } return true; }
@Override protected void setLastSkipData(int level) { super.setLastSkipData(level); lastDocPointer = docPointer[level]; if (posPointer != null) { lastPosPointer = posPointer[level]; lastPosBufferUpto = posBufferUpto[level]; if (payPointer != null) { lastPayPointer = payPointer[level]; } if (payloadByteUpto != null) { lastPayloadByteUpto = payloadByteUpto[level]; } } }
@Override protected void seekChild(int level) throws IOException { super.seekChild(level); docPointer[level] = lastDocPointer; if (posPointer != null) { posPointer[level] = lastPosPointer; posBufferUpto[level] = lastPosBufferUpto; if (payloadByteUpto != null) { payloadByteUpto[level] = lastPayloadByteUpto; } if (payPointer != null) { payPointer[level] = lastPayPointer; } } }
private boolean loadNextSkip(int level) throws IOException { // we have to skip, the target document is greater than the current // skip list entry setLastSkipData(level); numSkipped[level] += skipInterval[level]; // numSkipped may overflow a signed int, so compare as unsigned. if (Integer_compareUnsigned(numSkipped[level], docCount) > 0) { // this skip list is exhausted skipDoc[level] = Integer.MAX_VALUE; if (numberOfSkipLevels > level) numberOfSkipLevels = level; return false; } // read next skip entry skipDoc[level] += readSkipData(level, skipStream[level]); if (level != 0) { // read the child pointer if we are not on the leaf level childPointer[level] = skipStream[level].readVLong() + skipPointer[level - 1]; } return true; }
/** Initializes the reader, for reuse on a new term. */ public void init(long skipPointer, int df) throws IOException { this.skipPointer[0] = skipPointer; this.docCount = df; assert skipPointer >= 0 && skipPointer <= skipStream[0].length() : "invalid skip pointer: " + skipPointer + ", length=" + skipStream[0].length(); Arrays.fill(skipDoc, 0); Arrays.fill(numSkipped, 0); Arrays.fill(childPointer, 0); for (int i = 1; i < numberOfSkipLevels; i++) { skipStream[i] = null; } loadSkipLevels(); }
@Override public int skipTo(final int target) throws IOException { // multiply by blockSize to get the doc counts. return super.skipTo(target) * blockSize; }
@Override protected void setLastSkipData(int level) { super.setLastSkipData(level); lastFreqPointer = freqPointer[level]; lastProxPointer = proxPointer[level]; lastPayloadLength = payloadLength[level]; lastOffsetLength = offsetLength[level]; }
@Override protected void seekChild(int level) throws IOException { super.seekChild(level); freqPointer[level] = lastFreqPointer; proxPointer[level] = lastProxPointer; payloadLength[level] = lastPayloadLength; offsetLength[level] = lastOffsetLength; }
/** Initializes the reader, for reuse on a new term. */ public void init(long skipPointer, int df) throws IOException { this.skipPointer[0] = skipPointer; this.docCount = df; assert skipPointer >= 0 && skipPointer <= skipStream[0].length() : "invalid skip pointer: " + skipPointer + ", length=" + skipStream[0].length(); Arrays.fill(skipDoc, 0); Arrays.fill(numSkipped, 0); Arrays.fill(childPointer, 0); for (int i = 1; i < numberOfSkipLevels; i++) { skipStream[i] = null; } loadSkipLevels(); }
@Override public int skipTo(final int target) throws IOException { // multiply by blockSize to get the doc counts. return super.skipTo(target) * blockSize; }
/** Skips entries to the first beyond the current whose document number is * greater than or equal to <i>target</i>. Returns the current doc count. */ public int skipTo(int target) throws IOException { // walk up the levels until highest level is found that has a skip // for this target int level = 0; while (level < numberOfSkipLevels - 1 && target > skipDoc[level + 1]) { level++; } while (level >= 0) { if (target > skipDoc[level]) { if (!loadNextSkip(level)) { continue; } } else { // no more skips on this level, go down one level if (level > 0 && lastChildPointer > skipStream[level - 1].getFilePointer()) { seekChild(level - 1); } level--; } } return numSkipped[0] - skipInterval[0] - 1; }
private boolean loadNextSkip(int level) throws IOException { // we have to skip, the target document is greater than the current // skip list entry setLastSkipData(level); numSkipped[level] += skipInterval[level]; if (numSkipped[level] > docCount) { // this skip list is exhausted skipDoc[level] = Integer.MAX_VALUE; if (numberOfSkipLevels > level) numberOfSkipLevels = level; return false; } // read next skip entry skipDoc[level] += readSkipData(level, skipStream[level]); if (level != 0) { // read the child pointer if we are not on the leaf level childPointer[level] = skipStream[level].readVLong() + skipPointer[level - 1]; } return true; }
@Override protected void setLastSkipData(int level) { super.setLastSkipData(level); lastDocPointer = docPointer[level]; if (posPointer != null) { lastPosPointer = posPointer[level]; lastPosBufferUpto = posBufferUpto[level]; if (payPointer != null) { lastPayPointer = payPointer[level]; } if (payloadByteUpto != null) { lastPayloadByteUpto = payloadByteUpto[level]; } } }
@Override protected void seekChild(final int level) throws IOException { super.seekChild(level); }
/** Per-term initialization. */ public void init(long skipPointer, long freqBasePointer, long proxBasePointer, int df, boolean storesPayloads, boolean storesOffsets) throws IOException { super.init(skipPointer, df); this.currentFieldStoresPayloads = storesPayloads; this.currentFieldStoresOffsets = storesOffsets; lastFreqPointer = freqBasePointer; lastProxPointer = proxBasePointer; Arrays.fill(freqPointer, freqBasePointer); Arrays.fill(proxPointer, proxBasePointer); Arrays.fill(payloadLength, 0); Arrays.fill(offsetLength, 0); }
/** Initializes the reader, for reuse on a new term. */ public void init(long skipPointer, int df) throws IOException { this.skipPointer[0] = skipPointer; this.docCount = df; assert skipPointer >= 0 && skipPointer <= skipStream[0].length() : "invalid skip pointer: " + skipPointer + ", length=" + skipStream[0].length(); Arrays.fill(skipDoc, 0); Arrays.fill(numSkipped, 0); Arrays.fill(childPointer, 0); for (int i = 1; i < numberOfSkipLevels; i++) { skipStream[i] = null; } loadSkipLevels(); }
/** Skips entries to the first beyond the current whose document number is * greater than or equal to <i>target</i>. Returns the current doc count. */ public int skipTo(int target) throws IOException { // walk up the levels until highest level is found that has a skip // for this target int level = 0; while (level < numberOfSkipLevels - 1 && target > skipDoc[level + 1]) { level++; } while (level >= 0) { if (target > skipDoc[level]) { if (!loadNextSkip(level)) { continue; } } else { // no more skips on this level, go down one level if (level > 0 && lastChildPointer > skipStream[level - 1].getFilePointer()) { seekChild(level - 1); } level--; } } return numSkipped[0] - skipInterval[0] - 1; }
private boolean loadNextSkip(int level) throws IOException { // we have to skip, the target document is greater than the current // skip list entry setLastSkipData(level); numSkipped[level] += skipInterval[level]; // numSkipped may overflow a signed int, so compare as unsigned. if (Integer.compareUnsigned(numSkipped[level], docCount) > 0) { // this skip list is exhausted skipDoc[level] = Integer.MAX_VALUE; if (numberOfSkipLevels > level) numberOfSkipLevels = level; return false; } // read next skip entry skipDoc[level] += readSkipData(level, skipStream[level]); if (level != 0) { // read the child pointer if we are not on the leaf level childPointer[level] = skipStream[level].readVLong() + skipPointer[level - 1]; } return true; }