通常我们在进行模糊查询时,都是通过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

sqlite 检索的字段结果前加空格_MySQL5.7分词全文检索思路相关推荐

  1. c语言输入字符时控制符%c前加空格的原因解释

    文章目录 一.前景知识 1.缓冲区 2.标准输入流 二.scanf语句的执行 1.scanf对于整形%d的输入 2.scanf对于字符%c的输入    在编一个代码时偶然间发现一个知识盲点-用scan ...

  2. Excel添加宏之 大写字母前加空格

    Excel很强大,但有些时候我们需要完成一些自定义的功能,则需要用到宏,然后在Excel中调用该宏进行执行.现在以 大写字母前加空格为例,实现效果如下图 首先打开要编辑的Excel表格,然后按Alt+ ...

  3. 两表联合查询,字段名重复该怎么办(字段名前加表名)

    如图示:intro有两个 报错为: 所以我们需要在字段名前添加表名予以区分 结果,为了区分,第二个intro自动增加了(1)用来区分 所以,为了我们更好的区分intro,我们给第二个取个名字 结果为:

  4. sql中的模糊查询及字段前加N的作用

    sql语句中在字段前加N: 解决乱码问题 N表示Unicode的含义,不加N时字符串默认采用数据库所采用的定序所对应的字符集,加上N表示字符串采用Unicode ,对于数据库的默认编码方式不确定的情况 ...

  5. Python字符串前加f、r、b、u的不同用法

    一.字符串前加"f" 1. % 可以使用 % 格式化字符串. c = (250, 250) # 使用 % 格式化 s1 = "坐标为:%s" % c # Typ ...

  6. c语言字母意义,C语言 字符串前加L的意义 如:L“A”

    转自:http://c.biancheng.net/cpp/html/1069.html Unicode或者宽字符都没有改变char数据型态在C中的含义.char继续表示1个字节的储存空间,sizeo ...

  7. python 字符串前加r b u f 含义

    python 字符串前加r b u f 含义 文章目录: 一.字符串前加 `r` 二.字符串前加 `b` 三.字符串前加 `u` 四.字符串前加 `f` 五.Python3.x中字符串转换成字节类型 ...

  8. 《Excel 职场手册:260招菜鸟变达人》一第 20 招 怎样在单元格文字前加空白

    本节书摘来异步社区<Excel 职场手册:260招菜鸟变达人>一书中的第1章,第20节,作者: 聂春霞 , 佛山小老鼠 责编: 王峰松,更多章节内容可以访问云栖社区"异步社区&q ...

  9. 数据库工作笔记016---SqlServer2016_日期处理_ntext和text区别_开启远程连接_查看系统COm组件_Browser服务无法启动_导出数据_字符串前加N

    JAVA技术交流QQ群:170933152 sqlserver中的类型: ntext和text一样用来保存大量的文字数据,不过text用单字节保存数据 ,ntext固定用双字节保存数据. ntext保 ...

  10. 下载数据库名前加“#”方法

    数据库名前加"#" 只需要把数据库文件前名加上"#",然后修改数据库连接文件(如conn.asp)中的数据库地址.原理是下载的时候只能识别"#&quo ...

最新文章

  1. 平台篇-58 HBase 平台实践和应用
  2. 事务的四大特性、事务处理开始与结束、v$transactio、 v$LOCK
  3. C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上
  4. location 拦截所有_让它帮你干掉所有流氓软件,还你一个清静系统
  5. 塞内卡学院实现开源的价值
  6. SystemCenter2012SP1实践(0)本系列摘要目录
  7. 4-1 ADO.NET简介 4
  8. Visio-Cisco-华为-IBM网络设备官方模板
  9. 23根火柴游戏程序,c语言实现人和计算机一起玩。 每日一题--20200423--
  10. 奔图 Pantum M6550 打印机驱动
  11. python中if in是什么意思_python中的in是什么意思
  12. 飘云QQ宣布终止后续开发 称不懂游戏规则玩不起
  13. win10系统瑞星杀毒的卸载
  14. 沉舟侧畔千帆竞,百舸争流稳为先——正雅齿科
  15. python txt文件常用读写操作
  16. 《斯坦福高效睡眠法》读书笔记思维导图版,成年人的睡眠解决法
  17. excel如何显示多个独立窗口
  18. 贵州小县城出身的“网约车品牌”,如何拓县出省、走向全国?
  19. C++ 快读快输模板
  20. 云计算中的网络基础知识

热门文章

  1. eclipse git 上传工程 提交项目到 github
  2. Response.Redirect 打开这两种方法的一种新形式
  3. SpringMVC+uploadify3.2.1版实现附件上传功能(直接可以使用)
  4. 通过CSS3 Media Query实现响应式Web设计
  5. 深入理解JavaScript系列
  6. QBXT Day 4 数学,数论
  7. Python 字典 get() 方法
  8. 【简单】Linux 搭建 UOJ
  9. Gradle Maven部署,转化
  10. php常量的声明和使用