MySQL(8.0)中文全文检索 (亲测有效)
在一堆文字中找到含有关键字的应用。当然也可以用以下语句实现:SELECT * FROM <表名> WHERE <字段名> like ‘%ABC%’但是它的效率太低,是全盘扫描。Mysql 提供了更高效的方法全文索引(FULLTEXT)
下面上代码!
创建表并建立全文索引
create table test(
id int(11) not null primary key auto_increment,
name varchar(100) not null comment '工商名',
brand varchar(100) default null comment '品牌名',
en varchar(100) default null comment '英文名',
fulltext key (name,brand,en) with parser ngram
)engine=innodb default charset=utf8;
测试
select * from test where match (name,brand,en) against ('北京');
均在my.ini文件中设定,在 [mysqld]的下面追加
需要将搜索短语长度设定合适
ft_min_word_len = 4; 默认值 (只用过这个 其余自己百科)
ft_max_word_len = 84; 默认值
//ngram解析器令牌长度----即aiginst()中字符串切分的最小字符长度
ngram_token_size = 2~10 ; 默认值
切记一点,my.ini文件保存时一定要以ASCII码值保存,否则无法启动MySQL服务器!!!