MySQL(8.0)中文全文检索 (亲测有效)

yumo6663个月前 (03-28)技术文章29

在一堆文字中找到含有关键字的应用。当然也可以用以下语句实现: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服务器!!!