Index: modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java (revision 1134289) +++ modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemmer.java (working copy) @@ -1373,6 +1373,10 @@ return word.toString(); } + CharSequence asCharSequence() { + return result != null ? result : word; + } + String getString() { return result; } Index: modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java (revision 1134289) +++ modules/analysis/common/src/java/org/apache/lucene/analysis/en/KStemFilter.java (working copy) @@ -55,8 +55,7 @@ char[] term = termAttribute.buffer(); int len = termAttribute.length(); if ((!keywordAtt.isKeyword()) && stemmer.stem(term, len)) { - char[] chars = stemmer.asString().toCharArray(); - termAttribute.copyBuffer(chars, 0, chars.length); + termAttribute.setEmpty().append(stemmer.asCharSequence()); } return true;