之前数据库有一个需求是用like %% 实现的,数据一多慢的要死,但又因为需求很小,不想动用elasticsearch 或者其他搜索引擎,发现mysql 5.7之后支持InnoDB 全文搜索,打算用来实现like %%功能

记一下坑点

1. ADD FULLTEXT INDEX `PurPartNo` (`keyword`) //用这种方式默认采用自然语言分词(英文分词)  
2. ADD FULLTEXT INDEX `PurPartNo` (`keyword`) WITH PARSER ngram;
   // 采用ngram方式分词,适合中、韩、日语言
3. 自然语言分词有最小和最大有效字节数,
   数据库变量:ft_min_word_len和ft_max_word_len,不符合的会无效,注意要重启数据库
4. 如果是采用ngram分词,数据库变量:ngram_token_size,如果是中文设置为1,不然无法搜索单字
5. 由于匹配的文本有一定特殊性,无法完全实现like %%功能,但确实很快