Mysql中能做权重搜索吗?

提问者:帅平 问题分类:数据库
Mysql中能做权重搜索吗?类似elasticsearch那样,比如出现的次数多就权重高点排在前面?
1 个回答
缝完心脏、一个人活
缝完心脏、一个人活
可以的,示例如下:
SELECT  *, ( 
    IF(LOCATE('标题',test.t1), 7, 0) 
     + IF(LOCATE('内容',test.t2) , 2, 0) 
     + IF(LOCATE('注释',test.t3) , 1, 0) 
 ) AS weight 
FROM test 
WHERE test.t1 regexp '标题'
 or test.t2 regexp '内容' 
 or test.t3 regexp '注释' 
order by weight desc 

在mysql中使用权重搜索涉及到2个 Mysql 函数。
1、LOCATE('标题', test.t1) : 查询 "标题" 在 test.t1 列出现的位置,0 表示未找到。否则返回 坐标位置,坐标位置从 1 开始。
2、IF( 表达式, 1, 0):判断表达式结果,TRUE 则返回 1,FALSE 则返回 0
发布于:6个月前 (11-04) IP属地:
我来回答