Adrien Grand created LUCENE-8177:
------------------------------------
Summary: BlockMaxConjunctionScorer should compute better lower
bounds of the required scores
Key: LUCENE-8177
URL: https://issues.apache.org/jira/browse/LUCENE-8177
Project: Lucene - Core
Issue Type: Bug
Reporter: Adrien Grand

## Advertising

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:
{code:java}
// 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)
{code}
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
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org