Index: contrib/analyzers/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java
===================================================================
--- contrib/analyzers/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java	(revision 636608)
+++ contrib/analyzers/src/java/org/apache/lucene/analysis/ngram/NGramTokenFilter.java	(working copy)
@@ -83,17 +83,22 @@
   private void ngram(Token token) { 
     String inStr = token.termText();
     int inLen = inStr.length();
-    int gramSize = minGram;
-    while (gramSize <= maxGram) {
-      int pos = 0;                        // reset to beginning of string
-      while (pos+gramSize <= inLen) {     // while there is input
+    
+    int start=token.startOffset();
+    int end  =token.endOffset();
+    int pos=0;
+    while(pos<inLen){
+      int increment=1;
+      int gramSize=minGram;
+      while(gramSize<=maxGram && pos+gramSize<=inLen){
         String gram = inStr.substring(pos, pos+gramSize);
-        Token tok = new Token(gram, pos, pos+gramSize);
-//        tok.setPositionIncrement(pos);
+        Token tok = new Token(gram, start, end);
+        tok.setPositionIncrement(increment);
         ngrams.add(tok);
-        pos++;
+        increment=0;
+        gramSize++;
       }
-      gramSize++;                         // increase n-gram size
+      pos++;
     }
   }
 }
