MySQL 关键字模糊匹配,并按照匹配度排序。

方式一、按照关键字搜索,然后根据关键字所占比例排序

SELECTdrug_name,pinyin
FROMtbl_drug
WHEREpinyin LIKE '%AM%'
ORDER BYLENGTH(pinyin);

效果如下

方式二、将关键字开头记录排序在前

SELECTdrug_name,pinyin
FROMtbl_drug
WHEREpinyin LIKE 'AM%'
UNIONSELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE '%AM%';

效果如下

方式三、将关键字开头排序在前,再根据匹配度排序记录

SELECTdrug_name,pinyin
FROM(SELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE 'AM%'ORDER BYLENGTH(pinyin)LIMIT 999999) t1
UNIONSELECTdrug_name,pinyinFROM(SELECTdrug_name,pinyinFROMtbl_drugWHEREpinyin LIKE '%AM%'ORDER BYLENGTH(pinyin)LIMIT 999999) t2
LIMIT 0,20;

结果如下,这块中文 “()” 所占长度较大。在此有一个问题,子查询的排序无效,如果子查询中 order by 不带 limit,会被优化器干掉

以上方式为网上整理总结,下面这个方式为个人改进

方式四、先根据关键字所在字段 index 排序,然后再根据匹配度排序

SELECTdrug_name,pinyin
FROMtbl_drug
WHEREpinyin LIKE '%AM%'
ORDER BYLENGTH(substring_index(pinyin,'AM',1)),LENGTH(pinyin)
LIMIT 0,20

效果如下

延伸版:

SELECTdrug_name,pinyin
FROMtbl_drug
WHERELOCATE( "阿", pinyin ) > 0 OR LOCATE( "阿", drug_name ) > 0
ORDER BYLOCATE( "阿", pinyin ),LOCATE( "阿", drug_name ),LENGTH( pinyin );

结果如下:

MySQL 关键字模糊匹配按照匹配度排序相关推荐

  1. mysql 关键字高级查询并根据精确度排序

    mysql 关键字查询并根据精确度排序 给大家分享一个mysql的查询 需求是这样的. 最近做个网站,上面有个关键字搜索的功能,和百度搜索似的,但是还远远达不到那种搜索,有想过使用搜索引擎做,但是项目 ...

  2. mysql 关键字模糊查询_MySQL单表多关键字模糊查询的实现方法

    在最近的一个项目需要实现在MySQL单表多关键字模糊查询,但这数个关键字并不一定都存在于某个字段.例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题 ...

  3. MySQL模糊查询 结果按匹配度 排序

    我们在使用 MySQL 进行模糊查询的时候,受到默认排序的影响,我们会发现与查询关键字相似的记录有时候并没有排到最前面. 如 : CREATE TABLE user(id BIGINT(11) AUT ...

  4. Mysql 获取模糊,根据模糊查询匹配度大小排序

    方法一: 根据匹配结果的长短排序 select * from audit_manage_pro where pro_name LIKE '%集成电路%' ORDER BY ABS(LENGTH(pro ...

  5. SQL 模糊查询后按匹配度排序 CASE WHEN THEN

    表如下: SELECT * FROM "table1" where name like '%玉米%' 很明显这个会返回所有的行,因为每行都满足条件 若我想在模糊查询后,进行排序,完 ...

  6. sql模糊匹配按匹配度匹配的五种方法

    上周接了个新需求,写完之后产品让我加一下模糊匹配按照匹配度匹配,查阅相关资料写出了四种,产品直呼过瘾. 1 .order by case 不过在数据量大的时候查询会很慢,甚至有可能崩溃宕机 SELEC ...

  7. mysql地名模糊匹配合并_对乡村地名进行模糊匹配

    想法是这样的,根据一个随手输入的乡村地名,匹配出其严格的五级行政地址.例如输入的"无极县东侯坊乡南池阳村助农点",便要匹配出"河北省-石家庄市-无极县-东侯坊乡-南池阳村 ...

  8. SQL匹配多字段进行排序,搜索

    谈到搜索,一般就想起了SQL Server的FullTextSearch(全文搜索)功能,它确实强大,但使用起来也要做一些较为繁琐的准备工作,一般小型的项目或者对搜索要求(包括性能需求)不是很高的情况 ...

  9. 模糊匹配 读音_onenote搜索机制详解②:两种搜索模式,模糊与精确匹配

    先从纯文本搜索讲起,这是最基本也是最重要的. 从这篇开始,以及接下来连续几篇文章,都会介绍搜索的基础功能.注意,这几篇文章中谈论的都是基本的.正常的搜索功能,暂时不考虑Bug等因素. 在很多软件(例如 ...

最新文章

  1. 兔子不吃窝边草,跳槽不跳窝边槽。。。
  2. 经典C语言程序100例之三六
  3. 深度学习基础知识介绍
  4. 大数据与Hadoop
  5. mysql中的正向工程_Hibernate系列之正向工程
  6. c语言 函数的参数传递示例_llround()函数以及C ++中的示例
  7. javascript指南_JavaScript还原方法指南
  8. xlsxwriter php,Xlsxwriter
  9. SQL Server数据类型概述
  10. 每日一道算法题 - KaprekarsConstant(hard-1)
  11. centos 常用的网络登录端口测试工具
  12. qq空间显示手机型号android,qq空间如何设置显示手机型号
  13. JAVA:二进制与十进制转换
  14. 在hive上创建数据
  15. Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
  16. 体素转换为点云(VRN)
  17. 力荐神器级员工考核工具:谷歌OKR
  18. JAVA计算机毕业设计东理咨询交流论坛计算机(附源码、数据库)
  19. 程序员1个经验反复用了10年?工资不涨,那是最终被迫成长的结果
  20. 我的架构梦:(九十九)消息中间件之RocketMQ的高可用机制——消息消费高可用

热门文章

  1. 码农与大神也许只是一步之遥
  2. python中一切内容都可以称为_Python中对象的概念很广泛,Python中的一切内容都可以称为 。...
  3. 第二章--图形图像处理技术——基础理论和基本工具的使用
  4. Java-SpringBoot-使用SNMP对交换机/服务器进行简单的数据采集
  5. Spark on YARN - Clinet模式运行spark报错问题
  6. 用python写一个ip查询工具库
  7. 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
  8. 使用微信开发者工具的调试器
  9. 视频号无人直播怎么弄?微信视频号无人直播教程【无需软件】
  10. 如何通过云效Projex让项目协作任务不再千篇一律