punAhuja opened a new pull request, #5119:
URL: https://github.com/apache/solr/pull/5119

   https://issues.apache.org/jira/browse/SOLR-18542
   
   <!--
   _(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
   
   Combined Query RRF gives every query list equal weight, so a caller can't 
favor
   one list, e.g. keep an exact lexical match above a loosely similar vector 
match.
   Elasticsearch and OpenSearch both support per-list weights.
   Also, `ReciprocalRankFusion.getRanks` iterates `queriesDocMap.values()` (a
   `HashMap`) but labels the rank array with `combiner.query` keys in request
   order, so the debug explain can mislabel which rank belongs to which query 
when
   the two orders differ.
   
   # Solution
   
   Please provide a short description of the approach taken to implement your 
solution.
   * Add `combiner.rrf.weight.<queryName>`, a non-negative multiplier on that
     query's reciprocal rank contribution, defaulting to `1.0`. Requests 
without it
     score exactly as before.
   * Reject negative weights, and weights for names that aren't in
     `combiner.query`, with a 400.
   * Make `getRanks` iterate in `combiner.query` order, so each rank and weight 
in
     the explain lines up with the right query. The explain prints
     `weight/(k+rank)` when a weight is set.
   * Update the ref guide: new param row, a weighted example, and an entry in
     major-changes-in-solr-11.
     
   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.
   
   # Tests
   
   * `ReciprocalRankFusionTest`: no-weight order unchanged, a higher weight 
flips
     the fused order, an omitted weight defaults to 1, a zero weight contributes
     nothing, negative weight throws, unknown weight name throws, and the 
explain
     carries the weight with the right query label.
   * `DistributedCombinedQueryComponentTest`: two queries with fixed scores 
where
     weights 1 and 3 flip the winner.
   
   # 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]

Reply via email to