通常我们在进行模糊查询时,都是通过SQL语句的Like来查询的,例如搜索文章标题中带“苹果”两个字的,就搜索 where title like ‘%苹果%’这样来得到结果。但有些时候用户输入的是一句话,例如用户输入:都挺好第一集,而数据库中对应的文章标题可能是:《都挺好》第一集,因为加了书名号的原因,通过like来模糊搜索就搜索不到了。解决办法就是使用全文检索。

添加全文索引

将title字段设置为FULLTEXT索引
如果是英文检索,默认已经可以使用了,因为英文单词是通过空格来分隔的,然后中文没有分隔,都是连一起的,所以就需要分词。

设置最小分词索引长度

首先查询当前的分词索引长度,如果没设置过,默认是4

SHOW VARIABLES LIKE 'ft_min_word_len'

如果是4,则代表对4个字及其以上才建立索引,而中文有时候是两个字甚至1个字,所以建议设置为1,设置办法:打开my.ini,在[mysqld]的最后一行添加:

ft_min_word_len=1

重启MySQL并重建索引:

REPAIR TABLE 表名 QUICK;

新建一个title_word字段,添加全文索引

title_word字段用于存储标题的分词。例如将《都挺好》第一集拆分成:都挺好 第一集两个词语,然后存储在title_word字段中。

将用户搜索的句子也分词

现在用户输入:都挺好第一集,首先将都挺好第一集拆分成:都挺好 第一集两个词语,然后在进行全文检索:

SELECT * FROM `articles` where MATCH(`title_word`) AGAINST ('都挺好 第一集')

这样就可以搜索到结果了。

如果是低于5.7版本的MySQL,也可以将汉字分词转为区位码或者base64encode后,就变成了英文和数字,也可以使用全文索引,参考:https://www.mdaima.com/jingyan/43.html

参考文章:https://www.cnblogs.com/ibook360/p/5073313.html

mysql 分词搜索_MySQL5.7分词全文检索思路相关推荐

  1. mysql 中文分词搜索_php中文分词搜索

    本篇文章主要介绍php中文分词搜索,感兴趣的朋友参考下,希望对大家有所帮助. 1.4个文件(本站下载地址.)解压后,放到一个地方 eg:E:/wamp/scws 2.php.ini 中配置 exten ...

  2. php 搜索引擎 分词_PHP 实现中文分词搜索功能

    中文分词介绍 众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思.例如,英文句子I am a student,用中文则为:"我是一 ...

  3. PHP 实现中文分词搜索功能

    中文分词介绍 众所周知,英语是基于单词的,单词和单词之间用空格隔开,而中文是基于单词的.句子中的所有单词都可以连接起来以描述含义.例如,英文句子"我是学生"将用中文表示" ...

  4. solr mysql 全文搜索_全文检索Solr集成HanLP中文分词

    以前发布过 HanLP 的 Lucene插件,后来很多人跟我说其实Solr更流行(反正我是觉得既然Solr是Lucene的子项目,那么稍微改改配置就能支持Solr),于是就抽空做了个Solr插件出来, ...

  5. Lucene全文检索_分词_复杂搜索_中文分词器

    1 Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包. 1.1 全文检索(Full-text Search)  1.1.1 定义 全文检索就是先分词创建索引,再执行搜索的过 ...

  6. MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

    背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.1 ...

  7. 基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一)

    基于php的Sphinx以及coreseek的全文搜索,中文分词的使用(一) ##1.sphinx简介 1.什么是sphinx Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检 ...

  8. mysql全文搜索插件_MySQL 全文检索 ngram插件

    InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的.但对于像中文,日文和韩文来说,没有这样的分隔符.一个词可以由多个字来组成,所以我们需要用不同的方式来处理. ...

  9. laravel 分词搜索匹配度_【地名地址】面向智慧城市的高精度地名地址匹配方法...

    点击上方蓝字关注我们↑↑↑↑    原 文 摘 要 针对智慧城市建设中各种业务数据对地名地址匹配准确度和效率不高的问题,本文提出一种面向智慧城市的高精度地名地址匹配方法.该方法在基于中文分词的地名地址 ...

最新文章

  1. 如何让本机时间与局域网的一台电脑的日期同步?
  2. 那些感动过我的句子(英文版)
  3. 5.13 卡尔曼滤波
  4. grep搜索子目录中包含某字符串的特定文件
  5. 在ubuntu16.04上安装java和elastic search
  6. JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...
  7. 静能沉淀浮躁,过滤浅薄,调节精神。 静能解读生命的安宁,拥有了然于心的平静。...
  8. [转]Linux中常见目录简介
  9. AngularJS表单操作几个例子(表单提交,表单编辑默认值)
  10. ES6-字符串扩展-padStart(),padEnd()
  11. 卧槽!“饿了么”把“饿了吗”告了,网友:判决结果没想到~
  12. 写给非网工的CCNA教程(3)聊聊ping命令后的原理
  13. LaTex数学符号表(数学中最常用的所有符号)
  14. Ubuntu下GPAC(MP4Box)的安装 | 基于MP4Box搭建DASH视频系统
  15. matlab如何写一个循环,matlab中for循环怎么写
  16. ADAM : A METHOD FOR STOCHASTIC OPTIMIZATION
  17. 七大基本排序算法(升序排列)
  18. 小程序模板消息推送报错 “errcode“:40165,“errmsg“:“invalid weapp
  19. JavaScript——ES8新特性
  20. C语言将一个十进制数转化为二进制

热门文章

  1. android 图片压缩
  2. 相关的验证的正则表达式
  3. Windows Phone开发(35):使用Express Blend绘图 转:http://blog.csdn.net/tcjiaan/article/details/7493010...
  4. ESP32 SDK OTA Demo升级流程
  5. 在机器学习分类中如何处理训练集中不平衡问题
  6. Android studio/sdk/appium/jdk遇到的坑坑洼洼
  7. mate30升级鸿蒙系数据会被清空吗,145直接升级鸿蒙会不会掉资料
  8. Github代码上传和下载
  9. 设计模式--抽象工厂(Abstract Factory)模式
  10. buu Unencode