php关键词匹配度排序,MySQL_mysql 关键词相关度排序方法详细示例分析,小项目有时需要用到关键词搜 - phpStudy...

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);//枚举关键字

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

然后是生成SQL语句的代码

$f = array(”name”,”description”); //查询的字段name=产品名,description=产品描述

$s = array(4,2); //权重,name字段匹配积分4分,description字段匹配积2分,最后按积分排序

//创建查询条件语句

for($i=0;$i

for($j=0;$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”;相关阅读:

javascript实现在网页任意处点左键弹出隐藏菜单的方法

SQL直接操作excel表(查询/导入/插入)

C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法

php实现的操作excel类详解

jQuery过滤HTML标签并高亮显示关键字的方法

在Ubuntu或Debian系统的服务器上卸载MySQL的方法

腾讯、360宣布暂停Win10升级助手服务!问题太多

JavaScript中继承用法实例分析

关于PHP session 存储方式的详细介绍

mysql 添加索引 mysql 如何创建索引

zepto与jquery的区别及zepto的不同使用8条小结

2016年Win10重大更新RedStone版与win10 th2版有什么不同?

java邮件收发功能实现代码

php导出word文档与excel电子表格的简单示例代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值