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