Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/commongrams/CommonGramsFilter.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/commongrams/CommonGramsFilter.java	(revision 1353781)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/commongrams/CommonGramsFilter.java	(working copy)
@@ -58,6 +58,7 @@
   private final PositionLengthAttribute posLenAttribute = addAttribute(PositionLengthAttribute.class);
 
   private int lastStartOffset;
+  private int lastPosLength;
   private boolean lastWasCommon;
   private State savedState;
 
@@ -147,6 +148,7 @@
     buffer.append(termAttribute.buffer(), 0, termAttribute.length());
     buffer.append(SEPARATOR);
     lastStartOffset = offsetAttribute.startOffset();
+    lastPosLength = posLenAttribute.getPositionLength();
     lastWasCommon = isCommon();
   }
 
@@ -156,7 +158,7 @@
   private void gramToken() {
     buffer.append(termAttribute.buffer(), 0, termAttribute.length());
     int endOffset = offsetAttribute.endOffset();
-
+    int currentPosLength = posLenAttribute.getPositionLength();
     clearAttributes();
 
     int length = buffer.length();
@@ -168,7 +170,7 @@
     buffer.getChars(0, length, termText, 0);
     termAttribute.setLength(length);
     posIncAttribute.setPositionIncrement(0);
-    posLenAttribute.setPositionLength(2); // bigram
+    posLenAttribute.setPositionLength(lastPosLength + currentPosLength); // bigram
     offsetAttribute.setOffset(lastStartOffset, endOffset);
     typeAttribute.setType(GRAM_TYPE);
     buffer.setLength(0);
