Index: lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsWriter.java =================================================================== --- lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsWriter.java (revision 1401371) +++ lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsWriter.java (working copy) @@ -248,7 +248,7 @@ // System.out.println(" docDeltaBuffer[" + docBufferUpto + "]=" + docDelta); // } if (fieldHasFreqs) { - freqBuffer[docBufferUpto] = termDocFreq; + freqBuffer[docBufferUpto] = termDocFreq-1; } docBufferUpto++; docCount++; @@ -400,7 +400,7 @@ final int freq = freqBuffer[i]; if (!fieldHasFreqs) { docOut.writeVInt(docDelta); - } else if (freqBuffer[i] == 1) { + } else if (freqBuffer[i] == 0) { docOut.writeVInt((docDelta<<1)|1); } else { docOut.writeVInt(docDelta<<1); Index: lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java =================================================================== --- lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java (revision 1401371) +++ lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41PostingsReader.java (working copy) @@ -129,7 +129,7 @@ final int code = docIn.readVInt(); docBuffer[i] = code >>> 1; if ((code & 1) != 0) { - freqBuffer[i] = 1; + freqBuffer[i] = 0; } else { freqBuffer[i] = docIn.readVInt(); } @@ -410,7 +410,7 @@ doc = -1; this.needsFreq = (flags & DocsEnum.FLAG_FREQS) != 0; if (!indexHasFreq) { - Arrays.fill(freqBuffer, 1); + Arrays.fill(freqBuffer, 0); } accum = 0; docUpto = 0; @@ -452,7 +452,7 @@ } } else if (docFreq == 1) { docDeltaBuffer[0] = singletonDocID; - freqBuffer[0] = (int) totalTermFreq; + freqBuffer[0] = (int) totalTermFreq-1; } else { // Read vInts: // if (DEBUG) { @@ -491,7 +491,7 @@ if (liveDocs == null || liveDocs.get(accum)) { doc = accum; - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; docBufferUpto++; // if (DEBUG) { // System.out.println(" return doc=" + doc + " freq=" + freq); @@ -588,7 +588,7 @@ // if (DEBUG) { // System.out.println(" return doc=" + accum); // } - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; docBufferUpto++; return doc = accum; } else { @@ -743,7 +743,7 @@ forUtil.readBlock(docIn, encoded, freqBuffer); } else if (docFreq == 1) { docDeltaBuffer[0] = singletonDocID; - freqBuffer[0] = (int) totalTermFreq; + freqBuffer[0] = (int) totalTermFreq-1; } else { // Read vInts: // if (DEBUG) { @@ -811,7 +811,7 @@ // System.out.println(" accum=" + accum + " docDeltaBuffer[" + docBufferUpto + "]=" + docDeltaBuffer[docBufferUpto]); // } accum += docDeltaBuffer[docBufferUpto]; - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; posPendingCount += freq; docBufferUpto++; docUpto++; @@ -899,7 +899,7 @@ // System.out.println(" scan doc=" + accum + " docBufferUpto=" + docBufferUpto); // } accum += docDeltaBuffer[docBufferUpto]; - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; posPendingCount += freq; docBufferUpto++; docUpto++; @@ -1199,7 +1199,7 @@ forUtil.readBlock(docIn, encoded, freqBuffer); } else if (docFreq == 1) { docDeltaBuffer[0] = singletonDocID; - freqBuffer[0] = (int) totalTermFreq; + freqBuffer[0] = (int) totalTermFreq-1; } else { // if (DEBUG) { // System.out.println(" fill last vInt doc block from fp=" + docIn.getFilePointer()); @@ -1324,7 +1324,7 @@ // System.out.println(" accum=" + accum + " docDeltaBuffer[" + docBufferUpto + "]=" + docDeltaBuffer[docBufferUpto]); // } accum += docDeltaBuffer[docBufferUpto]; - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; posPendingCount += freq; docBufferUpto++; docUpto++; @@ -1417,7 +1417,7 @@ // System.out.println(" scan doc=" + accum + " docBufferUpto=" + docBufferUpto); // } accum += docDeltaBuffer[docBufferUpto]; - freq = freqBuffer[docBufferUpto]; + freq = freqBuffer[docBufferUpto]+1; posPendingCount += freq; docBufferUpto++; docUpto++;