You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by cp...@apache.org on 2024/02/14 11:21:46 UTC

(solr) 02/02: factor out SolrIndexSearcher.allowMT(Query) utility; add SolrIndexSearcher.MTCollectorQueryCheck class-level javadocs;

This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch jira/solr-13350
in repository https://gitbox.apache.org/repos/asf/solr.git

commit c69006a4ca6625307e17fb0c272b08eebacd9a69
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Wed Feb 14 11:19:23 2024 +0000

    factor out SolrIndexSearcher.allowMT(Query) utility; add SolrIndexSearcher.MTCollectorQueryCheck class-level javadocs;
---
 .../org/apache/solr/search/SolrIndexSearcher.java    | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index e2c0eb36a97..d5d6a5193aa 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -1884,13 +1884,12 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
       if (log.isInfoEnabled()) {
         log.info("calling from 2, query: {}", query.getClass());
       }
-      MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
-      query.visit(allowMT);
+      final boolean allowMT = allowMT(query);
       final TopDocs topDocs;
       if (pf.postFilter != null
           || cmd.getSegmentTerminateEarly()
           || cmd.getTimeAllowed() > 0
-          || !allowMT.allowed()) {
+          || !allowMT) {
         if (log.isInfoEnabled()) {
           log.info("skipping collector manager");
         }
@@ -2234,13 +2233,12 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
       // no docs on this page, so cursor doesn't change
       qr.setNextCursorMark(cmd.getCursorMark());
     } else {
-      MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
-      query.visit(allowMT);
+      final boolean allowMT = allowMT(query);
       TopDocs topDocs;
       if (pf.postFilter != null
           || cmd.getSegmentTerminateEarly()
           || cmd.getTimeAllowed() > 0
-          || !allowMT.allowed()) {
+          || !allowMT) {
         @SuppressWarnings({"rawtypes"})
         final TopDocsCollector<? extends ScoreDoc> topCollector = buildTopDocsCollector(len, cmd);
         DocSetCollector setCollector = new DocSetCollector(maxDoc);
@@ -2925,6 +2923,16 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     return warmupTime;
   }
 
+  private static boolean allowMT(Query query) {
+    MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
+    query.visit(allowMT);
+    return allowMT.allowed();
+  }
+
+  /**
+   * A {@link QueryVisitor} that recurses through the query tree, determining if all queries support
+   * multi-threaded collecting.
+   */
   private static class MTCollectorQueryCheck extends QueryVisitor {
 
     private QueryVisitor subVisitor = this;