对于刚使用mysql全文索引搜索的童鞋,第一个疑惑可能就是,为什么我搜索xx结果不显示呢?明明我数据里面有。这个问题有很多种原因,其中最常见的就是ft_min_word_len(最小搜索长度)导致的。

准备测试数据如下CREATE TABLE mysql_fulltext

(id BIGINT UNSIGNED AUTO_INCREMENT,

text_info VARCHAR(1000) NOT NULL,

PRIMARY KEY(id),

FULLTEXT(text_info)

)ENGINE=MYISAM DEFAULT CHARSET utf8 COMMENT 'mysql全文索引测试表';

INSERT INTO `mysql_fulltext`(text_info)  VALUES ('a'),('b'),('c'),('aa'),('bb'),('cc'),('aaa'),('bbb'),('ccc'),('aaaa'),('bbbb'),('cccc');

使用如下语句进行搜索SELECT * FROM `mysql_fulltext` WHERE MATCH(text_info) AGAINST('a');

SELECT * FROM `mysql_fulltext` WHERE MATCH(text_info) AGAINST('aa');

SELECT * FROM `mysql_fulltext` WHERE MATCH(text_info) AGAINST('aaa');

按照我们的惯性思维,应该会显示四条数据才对;但结果却是一条数据都没有。

但是我们执行SELECT * FROM `mysql_fulltext` WHERE MATCH(text_info) AGAINST('aaaa');

却有结果如下:

我们看一下全文索引相关的参数设置。SHOW GLOBAL VARIABLES LIKE '%ft_%';

5.6之前myisam的全文索引,需要调节的参数相对来说比较少,只有以上五个。ft_boolean_syntax:全文索引分词关键字,不能更改,为内置变量

ft_max_word_len:最大分词长度,一般情况下不需要更改

ft_min_word_len:最小分词长度,一般修改为1

ft_query_expansion_limit:不明觉厉的一个参数,基本上不需要设置

ft_stopword_file:全文停止词

我们发现ft_min_word_len为4,默认是该值。也就是说,mysql fulltext只会对4个字或者4个字以上的关键字进行建立索引操作。而刚刚搜索的'a','aa','aaa'关键字长度都小于4。

全文索引相关的参数都无法进行动态修改,我们需要在/etc/my.cnf添加参数ft_min_word_len=1,并且重启mysql服务器,重启完毕之后,对应表执行repair操作。理论上,涉及到ft_相关参数修改的,都需要重启服务器,并且修复所有含有fulltext索引的表。

使用如下sql语句寻找含有fulltext索引的表SELECT DISTINCT CONCAT('repair table ',table_schema,'.',table_name,' quick;') FROM information_schema.`STATISTICS` WHERE index_type='fulltext'

我们修复mysql_fulltext后,执行查询语句REPAIR TABLE mysql_fulltext QUICK;

SELECT * FROM `mysql_fulltext` WHERE MATCH(text_info) AGAINST('a');

以上查询,能查询到对应的数据。

但是疑问来了,为什么我查询关键字'a',却无法搜索出'aa','aaa','aaaa'关键字对应的行呢?

有兴趣的童鞋可以自行思考一下,或者关注我后续的mysql全文索引相关文章。

mysql ft_mysql全文索引____ft_min_word_len相关推荐

  1. MySQL 之全文索引

    最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录. 引入 概念 通过数值比较.范围过滤等就 ...

  2. MySQL之全文索引详解

    点击上方"猿芯",选择"设为星标" 后台回复"1024",有份惊喜送给面试的你 概念 通过数值比较.范围过滤等就可以完成绝大多数我们需要的查 ...

  3. MySQL使用全文索引(fulltext index)

    1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...

  4. MySQL使用全文索引

    MySQL使用全文索引(fulltext index)---高性能 转载地址:https://blog.csdn.net/u011734144/article/details/52817766/ 1. ...

  5. MySQL使用全文索引(fulltext index) 及中文全文索引使用

    全文索引介绍 1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上In ...

  6. MySQL 之全文索引(fulltext)

    本文源自:https://blog.csdn.net/mrzhouxiaofei/article/details/79940958 最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽 ...

  7. Mysql的全文索引原理的简单理解

    Mysql的全文索引实际是通过 倒排索引 来实现的. 倒排索引实际就是将要插入的文本按照相应的词进行拆分,然后额外建立一张表,存储这些出现的单词,并做出相应的统计. 创建一张表: CREATE TAB ...

  8. MySQL配置全文索引

    最近在业务中遇到了需要使用一个中文字段多次 like "%str[]%" ,其中str[]表示一个字符串数组,并且之间的关系是or; 然后自己再加入一个分词,这个查询条件少说也有快 ...

  9. mysql创建全文索引

    原文链接:http://www.cnblogs.com/zhouguowei/p/5216316.html 使用索引时数据库性能优化的必备技能之一.在MySql数据库中,有四种索引:聚焦索引(主键索引 ...

最新文章

  1. Linux下C程序的反汇编【转】
  2. 说人话,搜代码,Facebook发布神经代码搜索数据集+benchmark
  3. .net core webapi 前后端开发分离后的配置和部署
  4. Axure在SVN共享项目如何获取历史文件
  5. P5714 【深基3.例7】肥胖问题--python3实现
  6. 初分配和再分配图解_针织好看暖和的儿童帽子图解教程,宝妈们千万不要错过...
  7. oracle中对排序的总结(按照拼音、部首、笔画排序功能 )
  8. 谷歌语音识别功能Live Transcribe,让AI帮助语言障碍者“说话”
  9. a标签增加onclick事件提示未定义function
  10. html关机命令,自动关机命令 定时关机命令
  11. 树莓派Raspberry pi 4B 运行 WuKong-Robot 智能语音对话机器人
  12. 学python还是labview_Labview个人感受
  13. 潜伏多年的中文编程语言该不该发展起来(科技无国界,呵呵)
  14. word里面空白页怎么删除
  15. 视频搬运专业版-为搬运而生
  16. python中print()换行的问题
  17. amoled led 排列_为何AMOLED屏幕不用RGB排列?
  18. 开黑不卡顿,运行不掉帧,高通骁龙 835 助力 NEST 2017 王者荣耀组决赛
  19. 数学建模暑期集训21:主成分分析(PCA)
  20. python实现视频剪辑_MoviePy常用剪辑类及Python视频剪辑自动化

热门文章

  1. [转]Delphi 2010 3513正式版破解
  2. windows下磁盘IO性能数据评测
  3. 第四章课后习题及答案
  4. HTML5/CSS3实现图片倒影效果
  5. GridView编辑删除操作
  6. 剑指 offer set 28 实现 Singleton 模式
  7. 51,AVR,PIC,DSP,DIY等资源
  8. java月份去0_java – 使用月份解析日期而不是前导0
  9. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...
  10. 【ABAP】带Excel附件的邮件发送功能