private final void writeTerm(Term term) throws IOException { int start = StringHelper.stringDifference(lastTerm.text, term.text); int length = term.text.length() - start; output.writeVInt(start); // write shared prefix length output.writeVInt(length); // write delta length output.writeChars(term.text, start, length); // write delta chars output.writeVInt(fieldInfos.fieldNumber(term.field)); // write field num lastTerm = term; }
private void writeField() throws IOException { // remember where this field is written currentField.tvfPointer = tvf.getFilePointer(); //System.out.println("Field Pointer: " + currentField.tvfPointer); final int size; tvf.writeVInt(size = terms.size()); tvf.writeVInt(currentField.length - size); String lastTermText = ""; // write term ids and positions for (int i = 0; i < size; i++) { TVTerm term = (TVTerm) terms.elementAt(i); //tvf.writeString(term.termText); int start = StringHelper.stringDifference(lastTermText, term.termText); int length = term.termText.length() - start; tvf.writeVInt(start); // write shared prefix length tvf.writeVInt(length); // write delta length tvf.writeChars(term.termText, start, length); // write delta chars tvf.writeVInt(term.freq); lastTermText = term.termText; } }