2014-09-03 3 views
0

Итак, позвольте мне описать мою проблему. Я пытаюсь реализовать полнотекстовый поиск по нескольким столбцам. У меня есть datatable cd records. Он содержит столбец о художнике и колонке о названии записи. Поэтому я ищу их обоих. Проблема в том, что когда я ищу, например, с вопросом «королева», я получаю лучший результат для художника «queen jane», а затем для «королевы» художника. Это моя логика поиска:MySQL Полнотекстовый поиск по нескольким столбцам

SELECT * , 
MATCH(artist) AGAINST ('queen') as score_artist, 
MATCH(cd) AGAINST ('queen') as score_title 
FROM records 
WHERE MATCH(artist, cd) AGAINST ('queen') 
order by score_artist+score_title DESC, artist asc, cd asc; 

и, например, счет за «королеву» и «Королева Джейн» являются:

band  score_artist  score_title  
queen jane 4.803966045379639 4.078868865966797 
queen  4.803966045379639 4.0335259437561035 

Так опять же, есть ли другой способ указать, что совпадает полностью матч более важны, чем тот, который только частично соответствует.

Благодаря

+0

http://stackoverflow.com/questions/792875/which-sql-query-is-better-match-against-or-like может помочь – ItalianStallion

ответ

0

Я решил свою prblem, добавив следующий код на мой вопрос:

CASE WHEN artist = 'death' 
THEN <some value> 
ELSE 1 
END AS prx_artist, 

Я добавил это после SELECT *, так что теперь я использую prx_artist умножать score_artist. это просто значение, с помощью которого вы хотите умножить score_artist, если текущее значение исполнителя равно тому, которое указано в строке запроса.

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