您的当前位置:首页 --> MYSQL教程 --> mysql 关键词相关度排序方法详细示例分析 |
MYSQL教程 mysql 关键词相关度排序方法详细示例分析 |
浏览次数:507 关键词 ( ) |
查看使用该CPU的产品 查看CPU天梯 |
CPU型号:mysql 关键词相关度排序方法详细示例分析 |
主频:Ghz |
睿频:Ghz |
核心数:个 |
不支持超核心 |
制作工艺: |
插槽类型: |
功耗:0W |
L3缓存:0MB |
支持最大内存: 0GB |
CPU详细参数 |
小项目有时需要用到关键词搜索相关性排序,用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”; |
下一个产品 SQL计算timestamp的差值的方法 上一个产品 EXCEL数据上传到SQL SERVER中的简单实现方法 |