/** * Returns the length of {@code currentTerm} needed for use as a sort key. * so that {@link BytesRef#compareTo(BytesRef)} still returns the same result. * This method assumes currentTerm comes after priorTerm. */ public static int sortKeyLength(final BytesRef priorTerm, final BytesRef currentTerm) { return bytesDifference(priorTerm, currentTerm) + 1; }
@Override public void startTerm(BytesRef term, int freq) throws IOException { assert freq >= 1; final int prefix; if (lastTerm.length == 0) { // no previous term: no bytes to write prefix = 0; } else { prefix = StringHelper.bytesDifference(lastTerm, term); } curField.addTerm(freq, prefix, term.length - prefix); termSuffixes.writeBytes(term.bytes, term.offset + prefix, term.length - prefix); // copy last term if (lastTerm.bytes.length < term.length) { lastTerm.bytes = new byte[ArrayUtil.oversize(term.length, 1)]; } lastTerm.offset = 0; lastTerm.length = term.length; System.arraycopy(term.bytes, term.offset, lastTerm.bytes, 0, term.length); }
/** add a term. This fully consumes in the incoming {@link BytesRef}. */ public void add(String field, BytesRef bytes) { assert lastTerm.equals(new Term("")) || new Term(field, bytes).compareTo(lastTerm) > 0; try { final int prefix; if (size > 0 && field.equals(lastTerm.field)) { // same field as the last term prefix = StringHelper.bytesDifference(lastTerm.bytes, bytes); output.writeVInt(prefix << 1); } else { // field change prefix = 0; output.writeVInt(1); output.writeString(field); } int suffix = bytes.length - prefix; output.writeVInt(suffix); output.writeBytes(bytes.bytes, bytes.offset + prefix, suffix); lastTermBytes.copyBytes(bytes); lastTerm.bytes = lastTermBytes.get(); lastTerm.field = field; size += 1; } catch (IOException e) { throw new RuntimeException(e); } }
data.writeBytes(term.bytes, term.offset, term.length); } else { final int prefixLength = StringHelper.bytesDifference(previous.get(), term); final int suffixLength = term.length - prefixLength; assert suffixLength > 0; // terms are unique
/** * Returns the length of {@code currentTerm} needed for use as a sort key. * so that {@link BytesRef#compareTo(BytesRef)} still returns the same result. * This method assumes currentTerm comes after priorTerm. */ public static int sortKeyLength(final BytesRef priorTerm, final BytesRef currentTerm) { return bytesDifference(priorTerm, currentTerm) + 1; }
/** * Returns the length of {@code currentTerm} needed for use as a sort key. * so that {@link BytesRef#compareTo(BytesRef)} still returns the same result. * This method assumes currentTerm comes after priorTerm. */ public static int sortKeyLength(final BytesRef priorTerm, final BytesRef currentTerm) { return bytesDifference(priorTerm, currentTerm) + 1; }
@Override public void startTerm(BytesRef term, int freq) throws IOException { assert freq >= 1; final int prefix = StringHelper.bytesDifference(lastTerm, term); curField.addTerm(freq, prefix, term.length - prefix); termSuffixes.writeBytes(term.bytes, term.offset + prefix, term.length - prefix); // copy last term if (lastTerm.bytes.length < term.length) { lastTerm.bytes = new byte[ArrayUtil.oversize(term.length, 1)]; } lastTerm.offset = 0; lastTerm.length = term.length; System.arraycopy(term.bytes, term.offset, lastTerm.bytes, 0, term.length); }
@Override public void startTerm(BytesRef term, int freq) throws IOException { assert freq >= 1; final int prefix = StringHelper.bytesDifference(lastTerm, term); curField.addTerm(freq, prefix, term.length - prefix); termSuffixes.writeBytes(term.bytes, term.offset + prefix, term.length - prefix); // copy last term if (lastTerm.bytes.length < term.length) { lastTerm.bytes = new byte[ArrayUtil.oversize(term.length, 1)]; } lastTerm.offset = 0; lastTerm.length = term.length; System.arraycopy(term.bytes, term.offset, lastTerm.bytes, 0, term.length); }
@Override public void startTerm(BytesRef term, int freq) throws IOException { assert freq >= 1; final int prefix; if (lastTerm.length == 0) { // no previous term: no bytes to write prefix = 0; } else { prefix = StringHelper.bytesDifference(lastTerm, term); } curField.addTerm(freq, prefix, term.length - prefix); termSuffixes.writeBytes(term.bytes, term.offset + prefix, term.length - prefix); // copy last term if (lastTerm.bytes.length < term.length) { lastTerm.bytes = new byte[ArrayUtil.oversize(term.length, 1)]; } lastTerm.offset = 0; lastTerm.length = term.length; System.arraycopy(term.bytes, term.offset, lastTerm.bytes, 0, term.length); }
/** add a term. This fully consumes in the incoming {@link BytesRef}. */ public void add(String field, BytesRef bytes) { assert lastTerm.equals(new Term("")) || new Term(field, bytes).compareTo(lastTerm) > 0; try { final int prefix; if (size > 0 && field.equals(lastTerm.field)) { // same field as the last term prefix = StringHelper.bytesDifference(lastTerm.bytes, bytes); output.writeVInt(prefix << 1); } else { // field change prefix = 0; output.writeVInt(1); output.writeString(field); } int suffix = bytes.length - prefix; output.writeVInt(suffix); output.writeBytes(bytes.bytes, bytes.offset + prefix, suffix); lastTermBytes.copyBytes(bytes); lastTerm.bytes = lastTermBytes.get(); lastTerm.field = field; size += 1; } catch (IOException e) { throw new RuntimeException(e); } }
data.writeBytes(term.bytes, term.offset, term.length); } else { final int prefixLength = StringHelper.bytesDifference(previous.get(), term); final int suffixLength = term.length - prefixLength; assert suffixLength > 0; // terms are unique
int sharedPrefix = StringHelper.bytesDifference(lastTerm.get(), v); data.writeVInt(sharedPrefix); data.writeVInt(v.length - sharedPrefix);
int sharedPrefix = Math.min(255, StringHelper.bytesDifference(lastTerm.get(), v)); bytesBuffer.writeByte((byte) sharedPrefix); bytesBuffer.writeBytes(v.bytes, v.offset + sharedPrefix, v.length - sharedPrefix);
int sharedPrefix = Math.min(255, StringHelper.bytesDifference(lastTerm.get(), v)); bytesBuffer.writeByte((byte) sharedPrefix); bytesBuffer.writeBytes(v.bytes, v.offset + sharedPrefix, v.length - sharedPrefix);
int sharedPrefix = Math.min(255, StringHelper.bytesDifference(lastTerm.get(), v)); bytesBuffer.writeByte((byte) sharedPrefix); bytesBuffer.writeBytes(v.bytes, v.offset + sharedPrefix, v.length - sharedPrefix);
int sharedPrefix = Math.min(255, StringHelper.bytesDifference(lastTerm.get(), v)); bytesBuffer.writeByte((byte) sharedPrefix); bytesBuffer.writeBytes(v.bytes, v.offset + sharedPrefix, v.length - sharedPrefix);
int start = StringHelper.bytesDifference(utf8Results[1-utf8Upto].result, utf8Results[1-utf8Upto].length, utf8Results[utf8Upto].result,
int sharedPrefix = StringHelper.bytesDifference(lastTerm.get(), v); data.writeVInt(sharedPrefix); data.writeVInt(v.length - sharedPrefix);
int start = StringHelper.bytesDifference(utf8Results[1-utf8Upto].result, utf8Results[1-utf8Upto].length, utf8Results[utf8Upto].result,