2014-09-03 100 views
0

所以讓我來描述一下我的問題。我試圖在多列上實現全文搜索。我有一個cd記錄數據表。它包含關於藝術家的專欄和關於記錄名稱的專欄。所以我正在尋找他們兩個。問題是,當我用查詢「女王」搜索示例時,我得到了更好的藝術家「女王簡」的得分,然後是藝術家「女王」。 這是我的搜索邏輯: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 2014-09-03 21:29:32

回答

0

我解決我的prblem加入以下代碼,以我的查詢:

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

我加入這個SELECT *之後,所以現在我用prx_artist繁殖score_artist。如果當前藝術家值等於查詢字符串中的值,那麼它就是您想要乘以score_artist的值。