【问题标题】:MySQL Full-text search on multiple columnsMySQL 多列全文搜索
【发布时间】:2014-09-03 17:38:30
【问题描述】:

所以让我描述一下我的问题。我正在尝试在多个列上实现全文搜索。我有一个带有 cd 记录的数据表。它包含关于艺术家的列和关于记录名称的列。所以我正在寻找他们两个。问题是,当我使用查询“queen”进行搜索时,艺术家“queen jane”的得分比艺术家“queen”的得分高。 这是我的搜索逻辑:

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”和“queen jane”的得分是:

band        score_artist        score_title     
queen jane  4.803966045379639   4.078868865966797
queen       4.803966045379639   4.0335259437561035

同样,有没有其他方法可以指定完全匹配的匹配比仅部分匹配的匹配更重要。

谢谢

【问题讨论】:

标签: mysql sql full-text-search


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-01-13
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2012-05-09
    • 2013-03-12
    相关资源
    最近更新 更多