risdenk opened a new pull request, #2221: URL: https://github.com/apache/solr/pull/2221
https://issues.apache.org/jira/browse/SOLR-17131 # Description If a query has `rows=0` Solr does not need to sort the results or even compute the score. This means the filterCache can be more efficient to compute the result and Solr doesn't spend time on unnecessarily sorting and scoring large result sets for it to be thrown away. There is one subtle difference from this change - `maxScore` is no longer returned if `rows=0` which seems like a reasonable tradeoff. If `maxScore` is needed then set `rows=1`. `maxScore` can't reliably be compared across searches anyway so no reason to have it when `rows=0`. This was found while looking at https://issues.apache.org/jira/browse/SOLR-14765 and trying to reason through the case of `rows=0` that are sometimes used to just determine count of matching results. This change adds the check for `rows=0` before other checks to ensure that we can short circuit scoring even if there is a scoring query. We also don't add the query to the filter cache since that could result in filter cache thrashing. In some tests, we found that queries with `rows=0` p99 improved by 50% and CPU dropped by 5%. # Tests Updated tests in TestMainQueryCaching to account for this optimization. # Checklist Please review the following and check all that apply: - [x] 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. - [x] I have created a Jira issue and added the issue ID to my pull request title. - [x] 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) - [x] I have developed this patch against the `main` branch. - [x] I have run `./gradlew check`. - [x] 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) -- 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: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org