Adrien Grand created LUCENE-8177:

             Summary: BlockMaxConjunctionScorer should compute better lower 
bounds of the required scores
                 Key: LUCENE-8177
             Project: Lucene - Core
          Issue Type: Bug
            Reporter: Adrien Grand

Assuming N scorers, {{BlockMaxConjunctionScorer}} computes a lower bound of the 
sum of scores for scorers 0..i, for any given 0 <= i < N.

For instance say you are searching for "quick AND fox", that a hit needs a 
score of 4 to be competitive and that "quick" contributes at most 3 to the 
score and "fox" 2. This means that for a given hit to be competitive, the sum 
of scores must be at least 4-maxScore(fox)=4-2=2 after having scored "quick" 
and 4 after having scored "fox".

Currently we have this in BlockMaxConjunctionScorer:
// Also compute the minimum required scores for a hit to be competitive
// A double that is less than 'score' might still be converted to 'score'
// when casted to a float, so we go to the previous float to avoid this issue
minScores[minScores.length - 1] = minScore > 0 ? Math.nextDown(minScore)

We currently use {{Math.minDown(float)}} to be safe, but we would get a better 
bound by computing the lowest double that is converted to {{minScore}} when 
casted to a float.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

Reply via email to