jpountz opened a new pull request, #14293:
URL: https://github.com/apache/lucene/pull/14293
Even though there is a single clause, it often needs to be intersected,
either with live docs or with the collector's competitive iterator.
This uses `DenseConjunctionBulkScorer` for:
- `MatchAllDocsQuery`,
- `TermQuery` when scores are not needed and `docFreq >= maxDoc / 32`,
- some constant-score queries including `PointRangeQuery` when `cost >=
maxDoc / 32`.
In addition,
- `DenseConjunctionBulkScorer` was improved to stop collecting hits when
the min competitive score is greater than the configured constant score,
- Added test coverage to sorting tests to make sure that their competitive
iterators are happy with how `DenseConjunctionBulkScorer` reads ahead.
The downside of this change is that it forces the impacted queries to score
at least 4096 (the window size) docs at once. So queries that can start
skipping very early (and which are thus very fast) may see a slowdown (e.g.
`TermMonthSort`). On the other hand, when it takes time before dynamic pruning
becomes effective, there could be a speedup thanks to the more efficient
intersection logic (e.g. `TermDTSort`).
This change should also help in the presence of deleted docs, by taking
advantage of the more efficient way how deleted docs are applied in this bulk
scorer.
Closes #14283
--
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]