Fix search matching to return correct song instead of first result #2528
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.
Fix search matching to return correct song instead of first result
Description
Fixed the search functionality in
Song.from_search_term()
to use intelligent matching instead of blindly taking the first result from Spotify's API. The original implementation would return incorrect songs when Spotify's ranking algorithm didn't match the user's intent.Added a new
_find_best_match()
method that uses fuzzy string matching to find the most relevant result based on artist name and song title similarity.Related Issue
Fixes #2526
Motivation and Context
The current search implementation has a critical bug where searching for "Scott Buckley - Light in Dark Places" returns "Stormzy - Mel Made Me Do It" instead of the correct song. This happens because the code takes the first result from Spotify's search API without any validation or matching logic.
Spotify's search algorithm prioritizes popularity and other factors that don't always align with exact query matches. Users expect search results to match their input, not just return the most popular result.
How Has This Been Tested?
Created comprehensive tests that verify:
Test results show the fix correctly identifies the intended song with a score of 170.0 vs 29.8 for incorrect matches.
Screenshots (if appropriate)
N/A
Types of Changes
Checklist