78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Test the fuzzy search specifically for Eazy-E.
|
||
"""
|
||
|
||
import psycopg2
|
||
import psycopg2.extras
|
||
from fuzzywuzzy import fuzz
|
||
|
||
# Database configuration
|
||
DB_HOST = "172.18.0.2"
|
||
DB_PORT = 5432
|
||
DB_NAME = "musicbrainz_db"
|
||
DB_USER = "musicbrainz"
|
||
DB_PASSWORD = "musicbrainz"
|
||
|
||
def test_fuzzy_eazy_e():
|
||
"""Test fuzzy search for Eazy-E."""
|
||
print("🔍 Testing fuzzy search for Eazy-E...")
|
||
|
||
try:
|
||
connection = psycopg2.connect(
|
||
host=DB_HOST,
|
||
port=DB_PORT,
|
||
database=DB_NAME,
|
||
user=DB_USER,
|
||
password=DB_PASSWORD,
|
||
connect_timeout=10
|
||
)
|
||
cursor = connection.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
|
||
|
||
print("✅ Connected to database")
|
||
|
||
# Get all artists that might match Eazy-E
|
||
print("\n1. Getting potential matches for 'Eazy-E'...")
|
||
cursor.execute("SELECT name, gid FROM artist WHERE name ILIKE '%Eazy%' OR name ILIKE '%Sleazy%' LIMIT 20")
|
||
artists = cursor.fetchall()
|
||
|
||
print(f" Found {len(artists)} potential matches:")
|
||
for artist in artists:
|
||
score = fuzz.ratio('Eazy-E'.lower(), artist['name'].lower())
|
||
print(f" {artist['name']} (MBID: {artist['gid']}) - Score: {score}")
|
||
|
||
# Find the best match
|
||
best_match = None
|
||
best_score = 0
|
||
|
||
for artist in artists:
|
||
score = fuzz.ratio('Eazy-E'.lower(), artist['name'].lower())
|
||
if score > best_score:
|
||
best_score = score
|
||
best_match = artist
|
||
|
||
print(f"\n2. Best match: {best_match['name']} (Score: {best_score})")
|
||
|
||
# Check if there's an Eazy-E with different dash
|
||
print("\n3. Checking for Eazy-E with different dash character...")
|
||
cursor.execute("SELECT name, gid FROM artist WHERE name LIKE '%Eazy%E%' LIMIT 10")
|
||
eazy_variants = cursor.fetchall()
|
||
|
||
print(f" Found {len(eazy_variants)} Eazy-E variants:")
|
||
for artist in eazy_variants:
|
||
print(f" '{artist['name']}' (MBID: {artist['gid']})")
|
||
# Show the exact characters
|
||
for i, char in enumerate(artist['name']):
|
||
if char in ['-', '‐', '–', '—']:
|
||
print(f" Character {i}: '{char}' (ord: {ord(char)})")
|
||
|
||
cursor.close()
|
||
connection.close()
|
||
|
||
except Exception as e:
|
||
print(f"❌ Error: {e}")
|
||
import traceback
|
||
traceback.print_exc()
|
||
|
||
if __name__ == "__main__":
|
||
test_fuzzy_eazy_e() |