鉴于以下表格,我如何在每个表格中搜索一个术语并按相关性排序结果?谢谢。
bands
- band_id
- band_name
albums
- album_id
- album_name
songs
- song_id
- song_name
答案 0 :(得分:2)
类似的东西:
SELECT song_id, MATCH(band_name, album_name, song_name)
AGAINST ('search term')
FROM bands join albums using (band_id) JOIN songs USING (album_id)
ORDER BY MATCH(band_name, album_name, song_name) AGAINST ('search term') DESC
当然,假设您在相册表中也有一个band_id列,而歌曲中也有一个album_id。
MATCH ... AGAINST函数返回由MySQL计算的“相关性”分数。按此功能排序将按相关性对结果进行排序。
此外,如果您有针对_name列创建的全文索引,这将更快地运行。