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

これはもちろん、albums テーブルに 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 に答える