数据库按相关性搜索和显示结果

时间:2009-08-31 15:31:38

标签: mysql relevance

鉴于以下表格,我如何在每个表格中搜索一个术语并按相关性排序结果?谢谢。

bands
- band_id
- band_name

albums  
- album_id 
- album_name      

songs
- song_id
- song_name

1 个答案:

答案 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列创建的全文索引,这将更快地运行。

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