The MySQL search backend can now properly sort and annotate results with their relevance scores #13157
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because the original code did a database query to get the object IDs that match the search keywords, and then used just the object_ids from that query to do a completely separate query to get the search results it ultimately returned, all relevance data was being lost. This made
sort_by_relevance
not work at all, and also leftscore_field
completely ignored, meaning the search results could not be sorted by or annotated with their relevance scores.The new code retains the relevance scores calculated from the
IndexEntry
model, and makes it possible to sort by them and add them as annotations to the search results (if callers request that).