lucene-solr
lucene-solr copied to clipboard
LUCENE-8996: maxScore is sometimes missing from distributed responses
Description
This is an issue in Lucene that affects Solr Distributed Grouped responses: TopGroupsShardResponseProcessor
uses TopGroups.merge
to merge together the grouped results of different shard. If a shard didn't have results for a particular group, it will return an empty group with maxScore == Float.NaN
, merge
just performs Math.max
that is going to return Float.NaN
if one of the two float is Float.NaN
.
The issue was open in 2017 by Julien Massenet, I experienced it while working on https://github.com/apache/lucene-solr/pull/300 so I updated his solution to the upstream version.
Solution
The PR adds a function:
private static float updateMaxScore(float currentMaxScore, float newMaxScore)
that will implement a max that works with Float.NaN
(same
Tests
A unit test covering all the different combinations of groups that could be processed by merge
is provided.
Checklist
Please review the following and check all that apply:
- [x] I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
- [x] I have created a Jira issue and added the issue ID to my pull request title.
- [x] I am authorized to contribute this code to the ASF and have removed any code I do not have a license to distribute.
- [x] I have given Solr maintainers access to contribute to my PR branch. (optional but recommended)
- [x] I have developed this patch against the
master
branch. - [ ] I have run
ant precommit
and the appropriate test suite. - [x] I have added tests for my changes.
- [ ] I have added documentation for the Ref Guide (for Solr changes only).
Hmm, I see this src fix was committed, but the new unit test was not committed -- was that intentional?