magibney commented on code in PR #1236:
URL: https://github.com/apache/solr/pull/1236#discussion_r1047195884


##########
solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java:
##########
@@ -2203,15 +2203,19 @@ public DocListAndSet getDocListAndSet(Query query, Sort 
lsort, int offset, int l
 
   private DocList constantScoreDocList(int offset, int length, DocSet docs) {
     final int size = docs.size();
-    if (length == 0 || size <= offset) {
-      return new DocSlice(0, 0, new int[0], null, size, 0f, 
TotalHits.Relation.EQUAL_TO);
-    }
-    final DocIterator iter = docs.iterator();
-    for (int i = offset; i > 0; i--) {
-      iter.nextDoc(); // discard
-    }
-    final int returnSize = Math.min(length, size - offset);
+
+    // NOTE: it would be possible to special-case `length == 0 || size <= 
offset` here
+    // (returning a DocList backed by an empty array) -- but the cases that 
would practically
+    // benefit from doing so would be extremely unusual, and likely 
pathological:
+    //   1. length==0 in conjunction with offset>0 (why?)
+    //   2. specifying offset>size (paging beyond end of results)
+    // This would require special consideration in dealing with cache handling 
(and generation
+    // of the final DocList via `DocSlice.subset(int, int)`), and it's just 
not worth it.
+
+    final int returnSize = Math.min(offset + length, size);

Review Comment:
   Tangential: I think it would be quite straightforward to add a DocList 
implementation that could support a backing docs int[] that _doesn't_ cover the 
whole range (basically how I was incorrectly treating DocSlice). If we did 
that, it would allow to efficiently support arbitrarily deep offset-based 
paging over constant-score queries.



-- 
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