Adrien Grand created LUCENE-8405:
------------------------------------

             Summary: Remove TopHits.maxScore
                 Key: LUCENE-8405
                 URL: https://issues.apache.org/jira/browse/LUCENE-8405
             Project: Lucene - Core
          Issue Type: Task
            Reporter: Adrien Grand
             Fix For: master (8.0)


I would like to propose removing TopDocs.maxScore. The reasoning is that either 
you are sorting by score and then its value is easy to access via the score of 
the best hit. Or you sort by one or more fields and computing it is wasteful:
 - term frequencies and norms need to be read and decoded for every match
 - scores need to be computed on every match
 - early-termination optimizations are disabled

It would be more efficient to collect hits twice: once with scores disabled to 
get the top hits, and once to get the best score which would run efficiently 
thanks to impacts and MAXSCORE, especially with a size of 1:
{code:java}
TopDocs topHits = searcher.search(query, 1);
float maxScore = topHits.scoreDocs.length == 0 ? Float.NaN : 
topHits.scoreDocs[0].score;
{code}
The {{doDocScores}} option of TopFieldCollector has drawbacks as well but at 
least doesn't disable early-termination optimizations and doesn't require 
scores to be computed on every hit.

As this would be a significant breaking change, I'm targeting 8.0.



--
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

Reply via email to