- innodb支持全文索引
之前的旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。
后来新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网。
- 全文索引对中日韩的分词支持。
mysql默认的分词用的是Latin,他是根据空格进行分词的。这对于像中文的语言是没发进行分词的,后来mysql又内置了一个支持中日韩文的分词器ngram。分词大小可以通过mysql的配置文件进行配置ngram_token_size=2,默认是两个。 - 创建ngram索引(要指定ngram,否则不支持中文)
ALTER TABLE `octopus`.`material`
ADD FULLTEXT INDEX `idx_fulltext_name`(`name`) WITH PARSER ngram; - 索引查询
1.自然语言查询(n-gram分词查询的并集,例如(‘北欧风格’)转换为(“‘北欧 欧风 风格'”)。)SELECT m.id,m.name,m.modify_date,m.material_image_urls,m.material_zip_url,m.source_type FROM material m where match(name) against('北欧风格' IN NATURAL LANGUAGE MODE);
2.短语查询(按分词来直接匹配)
3.统配符查询SELECT m.id,m.name,m.modify_date,m.material_image_urls,m.material_zip_url,m.source_type FROM material m where match(name) against('北欧风格' IN BOOLEAN MODE);
SELECT * FROM material where match(name) against('北*' IN BOOLEAN MODE);