···1010create 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;1313+END;
1414+1515+-- like the above but `trig` takes the release/recording mbid/isrc to disable the query
1616+create macro if not exists mbz.fts_artists(term, trig) AS CASE
1717+ WHEN trig IS NOT NULL THEN 10
1818+ ELSE fts_mbz_artist_credit.match_bm25(artist_credit.id, term) * if (lower(artist_credit.name) = lower(term), 2.5, 1)
1919+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- coalesce(artist_score, 0)
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- left 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;