TermsDict(TermsDictEntry entry, IndexInput data) throws IOException { this.entry = entry; RandomAccessInput addressesSlice = data.randomAccessSlice(entry.termsAddressesOffset, entry.termsAddressesLength); blockAddresses = DirectMonotonicReader.getInstance(entry.termsAddressesMeta, addressesSlice); bytes = data.slice("terms", entry.termsDataOffset, entry.termsDataLength); blockMask = (1L << entry.termsDictBlockShift) - 1; RandomAccessInput indexAddressesSlice = data.randomAccessSlice(entry.termsIndexAddressesOffset, entry.termsIndexAddressesLength); indexAddresses = DirectMonotonicReader.getInstance(entry.termsIndexAddressesMeta, indexAddressesSlice); indexBytes = data.slice("terms-index", entry.termsIndexOffset, entry.termsIndexLength); term = new BytesRef(entry.maxTermLength); }
final RandomAccessInput slice = data.randomAccessSlice(entry.valuesOffset, entry.valuesLength); if (entry.blockShift >= 0) { final int shift = entry.blockShift;
final RandomAccessInput slice = data.randomAccessSlice(entry.normsOffset, entry.numDocsWithField * (long) entry.bytesPerNorm); switch (entry.bytesPerNorm) { case 1: final RandomAccessInput slice = data.randomAccessSlice(entry.normsOffset, entry.numDocsWithField * (long) entry.bytesPerNorm); switch (entry.bytesPerNorm) { case 1:
final RandomAccessInput slice = data.randomAccessSlice(entry.ordsOffset, entry.ordsLength); final LongValues ords = DirectReader.getInstance(slice, entry.bitsPerValue); final RandomAccessInput addressesInput = data.randomAccessSlice(entry.addressesOffset, entry.addressesLength); final LongValues addresses = DirectMonotonicReader.getInstance(entry.addressesMeta, addressesInput);
final RandomAccessInput slice = data.randomAccessSlice(entry.valuesOffset, entry.valuesLength); if (entry.blockShift >= 0) { final RandomAccessInput slice = data.randomAccessSlice(entry.valuesOffset, entry.valuesLength); if (entry.blockShift >= 0) {
final RandomAccessInput slice = data.randomAccessSlice(entry.ordsOffset, entry.ordsLength); ords = DirectReader.getInstance(slice, entry.bitsPerValue);
final RandomAccessInput addressesInput = data.randomAccessSlice(entry.addressesOffset, entry.addressesLength); final LongValues addresses = DirectMonotonicReader.getInstance(entry.addressesMeta, addressesInput);
} else { final RandomAccessInput addressesData = this.data.randomAccessSlice(entry.addressesOffset, entry.addressesLength); final LongValues addresses = DirectMonotonicReader.getInstance(entry.addressesMeta, addressesData); return new DenseBinaryDocValues(maxDoc) { } else { final RandomAccessInput addressesData = this.data.randomAccessSlice(entry.addressesOffset, entry.addressesLength); final LongValues addresses = DirectMonotonicReader.getInstance(entry.addressesMeta, addressesData); return new SparseBinaryDocValues(disi) {
/** returns an address instance for sortedset ordinal lists */ private LongValues getOrdIndexInstance(FieldInfo field, NumericEntry entry) throws IOException { RandomAccessInput data = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset); return DirectMonotonicReader.getInstance(entry.monotonicMeta, data); }
/** returns an address instance for sortedset ordinal lists */ private LongValues getOrdIndexInstance(FieldInfo field, NumericEntry entry) throws IOException { RandomAccessInput data = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset); return DirectMonotonicReader.getInstance(entry.monotonicMeta, data); }
/** returns an address instance for sortedset ordinal lists */ private LongValues getOrdIndexInstance(FieldInfo field, NumericEntry entry) throws IOException { RandomAccessInput data = this.data.randomAccessSlice(entry.offset, entry.endOffset - entry.offset); return DirectMonotonicReader.getInstance(entry.monotonicMeta, data); }
private Bits getMissingBits(final long offset) throws IOException { if (offset == -1) { return new Bits.MatchAllBits(maxDoc); } else { int length = (int) ((maxDoc + 7L) >>> 3); final RandomAccessInput in = data.randomAccessSlice(offset, length); return new Bits() { @Override public boolean get(int index) { try { return (in.readByte(index >> 3) & (1 << (index & 7))) != 0; } catch (IOException e) { throw new RuntimeException(e); } } @Override public int length() { return maxDoc; } }; } }
private Bits getMissingBits(final long offset) throws IOException { if (offset == -1) { return new Bits.MatchAllBits(maxDoc); } else { int length = (int) ((maxDoc + 7L) >>> 3); final RandomAccessInput in = data.randomAccessSlice(offset, length); return new Bits() { @Override public boolean get(int index) { try { return (in.readByte(index >> 3) & (1 << (index & 7))) != 0; } catch (IOException e) { throw new RuntimeException(e); } } @Override public int length() { return maxDoc; } }; } }
private SparseBits getSparseLiveBits(NumericEntry entry) throws IOException { final RandomAccessInput docIdsData = this.data.randomAccessSlice(entry.missingOffset, entry.offset - entry.missingOffset); final LongValues docIDs = DirectMonotonicReader.getInstance(entry.monotonicMeta, docIdsData); return new SparseBits(maxDoc, entry.numDocsWithValue, docIDs); }
private SparseBits getSparseLiveBits(NumericEntry entry) throws IOException { final RandomAccessInput docIdsData = this.data.randomAccessSlice(entry.missingOffset, entry.offset - entry.missingOffset); final LongValues docIDs = DirectMonotonicReader.getInstance(entry.monotonicMeta, docIdsData); return new SparseBits(maxDoc, entry.numDocsWithValue, docIDs); }
private SparseNumericDocValues getSparseNumericDocValues(NumericEntry entry) throws IOException { final RandomAccessInput docIdsData = this.data.randomAccessSlice(entry.missingOffset, entry.offset - entry.missingOffset); final LongValues docIDs = DirectMonotonicReader.getInstance(entry.monotonicMeta, docIdsData); final LongValues values = getNumeric(entry.nonMissingValues); // cannot be sparse return new SparseNumericDocValues(Math.toIntExact(entry.numDocsWithValue), docIDs, values); }
TermsDict(TermsDictEntry entry, IndexInput data) throws IOException { this.entry = entry; RandomAccessInput addressesSlice = data.randomAccessSlice(entry.termsAddressesOffset, entry.termsAddressesLength); blockAddresses = DirectMonotonicReader.getInstance(entry.termsAddressesMeta, addressesSlice); bytes = data.slice("terms", entry.termsDataOffset, entry.termsDataLength); blockMask = (1L << entry.termsDictBlockShift) - 1; RandomAccessInput indexAddressesSlice = data.randomAccessSlice(entry.termsIndexAddressesOffset, entry.termsIndexAddressesLength); indexAddresses = DirectMonotonicReader.getInstance(entry.termsIndexAddressesMeta, indexAddressesSlice); indexBytes = data.slice("terms-index", entry.termsIndexOffset, entry.termsIndexLength); term = new BytesRef(entry.maxTermLength); }
private Bits getLiveBits(final long offset, final int count) throws IOException { if (offset == ALL_MISSING) { return new Bits.MatchNoBits(count); } else if (offset == ALL_LIVE) { return new Bits.MatchAllBits(count); } else { int length = (int) ((count + 7L) >>> 3); final RandomAccessInput in = data.randomAccessSlice(offset, length); return new Bits() { @Override public boolean get(int index) { try { return (in.readByte(index >> 3) & (1 << (index & 7))) != 0; } catch (IOException e) { throw new RuntimeException(e); } } @Override public int length() { return count; } }; } }
private LegacyBinaryDocValues getVariableBinary(FieldInfo field, final BinaryEntry bytes) throws IOException { final RandomAccessInput addressesData = this.data.randomAccessSlice(bytes.addressesOffset, bytes.addressesEndOffset - bytes.addressesOffset); final LongValues addresses = DirectMonotonicReader.getInstance(bytes.addressesMeta, addressesData); final IndexInput data = this.data.slice("var-binary", bytes.offset, bytes.addressesOffset - bytes.offset); final BytesRef term = new BytesRef(Math.max(0, bytes.maxLength)); final byte buffer[] = term.bytes; return new LongBinaryDocValues() { @Override public BytesRef get(long id) { long startAddress = addresses.get(id); long endAddress = addresses.get(id+1); int length = (int) (endAddress - startAddress); try { data.seek(startAddress); data.readBytes(buffer, 0, length); term.length = length; return term; } catch (IOException e) { throw new RuntimeException(e); } } }; }
private BinaryDocValues getVariableBinary(FieldInfo field, final BinaryEntry bytes) throws IOException { final RandomAccessInput addressesData = this.data.randomAccessSlice(bytes.addressesOffset, bytes.addressesEndOffset - bytes.addressesOffset); final LongValues addresses = DirectMonotonicReader.getInstance(bytes.addressesMeta, addressesData); final IndexInput data = this.data.slice("var-binary", bytes.offset, bytes.addressesOffset - bytes.offset); final BytesRef term = new BytesRef(Math.max(0, bytes.maxLength)); final byte buffer[] = term.bytes; return new LongBinaryDocValues() { @Override public BytesRef get(long id) { long startAddress = addresses.get(id); long endAddress = addresses.get(id+1); int length = (int) (endAddress - startAddress); try { data.seek(startAddress); data.readBytes(buffer, 0, length); term.length = length; return term; } catch (IOException e) { throw new RuntimeException(e); } } }; }