You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2011/01/06 22:20:18 UTC

svn commit: r1056086 - /lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java

Author: yonik
Date: Thu Jan  6 21:20:18 2011
New Revision: 1056086

URL: http://svn.apache.org/viewvc?rev=1056086&view=rev
Log:
LUCENE-2837: only populate subSearchers if they will be used

Modified:
    lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java

Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java?rev=1056086&r1=1056085&r2=1056086&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/IndexSearcher.java Thu Jan  6 21:20:18 2011
@@ -64,9 +64,10 @@ public class IndexSearcher {
   // in the next release
   protected final ReaderContext readerContext;
   protected final AtomicReaderContext[] leafContexts;
-  protected final IndexSearcher[] subSearchers;
-//  protected final int[] docStarts;
+
+  // These are only used for multi-threaded search
   private final ExecutorService executor;
+  protected final IndexSearcher[] subSearchers;
 
   /** The Similarity implementation used by this searcher. */
   private Similarity similarity = Similarity.getDefault();
@@ -165,12 +166,17 @@ public class IndexSearcher {
       assert context.leaves() != null : "non-atomic top-level context must have leaves";
       this.leafContexts = context.leaves();
     }
-    subSearchers = new IndexSearcher[this.leafContexts.length];
-    for (int i = 0; i < subSearchers.length; i++) { // TODO do we need those IS if executor is null?
-      if (leafContexts[i].reader == context.reader) {
-        subSearchers[i] = this;
-      } else {
-        subSearchers[i] = new IndexSearcher(leafContexts[i].reader.getTopReaderContext()); // we need to get a TL context for sub searchers!
+
+    if (executor == null) {
+      subSearchers = null;
+    } else {
+      subSearchers = new IndexSearcher[this.leafContexts.length];
+      for (int i = 0; i < subSearchers.length; i++) {
+        if (leafContexts[i].reader == context.reader) {
+          subSearchers[i] = this;
+        } else {
+          subSearchers[i] = new IndexSearcher(leafContexts[i].reader.getTopReaderContext()); // we need to get a TL context for sub searchers!
+        }
       }
     }
   }