MySQL配置全文索引
最近在業(yè)務(wù)中遇到了需要使用一個(gè)中文字段多次 like "%str[]%" ,其中str[]表示一個(gè)字符串?dāng)?shù)組,并且之間的關(guān)系是or;
然后自己再加入一個(gè)分詞,這個(gè)查詢條件少說也有快十來個(gè)like 吧,覺得這樣的查詢太難看了。
于是我找到一個(gè)叫做全文索引的東西;
至于全文索引是什么東西,不是這篇文章的重點(diǎn),我會列出我所參考的幾個(gè)網(wǎng)站:
http://blog.csdn.net/zyz511919766/article/details/12780173
http://blog.51yip.com/mysql/1515.html
這里介紹步驟:
1、讀懂MATCH() AGAINST()語法
http://www.justwinit.cn/post/7278/
2、對于一個(gè)尚未創(chuàng)建索引的字段,它會提示:
[Err] 1191 - Can't find FULLTEXT index matching the column list
也就是沒有創(chuàng)建索引,于是需要添加索引
http://blog.csdn.net/u011734144/article/details/52817766
3、再者發(fā)現(xiàn)不能搜索單字,什么意思呢
SELECT * from make where MATCH(search_key) AGAINST('刀' in boolean mode);這樣雖然我的字段里有“刀”,并且“刀”前后是有空格的,都搜不到;
這是因?yàn)樾枰膍ysql的配置文件my.ini(linux下是my.cnf)
[mysqld] port = 3306 innodb_ft_min_token_size=1 ft_min_word_len=1這個(gè)size表示索引詞的最小大小,也有說這個(gè)中文應(yīng)該設(shè)置為2的,這里mark一下以后去查查
4、重啟mysql,發(fā)現(xiàn)還是不行
是因?yàn)樾枰⑿乱延械木彺?#xff1b;
ALTER TABLE table_name ENGINE='innodb';OK,這樣一來就可以了
5、發(fā)現(xiàn)mysql5.7新增了n-gram分詞功能
MySQL 5.7 深度解析: 中文全文檢索
這個(gè)日后研究。。。
?
轉(zhuǎn)載于:https://www.cnblogs.com/yida915/p/6582401.html
總結(jié)
以上是生活随笔為你收集整理的MySQL配置全文索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 3436 小K的农场 差分约束
- 下一篇: RxJava 和 RxAndroid 三