cpoerschke commented on code in PR #2248:
URL: https://github.com/apache/solr/pull/2248#discussion_r1492900283


##########
solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java:
##########
@@ -1979,36 +2226,84 @@ public ScoreMode scoreMode() {
       // no docs on this page, so cursor doesn't change
       qr.setNextCursorMark(cmd.getCursorMark());
     } else {
-      final TopDocsCollector<? extends ScoreDoc> topCollector = 
buildTopDocsCollector(len, cmd);
-      DocSetCollector setCollector = new DocSetCollector(maxDoc);
-      MaxScoreCollector maxScoreCollector = null;
-      List<Collector> collectors = new ArrayList<>(Arrays.asList(topCollector, 
setCollector));
-
-      if ((cmd.getFlags() & GET_SCORES) != 0) {
-        maxScoreCollector = new MaxScoreCollector();
-        collectors.add(maxScoreCollector);
-      }
+      MTCollectorQueryCheck allowMT = new MTCollectorQueryCheck();
+      query.visit(allowMT);
+      TopDocs topDocs;
+      if (pf.postFilter != null
+          || cmd.getSegmentTerminateEarly()
+          || cmd.getTimeAllowed() > 0
+          || !allowMT.allowed()) {
+        @SuppressWarnings({"rawtypes"})
+        final TopDocsCollector<? extends ScoreDoc> topCollector = 
buildTopDocsCollector(len, cmd);
+        DocSetCollector setCollector = new DocSetCollector(maxDoc);
+        MaxScoreCollector maxScoreCollector = null;
+        List<Collector> collectors = new 
ArrayList<>(Arrays.asList(topCollector, setCollector));
+
+        if ((cmd.getFlags() & GET_SCORES) != 0) {
+          maxScoreCollector = new MaxScoreCollector();
+          collectors.add(maxScoreCollector);
+        }
 
-      Collector collector = MultiCollector.wrap(collectors);
+        Collector collector = MultiCollector.wrap(collectors);
 
-      buildAndRunCollectorChain(qr, query, collector, cmd, pf.postFilter);
+        buildAndRunCollectorChain(qr, query, collector, cmd, pf.postFilter);
 
-      set = DocSetUtil.getDocSet(setCollector, this);
+        set = DocSetUtil.getDocSet(setCollector, this);
+
+        totalHits = topCollector.getTotalHits();
+        assert (totalHits == set.size()) || qr.isPartialResults();
 
-      totalHits = topCollector.getTotalHits();
-      assert (totalHits == set.size()) || qr.isPartialResults();
+        topDocs = topCollector.topDocs(0, len);
+        if (cmd.getSort() != null
+            && !(cmd.getQuery() instanceof RankQuery)
+            && (cmd.getFlags() & GET_SCORES) != 0) {
+          TopFieldCollector.populateScores(topDocs.scoreDocs, this, query);
+        }
+        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
+        maxScore =
+            totalHits > 0
+                ? (maxScoreCollector == null ? Float.NaN : 
maxScoreCollector.getMaxScore())
+                : 0.0f;
+      } else {
+        log.debug("using CollectorManager");
+
+        boolean needMaxScore = (cmd.getFlags() & GET_SCORES) != 0;
+        SearchResult searchResult =
+            searchCollectorManagers(len, cmd, query, true, needMaxScore, true);
+        Object[] res = searchResult.result;
+        TopDocsResult result = (TopDocsResult) res[0];
+        totalHits = result.totalHits;
+        topDocs = result.topDocs;
+        if (needMaxScore) {
+          if (res.length > 1) {
+            MaxScoreResult result2 = (MaxScoreResult) res[1];
+            maxScore = totalHits > 0 ? result2.maxScore : 0.0f;
+          }
+          if (res.length > 2) {
+            DocSetResult result3 = (DocSetResult) res[2];
+            set = result3.docSet;
+          }
+        } else {
+          if (res.length > 1) {
+            DocSetResult result2 = (DocSetResult) res[1];
+            set = result2.docSet;
+          }
+        }
+
+        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
+        //        if (cmd.getSort() != null && !(cmd.getQuery() instanceof 
RankQuery) &&

Review Comment:
   
https://github.com/apache/solr/pull/2248/commits/cb3c1cba7aeb4fb4db426bed50fc6939883d0bcf
 uncomments some of it.



##########
solr/core/src/test/org/apache/solr/TestDistributedSearch.java:
##########
@@ -1786,7 +1786,7 @@ private void testMinExactCount() throws Exception {
         CommonParams.ROWS,
         "200",
         CommonParams.SORT,
-        "score desc, id asc");
+        "id asc");

Review Comment:
   Undone via 
https://github.com/apache/solr/pull/2248/commits/cb3c1cba7aeb4fb4db426bed50fc6939883d0bcf
 commit.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to