diff -r a37e824f5c17 lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java --- a/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java Sun Sep 19 10:18:49 2010 +0000 +++ b/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java Sun Sep 19 06:42:24 2010 -0400 @@ -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(BytesRef priorTerm, 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 limit = Math.min(priorTerm.length, indexedTerm.length); + int minPrefixDiff = Math.min(1+priorTerm.length, indexedTerm.length); + for(int byteIdx=0;byteIdx