···11PRAGMA create_fts_index('mbz.artist_credit', 'id', 'name');
22PRAGMA create_fts_index('mbz.recording', 'id', 'name');
33-PRAGMA create_fts_index('mbz.release', 'id', 'name', 'comment');33+PRAGMA create_fts_index('mbz.release', 'id', 'name', 'comment');
44+55+create macro if not exists mbz.fts_release (term, gid) AS CASE
66+ WHEN gid IS NOT NULL THEN 10
77+ ELSE fts_mbz_release.match_bm25 (release.id, term) * if (lower(release.name) = lower(term), 2.5, 1)
88+END;
99+1010+create macro if not exists mbz.fts_recording (term, gid) AS CASE
1111+ WHEN gid IS NOT NULL THEN 10
1212+ ELSE fts_mbz_recording.match_bm25 (recording.id, term) * if (lower(recording.name) = lower(term), 2.5, 1)
1313+END;
···11+with releases as (select *, rel_score: mbz.fts_release($1, $2)
22+ from mbz.release
33+ where (rel_score is not null and rel_score > 5 and $2 IS NULL)
44+ or ($2 IS NOT NULL and release.gid = $2)),
55+ recordings as (select *, rec_score: mbz.fts_recording($3, $4)
66+ from mbz.recording
77+ where (rec_score is not null and rec_score > 5 and $4 IS NULL)
88+ or ($4 IS NOT NULL and recording.gid = $4)),
99+ artists as (select *, artist_score: flashback.fts_mbz_artist_credit.match_bm25(artist_credit.id, $5),
1010+ from mbz.artist_credit
1111+ where artist_score is not null
1212+ and artist_score > 2.5)
1313+select track_name: track.name, track_gid: track.gid, release_gid: releases.gid, release_name: releases.name, recording_gid: recordings.gid, release_grp_gid: release_group.gid, release_grp_name: release_group.name, artists: artists.name, rel_score,
1414+ rec_score,
1515+ artist_score
1616+from mbz.track
1717+ inner join recordings on recordings.id = track.recording
1818+ inner join mbz.medium on medium.id = track.medium
1919+ inner join releases on releases.id = medium.release
2020+ inner join mbz.release_group on release_group.id = releases.release_group
2121+ inner join artists on artists.id = recordings.artist_credit
2222+where is_data_track = false
2323+order by rel_score desc, rec_score desc, artist_score desc limit 10;