Index: src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java (revision 998642) +++ src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java (working copy) @@ -76,6 +76,24 @@ return writer; } + /** NOTE: if your codec does not sort in unicode code + * point order, you must override this method, to simply + * return indexedTerm.length. */ + protected int indexedTermPrefixLength(final BytesRef priorTerm, final BytesRef indexedTerm) { + // As long as codec sorts terms in unicode codepoint + // order, we can safely strip off the non-distinguishing + // suffix to save RAM in the loaded terms index. + final int idxTermOffset = indexedTerm.offset; + final int priorTermOffset = priorTerm.offset; + final int limit = Math.min(priorTerm.length, indexedTerm.length); + for(int byteIdx=0;byteIdx