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();