手机
当前位置:查字典教程网 >编程开发 >mysql数据库 >mysql 关键词相关度排序方法详细示例分析
mysql 关键词相关度排序方法详细示例分析
摘要:小项目有时需要用到关键词搜索相关性排序,用sphinx显得杀鸡用牛刀,就用mysql的orderby对付下。方法一:复制代码代码如下:sel...

小项目有时需要用到关键词搜索相关性排序,用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);//枚举关键字

这里还需要添加一个去掉标点符号的代码,但是这段代码会出现问题,不知道如何解决。

然后是生成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中用于数据迁移存储过程分享

mysql导入数据库文件最大限制的修改

Redis SORT排序命令使用方法详解

Windows mysql 双向同步设置方法 详细篇

Mysql 建库建表技巧分享

mysql 中文乱码 解决方法集锦

MYSQL 随机 抽取实现方法及效率分析

关于MYSQL 远程登录的授权方法 命令

完整的mysql主从配置方法

mysql中判断记录是否存在方法比较

精品推荐
分类导航