磐石网站建设,网站权限设计,档案网站建设愿景,廊坊企业做网站在MySQL 5.7.6之前#xff0c;全文索引只支持英文全文索引#xff0c;不支持中文全文索引#xff0c;需要利用分词器把中文段落预处理拆分成单词#xff0c;然后存入数据库。 从MySQL 5.7.6开始#xff0c;MySQL内置了ngram全文解析器#xff0c;用来支持中文、日文、韩文…在MySQL 5.7.6之前全文索引只支持英文全文索引不支持中文全文索引需要利用分词器把中文段落预处理拆分成单词然后存入数据库。 从MySQL 5.7.6开始MySQL内置了ngram全文解析器用来支持中文、日文、韩文分词。 本文使用的MySQL 版本是5.7.22InnoDB数据库引擎。
1.修改my.ini文件增加ngram 解析器增加ngram_token_size 2然后重启MYSQL服务
[mysql]
# 设置mysql客户端默认字符集
default-character-setutf8
[mysqld]
# 设置3306端口
port 13306
#mysql-5.7.43-winx64的路径
basedir D:\install\mysql\mysql-5.7.44-winx64 #修改为自己的数据库解压路径
#mysql-5.7.43-winx64的路径\data
datadir D:\install\mysql\mysql-5.7.44-winx64\data #修改为自己的数据库存储路径
# 允许最大连接数
max_connections20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-serverutf8
# 创建新表时将使用的默认存储引擎
default-storage-engineINNODB
# 创建模式
sql_mode NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
ft_min_word_len 1
ngram_token_size 2
2.创建带索引表
CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR (200),body TEXT,FULLTEXT (title) WITH PARSER ngram
) ENGINE INNODB;或修改表添加索引
drop index ft_title on articles;create fulltext index ft_title on articles(title) WITH PARSER ngram;
3.查询验证
SELECT * FROM articles WHERE MATCH (title) AGAINST (上海 故事 IN NATURAL LANGUAGE MODE);SELECT * FROM articles WHERE MATCH (title) AGAINST (上海 故事 IN BOOLEAN MODE);