0

给定以下表格,我如何在每个表格中搜索一个术语并按相关性对结果进行排序?谢谢你。

bands
- band_id
- band_name

albums  
- album_id 
- album_name      

songs
- song_id
- song_name
4

1 回答 1

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 列创建了全文索引,这将更快地工作。

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

于 2009-08-31T15:41:09.233 回答