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

svn commit: r1213006 - in /lucene/dev/trunk/lucene/src/java/org/apache/lucene/index: BaseMultiReader.java IndexReader.java

Author: uschindler
Date: Sun Dec 11 14:44:32 2011
New Revision: 1213006

URL: http://svn.apache.org/viewvc?rev=1213006&view=rev
Log:
LUCENE-3633: Remove more code duplication -> readerIndex is already available in ReaderUtil. Also fix bug in docId checking. Moved the check to implementation, so its also done if DocFieldVisitor is used.

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/BaseMultiReader.java
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/BaseMultiReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/BaseMultiReader.java?rev=1213006&r1=1213005&r2=1213006&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/BaseMultiReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/BaseMultiReader.java Sun Dec 11 14:44:32 2011
@@ -105,29 +105,11 @@ abstract class BaseMultiReader<R extends
   }
 
   /** Helper method for subclasses to get the corresponding reader for a doc ID */
-  protected final int readerIndex(int n) {    // find reader for doc n:
-    return readerIndex(n, this.starts, this.subReaders.length);
-  }
-
-  final static int readerIndex(int n, int[] starts, int numSubReaders) {    // find reader for doc n:
-    int lo = 0;                                      // search starts array
-    int hi = numSubReaders - 1;                  // for first element less
-
-    while (hi >= lo) {
-      int mid = (lo + hi) >>> 1;
-      int midValue = starts[mid];
-      if (n < midValue)
-        hi = mid - 1;
-      else if (n > midValue)
-        lo = mid + 1;
-      else {                                      // found a match
-        while (mid+1 < numSubReaders && starts[mid+1] == midValue) {
-          mid++;                                  // scan to last match
-        }
-        return mid;
-      }
+  protected final int readerIndex(int docID) {
+    if (docID < 0 || docID >= maxDoc) {
+      throw new IllegalArgumentException("docID must be >= 0 and < maxDoc=" + maxDoc + " (got docID=" + docID + ")");
     }
-    return hi;
+    return ReaderUtil.subIndex(docID, this.starts);
   }
 
   @Override
@@ -158,10 +140,9 @@ abstract class BaseMultiReader<R extends
   public Collection<String> getFieldNames (IndexReader.FieldOption fieldNames) {
     ensureOpen();
     // maintain a unique set of field names
-    Set<String> fieldSet = new HashSet<String>();
+    final Set<String> fieldSet = new HashSet<String>();
     for (IndexReader reader : subReaders) {
-      Collection<String> names = reader.getFieldNames(fieldNames);
-      fieldSet.addAll(names);
+      fieldSet.addAll(reader.getFieldNames(fieldNames));
     }
     return fieldSet;
   }  

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java?rev=1213006&r1=1213005&r2=1213006&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java Sun Dec 11 14:44:32 2011
@@ -733,9 +733,6 @@ public abstract class IndexReader implem
   // IndexableField
   public final Document document(int docID) throws CorruptIndexException, IOException {
     ensureOpen();
-    if (docID < 0 || docID >= maxDoc()) {
-      throw new IllegalArgumentException("docID must be >= 0 and < maxDoc=" + maxDoc() + " (got docID=" + docID + ")");
-    }
     final DocumentStoredFieldVisitor visitor = new DocumentStoredFieldVisitor();
     document(docID, visitor);
     return visitor.getDocument();