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/22 10:18:48 UTC

(solr) 01/02: reduce code duplication w.r.t. populateScoresIfNeeded and populateNextCursorMarkFromTopDocs

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 a59fde7e0dbe069766881c630861d3634eb70e10
Author: Christine Poerschke <cp...@apache.org>
AuthorDate: Thu Feb 22 10:12:16 2024 +0000

    reduce code duplication w.r.t. populateScoresIfNeeded and populateNextCursorMarkFromTopDocs
---
 .../org/apache/solr/search/SolrIndexSearcher.java  | 24 +++++++++-------------
 1 file changed, 10 insertions(+), 14 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 ae9833d3bfd..fa689473fa1 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -1898,6 +1898,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
         log.info("calling from 2, query: {}", query.getClass());
       }
       final TopDocs topDocs;
+      final ScoreMode scoreModeUsed;
       if (!allowMT(pf.postFilter, cmd, query)) {
         if (log.isInfoEnabled()) {
           log.info("skipping collector manager");
@@ -1909,26 +1910,24 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
           maxScoreCollector = new MaxScoreCollector();
           collector = MultiCollector.wrap(topCollector, maxScoreCollector);
         }
-        final ScoreMode scoreModeUsed =
+        scoreModeUsed =
             buildAndRunCollectorChain(qr, query, collector, cmd, pf.postFilter).scoreMode();
 
         totalHits = topCollector.getTotalHits();
         topDocs = topCollector.topDocs(0, len);
-        hitsRelation = populateScoresIfNeeded(cmd, needScores, topDocs, query, scoreModeUsed);
-        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
 
         maxScore =
             totalHits > 0
                 ? (maxScoreCollector == null ? Float.NaN : maxScoreCollector.getMaxScore())
                 : 0.0f;
-        nDocsReturned = topDocs.scoreDocs.length;
-
       } else {
         if (log.isInfoEnabled()) {
           log.info("using CollectorManager");
         }
         final SearchResult searchResult =
             searchCollectorManagers(len, cmd, query, true, needScores, false);
+        scoreModeUsed = searchResult.scoreMode;
+
         final Object[] res = searchResult.result;
         final TopDocsResult result = (TopDocsResult) res[0];
 
@@ -1941,13 +1940,12 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
         } else {
           maxScore = Float.NaN;
         }
-
-        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
-        hitsRelation =
-            populateScoresIfNeeded(cmd, needScores, topDocs, query, searchResult.scoreMode);
-        nDocsReturned = topDocs.scoreDocs.length;
       }
 
+      hitsRelation = populateScoresIfNeeded(cmd, needScores, topDocs, query, scoreModeUsed);
+      populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
+
+      nDocsReturned = topDocs.scoreDocs.length;
       ids = new int[nDocsReturned];
       scores = needScores ? new float[nDocsReturned] : null;
       for (int i = 0; i < nDocsReturned; i++) {
@@ -2262,8 +2260,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
         assert (totalHits == set.size()) || qr.isPartialResults();
 
         topDocs = topCollector.topDocs(0, len);
-        populateScoresIfNeeded(cmd, needScores, topDocs, query, ScoreMode.COMPLETE);
-        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
         maxScore =
             totalHits > 0
                 ? (maxScoreCollector == null ? Float.NaN : maxScoreCollector.getMaxScore())
@@ -2294,8 +2290,6 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
           }
         }
 
-        populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
-        populateScoresIfNeeded(cmd, needScores, topDocs, query, ScoreMode.COMPLETE);
         // TODO: Is this correct?
         // hitsRelation = populateScoresIfNeeded(cmd, needScores, topDocs, query,
         // searchResult.scoreMode);
@@ -2309,6 +2303,8 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
 
       }
 
+      populateScoresIfNeeded(cmd, needScores, topDocs, query, ScoreMode.COMPLETE);
+      populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
       nDocsReturned = topDocs.scoreDocs.length;
 
       ids = new int[nDocsReturned];