1,检查mysql版本(必须大于等于5.7):
mysql -V
2,修改配置文件设置分词大小:
/etc/my.cnf在[mysqld]下添加:
ngram_token_size=2
注:这个2是指定的分词的长度大小;一般2个字比较好。分词的SIZE越小,索引的体积就越大,所以要根据自身情况来设置合适的大小。
3,然后重启你的mysql服务
4,对需要全文索引的字段建立索引:
这里分为两种情况:
4.1以及建立好表,但是还没有创建全文索引,建立全文索引的方法:
alter table tablename add fulltext index testfulltext(clumn1,clumn2) with parser ngram;
注:tablename 是要建立索引表的名字 testfulltext 是给索引取的名字 里面的 clumn1,clumn2是要建立索引的字段名。
4.2如果你还没有建立表,那么可以直接在创建表的是加上全文索引:
CREATE TABLE tablename ( id INTUNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) WITH PARSER ngram ) ENGINE=InnoDB CHARACTER SET utf8mb4;注:目前很多mysql管理工具创建的全文索引都无法查询出内容,需要手工在终端执行才能真正建立索引,得到数据。
5,全文索引查询语句:
SELECT * FROM tablename WHERE MATCH (title,body) AGAINST ('关键词' IN NATURAL LANGUAGE MODE);
注:上面的意思是查询 tablename表中 title和body字段都包含 关键词 的记录
SELECT * FROM tablename WHERE MATCH (title,body) AGAINST ('+数据库 +管理' IN BOOLEAN MODE);注:上面的意思是查询tablename表中 title和body字段既包含数据库 又包含管理的记录
SELECT * FROM tablename WHERE MATCH (title,body) AGAINST ('+数据库 -管理' IN BOOLEAN MODE);注:上面的意思是查询tablename表中 title和body字段既只包含数据库 但是不包含管理的记录
SELECT * FROM tablename WHERE MATCH (title,body) AGAINST ('>数据库 +MySQL' INBOOLEAN MODE)注:上面的意思是查询tablename表中 title和body字段既包含MySQL 也包含数据库但是降低数据库的相关性的记录
6,对索引的删除:
DROP INDEX index_name ON talbe_name7,查看索引:
show index from tblname;8,查看查询语句使用了哪些索引:
explain select * from table_name/G;好了mysql5.7之中文全文索引的配置和查询语法的教程就介绍到这里。
除特别注明外,本站所有文章均为博文家原创,转载请注明出处来自https://www.32e.top/databases/mysql/article-147.html
暂无评论