开发者社区> 问答> 正文

如何处理MySQL全文搜索的相关性,以使一个字段比另一字段更“有价值”??mysql

假设我有两列,关键字和内容。我对两者都有全文索引。我希望关键字中带有foo的行比内容中带有foo的行更具相关性。我该怎么做才能使MySQL对关键字中的匹配项进行加权,使其比内容中的匹配项高?

我正在使用“匹配条件”语法。

解:

能够通过以下方式进行这项工作:

SELECT *, CASE when Keywords like '%watermelon%' then 1 else 0 END as keywordmatch, CASE when Content like '%watermelon%' then 1 else 0 END as contentmatch, MATCH (Title, Keywords, Content) AGAINST ('watermelon') AS relevance FROM about_data
WHERE MATCH(Title, Keywords, Content) AGAINST ('watermelon' IN BOOLEAN MODE) HAVING relevance > 0
ORDER by keywordmatch desc, contentmatch desc, relevance desc

展开
收起
保持可爱mmm 2020-05-17 21:02:06 1287 0
1 条回答
写回答
取消 提交回答
  • 您可以使用NOW():

    INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time) VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())来源:stack overflow

    2020-05-17 21:07:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像