Revert "Better handle dynamic pruning when the leading clause has a single impact block. (#13904)"

This reverts commit 5fd45254d3.
This commit is contained in:
Adrien Grand 2024-10-16 15:15:06 +02:00
parent 789658819f
commit 1faf33a02a
2 changed files with 3 additions and 18 deletions

View File

@ -53,10 +53,6 @@ Optimizations
* GITHUB#13800: MaxScoreBulkScorer now recomputes scorer partitions when the * GITHUB#13800: MaxScoreBulkScorer now recomputes scorer partitions when the
minimum competitive allows for a more favorable partitioning. (Adrien Grand) minimum competitive allows for a more favorable partitioning. (Adrien Grand)
* GITHUB#13904: BlockMaxConjunctionBulkScorer can now early exit when the
leading clause has a single impact block (e.g. ConstantScoreQuery).
(Adrien Grand)
Bug Fixes Bug Fixes
--------------------- ---------------------
* GITHUB#13832: Fixed an issue where the DefaultPassageFormatter.format method did not format passages as intended * GITHUB#13832: Fixed an issue where the DefaultPassageFormatter.format method did not format passages as intended

View File

@ -85,20 +85,9 @@ final class BlockMaxConjunctionBulkScorer extends BulkScorer {
int windowMin = Math.max(lead1.docID(), min); int windowMin = Math.max(lead1.docID(), min);
while (windowMin < max) { while (windowMin < max) {
// Use impacts of the least costly scorer to compute windows to keep the per-block overhead // Use impacts of the least costly scorer to compute windows
// under control. // NOTE: windowMax is inclusive
// NOTE: windowMax is inclusive. int windowMax = Math.min(scorers[0].advanceShallow(windowMin), max - 1);
int windowMax = scorer1.advanceShallow(windowMin);
if (windowMax == DocIdSetIterator.NO_MORE_DOCS) {
// If the query doesn't have impacts anymore, or has a single block for the whole doc ID
// space (e.g. ConstantScoreQuery), then we try to create a block that has ~128 docs of the
// leading clause. This gives us higher chances to exit early based on the maximum scores of
// other clauses.
long windowSize = 128L * maxDoc / Math.max(1, lead1.cost());
windowSize = Math.max(windowSize, 128L);
windowMax = (int) Math.min(Integer.MAX_VALUE, windowMin + windowSize);
}
windowMax = Math.min(windowMax, max - 1);
float maxWindowScore = Float.POSITIVE_INFINITY; float maxWindowScore = Float.POSITIVE_INFINITY;
if (0 < scorable.minCompetitiveScore) { if (0 < scorable.minCompetitiveScore) {