From da44278f12aa089b759a0a067a66c163fb5c81f5 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Sat, 31 Jan 2026 20:53:56 -0800 Subject: [PATCH] add fourth search query for enhanced matching with both a cleaned and artist removed search. --- core/matching_engine.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/core/matching_engine.py b/core/matching_engine.py index c5ce06e0..7a34137c 100644 --- a/core/matching_engine.py +++ b/core/matching_engine.py @@ -31,7 +31,11 @@ class MusicMatchingEngine: # Only remove explicit/clean markers - preserve remixes, versions, and content after hyphens r'\s*\(explicit\)', r'\s*\(clean\)', - # Remove featuring artists from the title itself + # Parenthesized featuring (must come before space-based patterns) + r'\s*\(feat\.?[^)]*\)', + r'\s*\(ft\.?[^)]*\)', + r'\s*\(featuring[^)]*\)', + # Space-based featuring (catches "Title feat. Artist" without parens) r'\sfeat\.?.*', r'\sft\.?.*', r'\sfeaturing.*' @@ -500,7 +504,12 @@ class MusicMatchingEngine: if original_track_clean not in [q.split(' ', 1)[1] for q in queries if ' ' in q]: queries.append(f"{artist} {original_track_clean}".strip()) logger.debug(f"PRIORITY 3: Original query: '{artist} {original_track_clean}'") - + + # PRIORITY 4: Clean title without artist (broadens results when artist name limits matches) + if original_track_clean and original_track_clean not in [q.lower() for q in queries]: + queries.append(original_track_clean) + logger.debug(f"PRIORITY 4: Title-only query: '{original_track_clean}'") + # Remove duplicates while preserving order unique_queries = [] seen = set()