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

 更新时间:2013年08月12日 09:05:43   作者:  
以下是对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<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之information_schema数据库详细讲解

    MySQL之information_schema数据库详细讲解

    这篇文章主要介绍了MySQL之information_schema数据库详细讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Mysql 执行一条语句的整个过程详细

    Mysql 执行一条语句的整个过程详细

    这篇文章主要介绍了Mysql 执行一条语句的整个详细过程,Mysql的逻辑架构整体分为两部分,Server层和存储引擎层,下面文章内容具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-02-02
  • MySQL Server 层四个日志详解

    MySQL Server 层四个日志详解

    这篇文章主要介绍了MySQL Server 层四个日志,包括错误日志,查询日志,二进制日志及慢查询日志,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • 使用MySQL中的AVG函数求平均值的教程

    使用MySQL中的AVG函数求平均值的教程

    这篇文章主要介绍了使用MySQL中的AVG函数求平均值的教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • MySQL数据库的shell脚本自动备份

    MySQL数据库的shell脚本自动备份

    这篇文章主要介绍了MySQL数据库的shell脚本自动备份的相关资料,网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行。我们需要一种安全的,每天自动备份的方法需要的朋友可以参考下
    2017-03-03
  • mysql 8.0.12 安装配置方法图文教程

    mysql 8.0.12 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • myeclipse中连接mysql数据库示例代码

    myeclipse中连接mysql数据库示例代码

    这篇文章主要为大家详细介绍了MyEclipse连接MySQL数据库图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • linux mysql5.6版本的安装配置过程

    linux mysql5.6版本的安装配置过程

    mysql官网开始发布相关的5.6系列的各个版本,对于mysql5.6系列的版本对一起的版本进行了全局性的细节性加强
    2013-06-06
  • MySql 5.6.14 winx64配置方法(免安装版)

    MySql 5.6.14 winx64配置方法(免安装版)

    这篇文章主要介绍了MySql 5.6.14 winx64配置方法(免安装版)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • MySQL-tpch 测试工具简要手册

    MySQL-tpch 测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包。用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能。它包含了一整套面向商业的ad-hoc查询和并发数据修改,强调测试的是数据库、平台和I/O性能,关注查询能力
    2016-05-05

最新评论