Adrien Grand created LUCENE8177:

Summary: BlockMaxConjunctionScorer should compute better lower bounds of the
required scores
Key: LUCENE8177
URL: https://issues.apache.org/jira/browse/LUCENE8177
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 4maxScore(fox)=42=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, email: devunsubscribe@lucene.apache.org
For additional commands, email: devhelp@lucene.apache.org
