在MySQL中,我们使用like+通配符或者正则表达式来搜索简单的文本,但这两种方式搜索比较限制,我们可以使用全文搜索实现前两者无法实现的搜索机制。
使用全文搜索必须定义一个全文索引fulltext,可使用数据库管理工具中"设计表"的功能,设置索引,或使用语法:
ALTER TABLE 'table_name' ADD FULLTEXT ('column')
(但是,全文索引仅可用于MyISAM表,生成全文索引耗时耗空间。)
生成索引后,就可以进行全文搜索了。
全文搜索语法:MATCH(索引) ... AGAINST(字串)
如果设置后全文搜索不成功,可能是因为中文的原因。
MySQL默认的中文分词最小为4,因为中文分词比较复杂,以前一般需要额外使用插件,5.7版本以后,MySQL内置了ngram全文检索插件,可在my.ini配置文件中修改参数,使得分词大小=2。
操作如下:
1、首先,show variables like 'ngram_token_size'; 查看分词大小
2、找到MySQL的my.ini配置文件(安装路径下),
注意,先去注册表找到MySQL配置文件的路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL,右侧ImagePath数据列即是。
按上述找到my.ini的路径后,打开文件
3、在 [mysqld] 下将 ngram_token_size改为=2,如果没有该参数,可以直接添加 ngram_token_size=2