Index: modules/analysis/common/src/test/org/apache/lucene/analysis/compound/TestCompoundWordTokenFilter.java =================================================================== --- modules/analysis/common/src/test/org/apache/lucene/analysis/compound/TestCompoundWordTokenFilter.java (revision 1095205) +++ modules/analysis/common/src/test/org/apache/lucene/analysis/compound/TestCompoundWordTokenFilter.java (working copy) @@ -143,6 +143,28 @@ 0, 0, 0, 1 }); } + public void testTokenEndingWithWordComponentOfMinimumLength() throws Exception { + String[] dict = {"alfa", "beta"}; + + DictionaryCompoundWordTokenFilter tf = new DictionaryCompoundWordTokenFilter(TEST_VERSION_CURRENT, + new WhitespaceTokenizer(TEST_VERSION_CURRENT, + new StringReader( + "alfabeta") + ), + dict, + CompoundWordTokenFilterBase.DEFAULT_MIN_WORD_SIZE, + 4, + CompoundWordTokenFilterBase.DEFAULT_MAX_SUBWORD_SIZE, true); + + assertTokenStreamContents(tf, + new String[] { "alfabeta", "alfa", "beta" }, + new int[] { 0, 0, 4}, + new int[] { 8, 4, 8}, + new int[] { 1, 0, 0} + ); + } + + public void testDumbCompoundWordsSELongestMatch() throws Exception { String[] dict = { "Bil", "Dörr", "Motor", "Tak", "Borr", "Slag", "Hammar", "Pelar", "Glas", "Ögon", "Fodral", "Bas", "Fiols", "Makare", "Gesäll", Index: modules/analysis/common/src/java/org/apache/lucene/analysis/compound/DictionaryCompoundWordTokenFilter.java =================================================================== --- modules/analysis/common/src/java/org/apache/lucene/analysis/compound/DictionaryCompoundWordTokenFilter.java (revision 1095205) +++ modules/analysis/common/src/java/org/apache/lucene/analysis/compound/DictionaryCompoundWordTokenFilter.java (working copy) @@ -136,7 +136,7 @@ char[] lowerCaseTermBuffer=makeLowerCaseCopy(token.buffer()); - for (int i=0;itoken.length()) {