Your music, beautifully tracked. All yours. (coming soon) teal.fm
teal-fm atproto
at main 2.3 kB view raw
1{ 2 "db_name": "PostgreSQL", 3 "query": "\n SELECT DISTINCT\n r1.mbid as release1_mbid,\n r1.name as release1_name,\n r2.mbid as release2_mbid,\n r2.name as release2_name,\n similarity(LOWER(TRIM(r1.name)), LOWER(TRIM(r2.name))) as similarity_score,\n COUNT(DISTINCT ptae1.artist_id) as shared_artists\n FROM releases r1\n CROSS JOIN releases r2\n INNER JOIN plays p1 ON p1.release_mbid = r1.mbid\n INNER JOIN plays p2 ON p2.release_mbid = r2.mbid\n INNER JOIN play_to_artists_extended ptae1 ON p1.uri = ptae1.play_uri\n INNER JOIN play_to_artists_extended ptae2 ON p2.uri = ptae2.play_uri\n WHERE r1.mbid != r2.mbid\n AND similarity(LOWER(TRIM(r1.name)), LOWER(TRIM(r2.name))) >= $1\n AND ptae1.artist_id = ptae2.artist_id -- Same artist\n AND (\n (r1.discriminant IS NULL AND r2.discriminant IS NULL) OR\n (LOWER(TRIM(COALESCE(r1.discriminant, ''))) = LOWER(TRIM(COALESCE(r2.discriminant, ''))))\n ) -- Same or no discriminants\n GROUP BY r1.mbid, r1.name, r2.mbid, r2.name, similarity_score\n HAVING COUNT(DISTINCT ptae1.artist_id) > 0 -- At least one shared artist\n ORDER BY similarity_score DESC, shared_artists DESC\n ", 4 "describe": { 5 "columns": [ 6 { 7 "ordinal": 0, 8 "name": "release1_mbid", 9 "type_info": "Uuid" 10 }, 11 { 12 "ordinal": 1, 13 "name": "release1_name", 14 "type_info": "Text" 15 }, 16 { 17 "ordinal": 2, 18 "name": "release2_mbid", 19 "type_info": "Uuid" 20 }, 21 { 22 "ordinal": 3, 23 "name": "release2_name", 24 "type_info": "Text" 25 }, 26 { 27 "ordinal": 4, 28 "name": "similarity_score", 29 "type_info": "Float4" 30 }, 31 { 32 "ordinal": 5, 33 "name": "shared_artists", 34 "type_info": "Int8" 35 } 36 ], 37 "parameters": { 38 "Left": [ 39 "Float4" 40 ] 41 }, 42 "nullable": [ 43 false, 44 false, 45 false, 46 false, 47 null, 48 null 49 ] 50 }, 51 "hash": "2bdfb2ec8d91cffc761dc72be1a4f540e6cc918a9f7941bfdbefbea6f3dee149" 52}