第一次在工作中使用全文索引,遇到了一些坑,研究了下,写下我的一些理解。
mysql5.6后InnoDB存储引擎已经支持全文索引。
1、首先创建一张表test2。
CREATE TABLE test2 (
id INT(11),
value2 TEXT
)
2、给test2的value2字段加上全文索引。
ALTER TABLE test2 ADD FULLTEXT(value2);
第一次给一张表加全文索引时,会给一个警告,InnoDB会创建一个列FTS_DOC_ID,后面再添加全文索引的时候,就不会再报警告了。
3、往test2表添加一些数据。
SELECT * FROM test2 WHERE MATCH(value2) AGAINST('1')
发现匹配不到任何数据,原因是mysql全文索引查询关键词最小长度默认限制为4。
注意:最小长度限制可进行修改,但是建议不要修改,因为长度太小会影响查询效率。
windows系统可以在my.ini配置文件中添加ft_min_word_len = 1(表示最小长度限制为1),保存后需要重启mysql。
用SHOW VARIABLES可以查看,我这里采用的还是默认的长度4。
4、修改test2中的数据。
SELECT * FROM test2 WHERE MATCH(value2) AGAINST('12345')
发现匹配不到任何数据,原因是“12345”超过了50%的条数,这里总共5条数据,“12345”占了3条,“1234”可以匹配出两条数据。