Mysql入门mysql 关键词相关度排序方法详细示例分析
发布时间:2020-12-12 01:19:40 所属栏目:MySql教程 来源:网络整理
导读:《Mysql入门mysql 关键词相关度排序方法详细示例分析》要点: 本文介绍了Mysql入门mysql 关键词相关度排序方法详细示例分析,希望对您有用。如果有疑问,可以联系我们。 MYSQL应用 小项目有时需要用到关键词搜索相关性排序,用sphinx显得杀鸡用牛刀,就用mysql
《Mysql入门mysql 关键词相关度排序方法详细示例分析》要点: MYSQL应用小项目有时需要用到关键词搜索相关性排序,用sphinx显得杀鸡用牛刀,就用mysql的order by对付下. select * from articles where (title LIKE '%keywords%') or (content LIKE '%helloworld%') order by ((CASE WHEN title LIKE '%keywords%' THEN 2 ELSE 0 END) + (CASE WHEN content LIKE '%helloworld%' THEN 1 ELSE 0 END)) ASC,dateline DESC 方法二: 打个比方,如果搜索关键字“IBM”,“服务器”, 首先,对搜索关键字的处理,代码如下: 代码如下: $kw = preg_replace("/(s+)|( +)+/","",$kw);//替代空格,换行,tab,中文空格 $kw = preg_replace( "/(^s*)|(s*$)/ ",$kw);//去除首尾空格 $kw = preg_replace("/(s+)/",$kw);//替换多个空格为一个空格 $q = explode('',$kw);//枚举关键字 这里还需要添加一个去掉标点符号的代码,但是这段代码会出现问题,不知道如何解决. MYSQL应用然后是生成SQL语句的代码 $f = array(”name”,”description”); //查询的字段name=产品名,description=产品描述 $s = array(4,2); //权重,name字段匹配积分4分,description字段匹配积2分,最后按积分排序 代码如下: //创建查询条件语句 for($i=0;$i<count($q);$i++){ for($j=0;$j<count($f);$j++){ $clause[$c] = ” (”.$f[$j].” LIKE ‘%”.$q[$i].”%') “; $score[$c] = ” IF(LOCATE('”.$q[$i].”‘,“.$f[$j].”),“.$s[$j].”,0) “; $c++; } } $sql = “SELECT id,name,description, (”.implode(”+”,$score).”) AS score FROM product WHERE (”.implode(” OR “,$clause).”) ORDER BY score DESC”; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Mysql应用mysql通过查看跟踪日志跟踪执行的sql语句
- MYSQL教程myeclipse中连接mysql数据库示例代码
- MySQL UPDATE时主键冲突引发的思考
- MYSQL数据库mysql如何处理varchar与nvarchar类型中的特殊字
- Mysql入门禁止mysql做域名解析(解决远程访问mysql时很慢)
- mysql left join 多条记录 1:n 的处理方法
- Mysql实例mysql怎么去除字段中换行符与回车符
- c# – MYSQL中不存在Canonical Function“EntityFunctions
- MySQL的权限
- Mysql应用MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语