1{
2 "db_name": "PostgreSQL",
3 "query": "\n SELECT DISTINCT\n r1.mbid as recording1_mbid,\n r1.name as recording1_name,\n r2.mbid as recording2_mbid,\n r2.name as recording2_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 recordings r1\n CROSS JOIN recordings r2\n INNER JOIN plays p1 ON p1.recording_mbid = r1.mbid\n INNER JOIN plays p2 ON p2.recording_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": "recording1_mbid",
9 "type_info": "Uuid"
10 },
11 {
12 "ordinal": 1,
13 "name": "recording1_name",
14 "type_info": "Text"
15 },
16 {
17 "ordinal": 2,
18 "name": "recording2_mbid",
19 "type_info": "Uuid"
20 },
21 {
22 "ordinal": 3,
23 "name": "recording2_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": "ffa27ada5f1ef0d5c699277b88ad33aa6576f6d14a12ad61974e77d52b42eea0"
52}