Index: contrib/snowball/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java =================================================================== --- contrib/snowball/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java (revision 290759) +++ contrib/snowball/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java (working copy) @@ -79,5 +79,27 @@ assertAnalyzesTo(a, "he abhorred accents", new String[] { "he", "abhor", "accent" }); } + + public void testFilterTokens() throws Exception { + final Token tok = new Token("accents",2,7,"wrd"); + tok.setPositionIncrement(3); + + SnowballFilter filter = new SnowballFilter( + new TokenStream() { + public Token next() throws IOException { + return tok; + } + }, + "English" + ); + + Token newtok = filter.next(); + + assertEquals("accent", newtok.termText()); + assertEquals(2, newtok.startOffset()); + assertEquals(7, newtok.endOffset()); + assertEquals("wrd", newtok.type()); + assertEquals(3, newtok.getPositionIncrement()); + } } Index: contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java =================================================================== --- contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java (revision 290759) +++ contrib/snowball/src/java/org/apache/lucene/analysis/snowball/SnowballFilter.java (working copy) @@ -69,7 +69,9 @@ } catch (Exception e) { throw new RuntimeException(e.toString()); } - return new Token(stemmer.getCurrent(), + Token newToken = new Token(stemmer.getCurrent(), token.startOffset(), token.endOffset(), token.type()); + newToken.setPositionIncrement(token.getPositionIncrement()); + return newToken; } }