msfroh commented on issue #12032:
URL: https://github.com/apache/lucene/issues/12032#issuecomment-1763058013
I was looking into this, and the fundamental problem seems to be that the
underlying drillsideways scoring implementations (`doQueryFirstScoring`,
`doDrillDownAdvanceScoring`, and `doUnionScoring`) each assume that they're
going to score through the whole segment (such that they don't play nicely with
query timeout).
`doDrillDownAdvanceScoring` and `doUnionScoring` both explicitly set:
```
final int maxDoc = context.reader().maxDoc();
```
While `doQueryFirstScoring` and the special-case
`doQueryFirstScoringSingleDim` both have `while` loops that finish once there
are no more docs:
```
while (docID != DocIdSetIterator.NO_MORE_DOCS) {
```
So, the exception there is probably not such a bad idea because
DrillSidewaysScorer *doesn't* seem to play nicely with `TimeLimitingBulkScorer`
-- at least it doesn't honor the `maxDoc` override that
`TimeLimitingBulkScorer` imposes.
On the other hand, maybe we could just pass `maxDoc` through to the
underlying implementations. @gsmiller, do you know if there's any danger from
terminating `DrillSidewaysScorer` before hitting the end of a segment?
--
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]