Index: src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java =================================================================== --- src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java (revision 712226) +++ src/test/org/apache/lucene/analysis/TestKeywordAnalyzer.java (working copy) @@ -17,6 +17,8 @@ * limitations under the License. */ +import java.io.StringReader; + import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexReader; @@ -82,4 +84,12 @@ td = reader.termDocs(new Term("partnum", "Q37")); assertTrue(td.next()); } + + public void testOffsets() throws Exception { + TokenStream stream = new KeywordAnalyzer().tokenStream("field", new StringReader("abcd")); + Token token = new Token(); + assertTrue(stream.next(token) != null); + assertEquals(0, token.startOffset); + assertEquals(4, token.endOffset); + } } Index: src/java/org/apache/lucene/analysis/KeywordTokenizer.java =================================================================== --- src/java/org/apache/lucene/analysis/KeywordTokenizer.java (revision 712226) +++ src/java/org/apache/lucene/analysis/KeywordTokenizer.java (working copy) @@ -53,6 +53,9 @@ buffer = reusableToken.resizeTermBuffer(1+buffer.length); } reusableToken.setTermLength(upto); + reusableToken.setStartOffset(0); + reusableToken.setEndOffset(upto); + return reusableToken; } return null;