A query can be informed that scores are not needed based on it's context/use, and some queries are able to operate more efficiently if it knows this up-front. This is about the ScoreMode enum.
I reviewed the use of ScoreMode.COMPLETE in Solr and I think we should make the following changes:
Solr filter queries (fq) are non-scoring. SolrIndexSearcher.getProcessedFilter will pass ScoreMode.COMPLETE when it ought to be COMPLETE_NO_SCORES to createWeight. This perf bug is only applicable when the filter query is not cached (either cache=false local-param or no filter cache). This error was made in
LUCENE-6220 (Solr 5.1); at that time it was a boolean.
The /export handler (more specifically ExportQParserPlugin) is also affected; it's COMPLETE when it should always be COMPLETE_NO_SCORES. Also appears to be in error since Solr 5.1.
SolrIndexSearcher.getDocListAndSetNC ought to use TOP_SCORES to track the top-score to be more correct but it's a distinction without a difference since MultiCollector.wrap with the DocSetCollector will combine it with COMPLETE_NO_SCORES to conclude the result is COMPLETE.
- is related to
SOLR-12393 ExpandComponent only calculates the score of expanded docs when sorted by score