0
次の表に示すように、それぞれの用語を検索して結果を関連性によって並べ替えるにはどうすればよいでしょうか?ありがとうございました。データベースの検索と関連性による結果の表示
bands
- band_id
- band_name
albums
- album_id
- album_name
songs
- song_id
- song_name
次の表に示すように、それぞれの用語を検索して結果を関連性によって並べ替えるにはどうすればよいでしょうか?ありがとうございました。データベースの検索と関連性による結果の表示
bands
- band_id
- band_name
albums
- album_id
- album_name
songs
- song_id
- song_name
のようなもの:
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列に対してフルテキストインデックスを作成すると、これははるかに高速に動作します。
これは私の問題を解決しません。私は関連性によって結果を並べ替える必要があります。 – Psyche
私は関連性、最も関連性の高い結果を最初に並べ替える 'order by'句を追加しました。 –
私は、MATCH ... AGAINST句をエイリアスして複製を取り出します。 –