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!
+ }
}
}
}