Index: modules/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java =================================================================== --- modules/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java (revision 1096178) +++ modules/analysis/common/src/test/org/apache/lucene/analysis/de/TestGermanStemFilter.java (working copy) @@ -26,7 +26,6 @@ import org.apache.lucene.analysis.core.KeywordTokenizer; import org.apache.lucene.analysis.core.LowerCaseFilter; import org.apache.lucene.analysis.util.ReusableAnalyzerBase; -import org.junit.Ignore; import static org.apache.lucene.analysis.util.VocabularyAssert.*; @@ -54,7 +53,6 @@ } /** blast some random strings through the analyzer */ - @Ignore("bugs!") public void testRandomStrings() throws Exception { checkRandomData(random, analyzer, 10000*RANDOM_MULTIPLIER); } Index: modules/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java (revision 1095935) +++ modules/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java (working copy) @@ -132,7 +132,8 @@ strip( buffer ); } // Additional step for irregular plural nouns like "Matrizen -> Matrix". - if ( buffer.charAt( buffer.length() - 1 ) == ( 'z' ) ) { + // NOTE: this length constraint is probably not a great value, its just to prevent AIOOBE on empty terms + if ( buffer.length() > 0 && buffer.charAt( buffer.length() - 1 ) == ( 'z' ) ) { buffer.setCharAt( buffer.length() - 1, 'x' ); } }