2009-08-31 3 views

ответ

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

+0

Это не решает мою проблему. Я должен сортировать результаты по релевантности. – Psyche

+0

Я добавил предложение «по порядку», которое будет сортироваться по релевантности, в первую очередь, с наиболее релевантными результатами. –

+0

Я бы назвал предложение MATCH ... AGAINST, чтобы извлечь дублирование. –

Смежные вопросы