punAhuja opened a new pull request, #5172: URL: https://github.com/apache/solr/pull/5172
https://issues.apache.org/jira/browse/SOLR-18550 <!-- _(If you are a project committer then you may remove some/all of the following template.)_ Before creating a pull request, please file an issue in the ASF Jira system for Solr: * https://issues.apache.org/jira/projects/SOLR For something minor (i.e. that wouldn't be worth putting in release notes), you can skip JIRA. To create a Jira issue, you will need to create an account there first. The title of the PR should reference the Jira issue number in the form: * SOLR-####: <short description of problem or changes> SOLR must be fully capitalized. A short description helps people scanning pull requests for items they can work on. Properly referencing the issue in the title ensures that Jira is correctly updated with code review comments and commits. --> # Description For a combined query, the coordinator reported numFound as the largest sub-query's match count, not the distinct document count of the fused result, so the response could return more documents than the header claimed. The exactness check in mergeIds was also inverted, making an exact shard count report numFoundExact: false. Reported on [[email protected]](mailto:[email protected]) by Justin Michael Coyne, verified on 10.1.0-rc2 with 3 docs matching subject_s:cat and 2 matching subject_s:dog (no overlap): 5 documents returned, numFound: 3, numFoundExact: false. # Solution * Report numFound as the distinct number of fused documents. * Set numFoundExact false when a sub-query list was truncated by the fusion pool (shards.rows, start + rows, or knn topK), and fix the inverted conjunction to match QueryComponent.mergeIds. * Remove the leftover numFound-- in the queue-overflow branch. # Tests * CombinedQueryComponentTest: the reported reproduction (3-cat/2-dog, no overlap) as a regression test asserting numFound 5 and numFoundExact true, plus updated assertions for the new semantics elsewhere in the suite. * DistributedCombinedQueryComponentTest: two queries matching 6 docs with 2 overlapping assert a fused count of 10, exact; the same queries truncated by the fusion pool report the pool size and numFoundExact false. Note: independent of SOLR-18542 / #5119 (weighted RRF) - no shared production code. Both add blocks to DistributedCombinedQueryComponentTest, so whichever merges second trivially rebases. AI disclosure: parts of this change were developed with the help of an AI coding assistant. I reviewed and tested everything and take full responsibility for it. # Checklist Please review the following and check all that apply: - [ ] I have reviewed the guidelines for [How to Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md) and my code conforms to the standards described there to the best of my ability. - [ ] I have created a Jira issue and added the issue ID to my pull request title. - [ ] I have given Solr maintainers [access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork) to contribute to my PR branch. (optional but recommended, not available for branches on forks living under an organisation) - [ ] I have developed this patch against the `main` branch. - [ ] I have run `./gradlew check`. - [ ] I have added tests for my changes. - [ ] I have added documentation for the [Reference Guide](https://github.com/apache/solr/tree/main/solr/solr-ref-guide) - [ ] I have added a [changelog entry](https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc) for my change -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
