問題:長期以來MYSQL搜索對於中文來講不太理想,InnoDB引擎對FULLTEXT索引的支持是MySQL5.6新引入的特性,可是用「初級」一詞在「我是一名初級開發者」搜索時是沒法出現結果的,緣由在於搜索是以空格來分詞。所以僅能由第三方插件來完成搜索任務。在MySQL 5.7.6中咱們能使用一個新的全文索引插件來處理它們:n-gram parser.mysql
1 安裝環境,推薦使用最新的MYSQL https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-winx64.zipsql
2 ngram_token_size=2 #用中文檢索分詞插件ngram以前,先得在MySQL配置文件裏面設置他的分詞大小. spa
例詞 '信息系統' 在設置爲不一樣值時的分詞狀況插件
ngram_token_size=1 : '信', '息', '系', '統'
ngram_token_size=2 : '信息', '息系', '系統';
ngram_token_size=3 : '信息系', '息系統';
ngram_token_size=4 : '信息系統'; orm
查看指定全文檢索表源(僅查看分詞狀況,可不作,不影響索引)
blog
set global innodb_ft_aux_table='db/table';
SELECT * FROM information_schema.`INNODB_FT_INDEX_TABLE`;
3 全文索引創建索引
a 新建token
CREATE TABLE table(
`id` int(11) DEFAULT NULL,
`name` varchar(512) DEFAULT NULL,
`content` text,
FULLTEXT KEY idx_name(name),
FULLTEXT KEY idx_content(content) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
b 修改ip
ALTER TABLE `table` ADD FULLTEXT (`content`) WITH PARSER ngram;