美文网首页
MySql 模糊查询,按匹配度排序

MySql 模糊查询,按匹配度排序

作者: 祖传编程 | 来源:发表于2019-11-05 21:18 被阅读0次

一开始是产品提的需求,从来没用过模糊查询,还能带上匹配程度的。这个就像字符串匹配,应该不存在匹配度这个说法,因为匹配度如何定义也是一件复杂的事情,比如词语的同义等。但是用mysql来实现“伪匹配度”还是可行的。下边总结了几种思路:

数据

一、根据关键字出现的位置,给出不同的权重

     比如只包含关键字的,权重最高。但是缺点也很明显,太粗糙。

SELECT *

FROM demo

WHERE c LIKE '%人民日报%'

ORDER BY

 CASE

   WHEN c LIKE '人民日报' THEN 0

   WHEN c LIKE '人民日报%' THEN 1

   WHEN c LIKE '%人民日报' THEN 3

   ELSE 2

  END

不同权重

二、看长度

       其实也很好理解,长度越短,说明里面匹配的字符越多

SELECT * FROM demo

WHERE c LIKE '%人民日报%'

ORDER BY length(c)

LIMIT 10

剩余长度

但是不能避免出现多个关键字的情况,可以通过比例(剩余长度/长度),越小说明占比越大,匹配度越高:

SELECT *

FROM demo

WHERE c LIKE '%人民日报%'

ORDER BY length(REPLACE(c,'人民日报',''))/length(c)

LIMIT 10

相关文章

  • MySql 模糊查询,按匹配度排序

    一开始是产品提的需求,从来没用过模糊查询,还能带上匹配程度的。这个就像字符串匹配,应该不存在匹配度这个说法,因为匹...

  • 2019-11-11

    模糊查询URL匹配的url ,根据匹配度倒序排序匹配规则: 筛选查询根据一下三个条件来筛选 服务平台 接入方(平台...

  • MySQL模糊查询&排序-方案

    ZERO 持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/artic...

  • mysql 多表关联查询 实现 全文匹配的 模糊搜索接口 SQ

    mysql 多表关联查询 实现 全文匹配的 模糊搜索接口 SQL mysql中FIND_IN_SET的使用方法 ...

  • 05-Mysql数据库02

    mysql数据查询 条件查询 模糊查询 范围查询 判断空 排序 聚合函数 分组 分组要和聚合一起用 分页 连接查询...

  • 2019-11-25_单表查询_模糊

    模糊查询:意思是根据条件模糊查询出符合条件的数据 模糊查询命令: like + "匹配条件" 1,% :表示匹配任...

  • MySQL索引相关原则

    索引创建原则 模糊查询请最好遵守最左前缀查询原则。 a.mysql会一直向右匹配直到遇到范围查询(>、<、betw...

  • MySQL Demo 02

    阅读原文 MySQL Demo 02 1. 排序查询 1.查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序 2...

  • MySQL 排序

    排序查询 查询所有学生记录,按年龄升序排序 查询所有学生记录,按年龄降序排序 查询所有雇员,按月薪降序排序,如果月...

  • mysql查询数据时,如何使用排序操作?

    mysql数据排序 在查询数据时,如果没有使用排序操作,默认情况下SQL会按数据添加的顺序来排列查询结果。 要对数...

网友评论

      本文标题:MySql 模糊查询,按匹配度排序

      本文链接:https://www.haomeiwen.com/subject/tggebctx.html