skipBuffer[level].writeVLong(childPointer);
} else { assert nodeID == 1 || delta > 0: "nodeID=" + nodeID; writeBuffer.writeVLong(delta); return appendBlock(writeBuffer, blocks); long delta = leftBlockFP - minBlockFP; assert nodeID == 1 || delta > 0 : "expected nodeID=1 or delta > 0; got nodeID=" + nodeID + " and delta=" + delta; writeBuffer.writeVLong(delta); } else {
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
if (fieldInfo.getIndexOptions() != IndexOptions.DOCS) { assert state.totalTermFreq >= state.docFreq: state.totalTermFreq + " vs " + state.docFreq; statsWriter.writeVLong(state.totalTermFreq - state.docFreq); for (int pos = 0; pos < longsSize; pos++) { assert longs[pos] >= 0; metaWriter.writeVLong(longs[pos]); if (fieldInfo.getIndexOptions() != IndexOptions.DOCS) { assert state.totalTermFreq >= state.docFreq; statsWriter.writeVLong(state.totalTermFreq - state.docFreq); for (int pos = 0; pos < longsSize; pos++) { assert longs[pos] >= 0; metaWriter.writeVLong(longs[pos]); assert block.fp < startFP; suffixWriter.writeVLong(startFP - block.fp); subIndices.add(block.index);
private void bufferSkip() throws IOException { skipOut.writeVLong(statsOut.getFilePointer() - lastBlockStatsFP); skipOut.writeVLong(metaLongsOut.getFilePointer() - lastBlockMetaLongsFP); skipOut.writeVLong(metaBytesOut.getFilePointer() - lastBlockMetaBytesFP); for (int i = 0; i < longsSize; i++) { skipOut.writeVLong(lastLongs[i] - lastBlockLongs[i]); } lastBlockStatsFP = statsOut.getFilePointer(); lastBlockMetaLongsFP = metaLongsOut.getFilePointer(); lastBlockMetaBytesFP = metaBytesOut.getFilePointer(); System.arraycopy(lastLongs, 0, lastBlockLongs, 0, longsSize); } }
skipBuffer[level].writeVLong(childPointer);
skipBuffer[level].writeVLong(childPointer);
skipBuffer[level].writeVLong(childPointer);
skipBuffer[level].writeVLong(childPointer);
skipBuffer[level].writeVLong(childPointer);
indexBytesWriter.writeVLong(t.skipFP); indexBytesWriter.writeVLong(t.skipFP - lastSkipFP);
public void finishTerm(BytesRef text, BlockTermState state) throws IOException { if (numTerms > 0 && numTerms % SKIP_INTERVAL == 0) { bufferSkip(); } // write term meta data into fst final long longs[] = new long[longsSize]; final long delta = state.totalTermFreq - state.docFreq; if (state.totalTermFreq > 0) { if (delta == 0) { statsOut.writeVInt(state.docFreq<<1|1); } else { statsOut.writeVInt(state.docFreq<<1); statsOut.writeVLong(state.totalTermFreq-state.docFreq); } } else { statsOut.writeVInt(state.docFreq); } postingsWriter.encodeTerm(longs, metaBytesOut, fieldInfo, state, true); for (int i = 0; i < longsSize; i++) { metaLongsOut.writeVLong(longs[i] - lastLongs[i]); lastLongs[i] = longs[i]; } metaLongsOut.writeVLong(metaBytesOut.getFilePointer() - lastMetaBytesFP); builder.add(Util.toIntsRef(text, scratchTerm), numTerms); numTerms++; lastMetaBytesFP = metaBytesOut.getFilePointer(); }
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong(sumTotalTermCount - lastSumTotalTermCount); lastSumTotalTermCount = sumTotalTermCount; sumTotalTermCount += sub.totalTermCount; assert sub.fp > fp; scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
scratchBytes.writeVLong(encodeOutput(fp, hasTerms, isFloor)); if (isFloor) { scratchBytes.writeVInt(blocks.size()-1); scratchBytes.writeVLong((sub.fp - fp) << 1 | (sub.hasTerms ? 1 : 0));
private void finishTerm(BytesRef text, TermStats stats) throws IOException { if (stats.docFreq == 0) { return; } assert postingsWriter.docCount == stats.docFreq; assert buffer2.getFilePointer() == 0; buffer2.writeVInt(stats.docFreq); if (field.getIndexOptions() != IndexOptions.DOCS) { buffer2.writeVLong(stats.totalTermFreq-stats.docFreq); } int pos = (int) buffer2.getFilePointer(); buffer2.writeTo(finalBuffer, 0); buffer2.reset(); final int totalBytes = pos + (int) postingsWriter.buffer.getFilePointer(); if (totalBytes > finalBuffer.length) { finalBuffer = ArrayUtil.grow(finalBuffer, totalBytes); } postingsWriter.buffer.writeTo(finalBuffer, pos); postingsWriter.buffer.reset(); spare.bytes = finalBuffer; spare.length = totalBytes; //System.out.println(" finishTerm term=" + text.utf8ToString() + " " + totalBytes + " bytes totalTF=" + stats.totalTermFreq); //for(int i=0;i<totalBytes;i++) { // System.out.println(" " + Integer.toHexString(finalBuffer[i]&0xFF)); //} builder.add(Util.toIntsRef(text, scratchIntsRef), BytesRef.deepCopyOf(spare)); termCount++; }
bytesWriter.writeVInt(state.docFreq); if (fieldInfo.getIndexOptions() != IndexOptions.DOCS) { bytesWriter.writeVLong(state.totalTermFreq-state.docFreq); postingsWriter.encodeTerm(longs, bufferWriter, fieldInfo, state, absolute); for (int i = 0; i < longsSize; i++) { bytesWriter.writeVLong(longs[i]);