Mysql入门mysql 关键词相关度排序方法详细示例分析

Mysql入门mysql 关键词相关度排序方法详细示例分析,第1张

概述介绍《Mysql入门mysql 关键词相关排序方法详细示例分析》开发教程,希望对您有用。

《MysqL入门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 关键词相关度排序方法详细示例分析全部内容,希望文章能够帮你解决Mysql入门mysql 关键词相关度排序方法详细示例分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1163206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存