You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2011/11/13 18:12:29 UTC

svn commit: r1201461 - in /lucene/dev/branches/lucene2621/lucene: contrib/highlighter/src/java/org/apache/lucene/search/highlight/ contrib/memory/src/java/org/apache/lucene/index/memory/ src/java/org/apache/lucene/index/ src/java/org/apache/lucene/inde...

Author: mikemccand
Date: Sun Nov 13 17:12:28 2011
New Revision: 1201461

URL: http://svn.apache.org/viewvc?rev=1201461&view=rev
Log:
LUCENE-2621: clean up nocommits

Modified:
    lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java
    lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FieldsEnum.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/IndexReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsReader.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
    lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/perfield/PerFieldPostingsFormat.java

Modified: lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/highlighter/src/java/org/apache/lucene/search/highlight/TokenStreamFromTermPositionVector.java Sun Nov 13 17:12:28 2011
@@ -58,9 +58,6 @@ public final class TokenStreamFromTermPo
     offsetAttribute = addAttribute(OffsetAttribute.class);
     final TermsEnum termsEnum = vector.iterator();
     BytesRef text;
-    // nocommit find all places where I "blindly" added
-    // calls to .getAttribute(OffsetAttr): these are wrong.
-    // instead i must check .hasAttr first
     DocsAndPositionsEnum dpEnum = null;
     while((text = termsEnum.next()) != null) {
       dpEnum = termsEnum.docsAndPositions(null, dpEnum);

Modified: lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/lucene2621/lucene/contrib/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Sun Nov 13 17:12:28 2011
@@ -1065,7 +1065,6 @@ public class MemoryIndex {
     
     @Override
     public Fields getTermVectors(int docID) {
-      // nocommit is this right?
       if (docID == 0) {
         return fields();
       } else {

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/CheckIndex.java Sun Nov 13 17:12:28 2011
@@ -692,7 +692,9 @@ public class CheckIndex {
         if (field == null) {
           break;
         }
-        
+
+        // nocommit -- can we fix this!?
+        // assert fields.terms(field) != null;
         computedFieldCount++;
         
         final TermsEnum terms = fieldsEnum.terms();
@@ -1170,9 +1172,16 @@ public class CheckIndex {
 
             FieldsEnum fieldsEnum = tfv.iterator();
             String field = null;
+            String lastField = null;
             while((field = fieldsEnum.next()) != null) {
               status.totVectors++;
               tfvComputedFieldCount++;
+
+              if (lastField == null) {
+                lastField = field;
+              } else if (lastField.compareTo(field) > 0) {
+                throw new RuntimeException("vector fields are out of order: lastField=" + lastField + " field=" + field);
+              }
               
               Terms terms = tfv.terms(field);
               TermsEnum termsEnum = terms.iterator();
@@ -1205,8 +1214,8 @@ public class CheckIndex {
                   
                 final int doc = docsEnum.nextDoc();
                   
-                if (doc != j) {
-                  throw new RuntimeException("vector for doc " + j + " references another document: " + doc);
+                if (doc != 0) {
+                  throw new RuntimeException("vector for doc " + j + " didn't return docID=0: got docID=" + doc);
                 }
                   
                 final int tf = docsEnum.freq();

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FieldsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FieldsEnum.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FieldsEnum.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/FieldsEnum.java Sun Nov 13 17:12:28 2011
@@ -54,7 +54,8 @@ public abstract class FieldsEnum {
    *  will not return null. */
   public abstract TermsEnum terms() throws IOException;
 
-  // nocommit maybe allow getting Terms too
+  // TODO: should we allow pulling Terms as well?  not just
+  // the iterator?
   
   public final static FieldsEnum[] EMPTY_ARRAY = new FieldsEnum[0];
 

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/IndexReader.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/IndexReader.java Sun Nov 13 17:12:28 2011
@@ -803,11 +803,17 @@ public abstract class IndexReader implem
     throw new UnsupportedOperationException("This reader does not support this method.");
   }
 
-  // nocommit javadoc
+  /** Retrieve term vectors for this document, or null if
+   *  term vectors were not indexed.  The returned Fields
+   *  instance acts like a single-document inverted index
+   *  (the docID will be 0). */
   abstract public Fields getTermVectors(int docID)
           throws IOException;
 
-  // nocommit javadoc
+  /** Retrieve term vector for this document and field, or
+   *  null if term vectors were not indexed.  The returned
+   *  Fields instance acts like a single-document inverted
+   *  index (the docID will be 0). */
   public Terms getTermVector(int docID, String field)
     throws IOException {
     Fields vectors = getTermVectors(docID);

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/BlockTermsReader.java Sun Nov 13 17:12:28 2011
@@ -130,7 +130,6 @@ public class BlockTermsReader extends Fi
       seekDir(in, dirOffset);
 
       final int numFields = in.readVInt();
-
       for(int i=0;i<numFields;i++) {
         final int field = in.readVInt();
         final long numTerms = in.readVLong();

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsReader.java Sun Nov 13 17:12:28 2011
@@ -20,6 +20,8 @@ package org.apache.lucene.index.codecs;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
@@ -114,13 +116,13 @@ public class DefaultTermVectorsReader ex
     try {
       String idxName = IndexFileNames.segmentFileName(segment, "", VECTORS_INDEX_EXTENSION);
       tvx = d.openInput(idxName, context);
-      format = checkValidFormat(tvx, idxName);
+      format = checkValidFormat(tvx);
       String fn = IndexFileNames.segmentFileName(segment, "", VECTORS_DOCUMENTS_EXTENSION);
       tvd = d.openInput(fn, context);
-      final int tvdFormat = checkValidFormat(tvd, fn);
+      final int tvdFormat = checkValidFormat(tvd);
       fn = IndexFileNames.segmentFileName(segment, "", VECTORS_FIELDS_EXTENSION);
       tvf = d.openInput(fn, context);
-      final int tvfFormat = checkValidFormat(tvf, fn);
+      final int tvfFormat = checkValidFormat(tvf);
 
       assert format == tvdFormat;
       assert format == tvfFormat;
@@ -218,7 +220,7 @@ public class DefaultTermVectorsReader ex
     }
   }
 
-  private int checkValidFormat(IndexInput in, String fn) throws CorruptIndexException, IOException
+  private int checkValidFormat(IndexInput in) throws CorruptIndexException, IOException
   {
     int format = in.readInt();
     if (format < FORMAT_MINIMUM)
@@ -241,13 +243,11 @@ public class DefaultTermVectorsReader ex
   }
 
   private class TVFields extends Fields {
-    // nocommit make hashmap so .terms(String) is O(1)
     private final int[] fieldNumbers;
     private final long[] fieldFPs;
-    private final int docID;
+    private final Map<Integer,Integer> fieldNumberToIndex = new HashMap<Integer,Integer>();
 
     public TVFields(int docID) throws IOException {
-      this.docID = docID;
       seekTvx(docID);
       tvd.seek(tvx.readLong());
       
@@ -257,9 +257,9 @@ public class DefaultTermVectorsReader ex
         fieldNumbers = new int[fieldCount];
         fieldFPs = new long[fieldCount];
         for(int fieldUpto=0;fieldUpto<fieldCount;fieldUpto++) {
-          // nocommit i think this are already sorted
-          // correctly during write...?
-          fieldNumbers[fieldUpto] = tvd.readVInt();
+          final int fieldNumber = tvd.readVInt();
+          fieldNumbers[fieldUpto] = fieldNumber;
+          fieldNumberToIndex.put(fieldNumber, fieldUpto);
         }
 
         long position = tvx.readLong();
@@ -269,8 +269,9 @@ public class DefaultTermVectorsReader ex
           fieldFPs[fieldUpto] = position;
         }
       } else {
-        // nocommit: why do we write docs w/ 0 vectors!?
-        // and... can we return null (Fields) in this case...?
+        // TODO: we can improve writer here, eg write 0 into
+        // tvx file, so we know on first read from tvx that
+        // this doc has no TVs
         fieldNumbers = null;
         fieldFPs = null;
       }
@@ -295,7 +296,7 @@ public class DefaultTermVectorsReader ex
         public TermsEnum terms() throws IOException {
           tvf.seek(fieldFPs[fieldUpto-1]);
           final int numTerms = tvf.readVInt();
-          return new TVTermsEnum(docID, numTerms);
+          return new TVTermsEnum(numTerms);
         }
       };
     }
@@ -308,14 +309,13 @@ public class DefaultTermVectorsReader ex
         return null;
       }
 
-      for(int fieldUpto=0;fieldUpto<fieldNumbers.length;fieldUpto++) {
-        if (fieldInfo.number == fieldNumbers[fieldUpto]) {
-          return new TVTerms(docID, fieldFPs[fieldUpto]);
-        }
+      final Integer fieldIndex = fieldNumberToIndex.get(fieldInfo.number);
+      if (fieldIndex == null) {
+        // Term vectors were not indexed for this field
+        return null;
       }
 
-      // Field exists, but was not TVd for this doc
-      return null;
+      return new TVTerms(fieldFPs[fieldIndex]);
     }
 
     @Override
@@ -330,11 +330,9 @@ public class DefaultTermVectorsReader ex
 
   private class TVTerms extends Terms {
     private final int numTerms;
-    private final int docID;
     private final long tvfFPStart;
 
-    public TVTerms(int docID, long tvfFP) throws IOException {
-      this.docID = docID;
+    public TVTerms(long tvfFP) throws IOException {
       tvf.seek(tvfFP);
       numTerms = tvf.readVInt();
       tvfFPStart = tvf.getFilePointer();
@@ -344,7 +342,7 @@ public class DefaultTermVectorsReader ex
     public TermsEnum iterator() throws IOException {
       // nocommit -- to be "safe" we should clone tvf here...?
       tvf.seek(tvfFPStart);
-      return new TVTermsEnum(docID, numTerms);
+      return new TVTermsEnum(numTerms);
     }
 
     @Override
@@ -378,7 +376,6 @@ public class DefaultTermVectorsReader ex
 
   private class TVTermsEnum extends TermsEnum {
     private final int numTerms;
-    private final int docID;
     private int nextTerm;
     private int freq;
     private BytesRef lastTerm = new BytesRef();
@@ -392,9 +389,8 @@ public class DefaultTermVectorsReader ex
     private int[] endOffsets;
 
     // NOTE: tvf is pre-positioned by caller
-    public TVTermsEnum(int docID, int numTerms) throws IOException {
+    public TVTermsEnum(int numTerms) throws IOException {
       this.numTerms = numTerms;
-      this.docID = docID;
     
       final byte bits = tvf.readByte();
       storePositions = (bits & STORE_POSITIONS_WITH_TERMVECTOR) != 0;
@@ -497,7 +493,7 @@ public class DefaultTermVectorsReader ex
       } else {
         docsEnum = new TVDocsEnum();
       }
-      docsEnum.reset(liveDocs, docID, freq);
+      docsEnum.reset(liveDocs, freq);
       return docsEnum;
     }
 
@@ -518,7 +514,7 @@ public class DefaultTermVectorsReader ex
       } else {
         docsAndPositionsEnum = new TVDocsAndPositionsEnum(storeOffsets);
       }
-      docsAndPositionsEnum.reset(liveDocs, docID, positions, startOffsets, endOffsets);
+      docsAndPositionsEnum.reset(liveDocs, positions, startOffsets, endOffsets);
       return docsAndPositionsEnum;
     }
 
@@ -530,11 +526,10 @@ public class DefaultTermVectorsReader ex
     }
   }
 
-  // nocommit not really useful?  you can get the freq from
-  // .totalTF from the TermsEnum...
+  // NOTE: sort of a silly class, since you can get the
+  // freq() already by TermsEnum.totalTermFreq
   private static class TVDocsEnum extends DocsEnum {
     private boolean didNext;
-    private int docID;
     private int freq;
     private Bits liveDocs;
 
@@ -545,14 +540,14 @@ public class DefaultTermVectorsReader ex
 
     @Override
     public int docID() {
-      return docID;
+      return 0;
     }
 
     @Override
     public int nextDoc() {
-      if (!didNext && (liveDocs == null || liveDocs.get(docID))) {
+      if (!didNext && (liveDocs == null || liveDocs.get(0))) {
         didNext = true;
-        return docID;
+        return 0;
       } else {
         return NO_MORE_DOCS;
       }
@@ -560,16 +555,15 @@ public class DefaultTermVectorsReader ex
 
     @Override
     public int advance(int target) {
-      if (!didNext && target <= docID) {
+      if (!didNext && target == 0) {
         return nextDoc();
       } else {
         return NO_MORE_DOCS;
       }
     }
 
-    public void reset(Bits liveDocs, int docID, int freq) {
+    public void reset(Bits liveDocs, int freq) {
       this.liveDocs = liveDocs;
-      this.docID = docID;
       this.freq = freq;
       didNext = false;
     }
@@ -578,7 +572,6 @@ public class DefaultTermVectorsReader ex
   private static class TVDocsAndPositionsEnum extends DocsAndPositionsEnum {
     private final OffsetAttribute offsetAtt;
     private boolean didNext;
-    private int docID;
     private int nextPos;
     private Bits liveDocs;
     private int[] positions;
@@ -609,14 +602,14 @@ public class DefaultTermVectorsReader ex
 
     @Override
     public int docID() {
-      return docID;
+      return 0;
     }
 
     @Override
     public int nextDoc() {
-      if (!didNext && (liveDocs == null || liveDocs.get(docID))) {
+      if (!didNext && (liveDocs == null || liveDocs.get(0))) {
         didNext = true;
-        return docID;
+        return 0;
       } else {
         return NO_MORE_DOCS;
       }
@@ -624,16 +617,15 @@ public class DefaultTermVectorsReader ex
 
     @Override
     public int advance(int target) {
-      if (!didNext && target <= docID) {
+      if (!didNext && target == 0) {
         return nextDoc();
       } else {
         return NO_MORE_DOCS;
       }
     }
 
-    public void reset(Bits liveDocs, int docID, int[] positions, int[] startOffsets, int[] endOffsets) {
+    public void reset(Bits liveDocs, int[] positions, int[] startOffsets, int[] endOffsets) {
       this.liveDocs = liveDocs;
-      this.docID = docID;
       this.positions = positions;
       this.startOffsets = startOffsets;
       this.endOffsets = endOffsets;
@@ -677,7 +669,9 @@ public class DefaultTermVectorsReader ex
     if (tvx != null) {
       Fields fields = new TVFields(docID);
       if (fields.getUniqueFieldCount() == 0) {
-        // nocommit writer should write in this case!?
+        // TODO: we can improve writer here, eg write 0 into
+        // tvx file, so we know on first read from tvx that
+        // this doc has no TVs
         return null;
       } else {
         return fields;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/DefaultTermVectorsWriter.java Sun Nov 13 17:12:28 2011
@@ -35,6 +35,15 @@ import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.StringHelper;
 
+// TODO: make a new 4.0 TV format that encodes better
+//   - use startOffset (not endOffset) as base for delta on
+//     next startOffset because today for syns or ngrams or
+//     WDF or shingles etc. we are encoding negative vints
+//     (= slow, 5 bytes per)
+//   - if doc has no term vectors, write 0 into the tvx
+//     file; saves a seek to tvd only to read a 0 vint (and
+//     saves a byte in tvd)
+
 public final class DefaultTermVectorsWriter extends TermVectorsWriter {
   private final Directory directory;
   private final String segment;

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsReader.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsReader.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsReader.java Sun Nov 13 17:12:28 2011
@@ -30,11 +30,13 @@ import org.apache.lucene.index.Fields;
  */
 public abstract class TermVectorsReader implements Cloneable,Closeable {
 
-  /** nocommit jdocs; returns null if TVs not in this
-   *  index.  If offsets are available they are in an {@link
-   *  OffsetAttribute} */
+  /** Returns term vectors for this document, or null if
+   *  term vectors were not indexed. If offsets are
+   *  available they are in an {@link OffsetAttribute}
+   *  available from the {@link DocsAndPositionsEnum}. */
   public abstract Fields get(int doc) throws IOException;
 
-  // nocommit really needed?
+  /** Create a clone that one caller at a time may use to
+   *  read term vectors. */
   public abstract TermVectorsReader clone();
 }

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/TermVectorsWriter.java Sun Nov 13 17:12:28 2011
@@ -185,14 +185,12 @@ public abstract class TermVectorsWriter 
       
       final FieldInfo fieldInfo = fieldInfos.fieldInfo(fieldName);
 
-      // nocommit O(N^2) under here:
-      // nocommit just cast to int right off....?  single
-      // doc w/ > 2.1 B terms is surely crazy...?
       final Terms terms = vectors.terms(fieldName);
       if (terms == null) {
         continue;
       }
-      final long numTerms = terms.getUniqueTermCount();
+      final int numTerms = (int) terms.getUniqueTermCount();
+      assert numTerms >= 0;
 
       final boolean positions;
 
@@ -224,9 +222,9 @@ public abstract class TermVectorsWriter 
         offsetAtt = null;
       }
       
-      startField(fieldInfo, (int) numTerms, positions, offsetAtt != null);
+      startField(fieldInfo, numTerms, positions, offsetAtt != null);
 
-      long termCount = 1;
+      int termCount = 1;
 
       // NOTE: we already .next()'d the TermsEnum above, to
       // peek @ first term to see if positions/offsets are

Modified: lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/perfield/PerFieldPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/perfield/PerFieldPostingsFormat.java?rev=1201461&r1=1201460&r2=1201461&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/perfield/PerFieldPostingsFormat.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/java/org/apache/lucene/index/codecs/perfield/PerFieldPostingsFormat.java Sun Nov 13 17:12:28 2011
@@ -213,7 +213,7 @@ public abstract class PerFieldPostingsFo
       }
 
       @Override
-      public String next() {
+      public String next() throws IOException {
         if (it.hasNext()) {
           current = it.next();
         } else {