iverase commented on code in PR #16061:
URL: https://github.com/apache/lucene/pull/16061#discussion_r3239709513


##########
lucene/core/src/java/org/apache/lucene/document/SortedSetDocValuesRangeQuery.java:
##########
@@ -119,39 +119,31 @@ public ScorerSupplier scorerSupplier(LeafReaderContext 
context) throws IOExcepti
         }
         DocValuesSkipper skipper = context.reader().getDocValuesSkipper(field);
         SortedSetDocValues values = DocValues.getSortedSet(context.reader(), 
field);
+        final SortedDocValues singleton = DocValues.unwrapSingleton(values);
+        if (singleton != null && skipper != null && 
isDensePrimarySort(context.reader(), skipper)) {
+          final long minOrd = minOrd(values);
+          final long maxOrd = maxOrd(values);
+          if (minOrd > maxOrd || minOrd > skipper.maxValue() || maxOrd < 
skipper.minValue()) {
+            return null;
+          }
+          if (skipper.minValue() >= minOrd && skipper.maxValue() <= maxOrd) {
+            return ConstantScoreScorerSupplier.matchAll(
+                score(), scoreMode, context.reader().maxDoc());
+          }
+          final DocIdSetIterator psIterator =
+              getDocIdSetIteratorForDensePrimarySort(

Review Comment:
   I have been thinking how to estimate the cost inside the ScorerSupplier 
without having to create the full iterator. The idea is that in cost we will 
only visit the skipper and estimate the cost, similar to what we do in 
PointValues. When building the iterator we will visit the doc values if 
necessary.
   
   We need to keep a bit of state around but it is not too bad, let me know 
what you think.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to