MySQL对多列进行全文搜索

时间:2014-09-03 17:38:31

标签: mysql sql full-text-search

让我来描述一下我的问题。我正在尝试在多个列上实现全文搜索。我有一个带有cd记录的数据表。它包含关于艺术家的专栏和关于记录名称的专栏。所以我正在搜索它们。问题在于,当我用查询" queen"进行搜索时,我会得到更好的艺术家评分"女王jane"然后是艺术家"女王"。 这是我的搜索逻辑:

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;

例如" queen"和女王简"是:

band        score_artist        score_title     
queen jane  4.803966045379639   4.078868865966797
queen       4.803966045379639   4.0335259437561035

再说一遍,有没有其他方法可以指定完全匹配的匹配更重要,只是部分匹配。

由于

1 个答案:

答案 0 :(得分:0)

我通过在查询中添加以下代码解决了我的问题:

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

我在SELECT *之后添加了这个,所以现在我使用prx_artist来乘以score_artist。如果当前艺术家的值等于查询字符串中的值,则只是想要与score_artist相乘的值。