让我来描述一下我的问题。我正在尝试在多个列上实现全文搜索。我有一个带有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
再说一遍,有没有其他方法可以指定完全匹配的匹配更重要,只是部分匹配。
由于
答案 0 :(得分:0)
我通过在查询中添加以下代码解决了我的问题:
CASE WHEN artist = 'death'
THEN <some value>
ELSE 1
END AS prx_artist,
我在SELECT *之后添加了这个,所以现在我使用prx_artist来乘以score_artist。如果当前艺术家的值等于查询字符串中的值,则只是想要与score_artist相乘的值。