mysql全文索引使用方法

本文记录的是mysql全文索引支持中文的使用步骤s

1.mysql全文索引应用场景

在一些查询场景中,我们需要进行模糊查询。多数情况下我们会使用like语法进行模糊匹配,但是like只能查询包含该字符串的结果,如果我们搜索“衣服鞋子”,如果使用like,结果只会返回包含“衣服鞋子”的结果。我们期望的是包含“衣服”和“鞋子”的结果都能够查询出来,这时候就需要用到全文索引。(PS:我们大多数情况下会使用ElasticSearch、Sphinx等来做搜索。本文只记录mysql的全文索引使用方法)

InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。 Mysql内置了中文分词器Ngram,用来支持中文搜索。

2.mysql全文索引的使用方法

2.1修改my.ini配置文件

[mysqld]
ngram_token_size=1  #增加分词大小配置,默认为4:只有四个字的时候才能分词搜索

配置完之后,需要重启数据库服务

2.2创建索引

alter table tableName add fulltext index indexName(column1,column2...) with parser ngram;
PS:可以对多个列创建全文索引,在搜索的时候会对多个列进行搜索词匹配

2.3查询语法

select * from tableName where match(column1,column2) against("+张 +李 " in boolean mode)

查询列column1,column2必须包含“张”和“李”的记录
具体语法参考网上其他资料。

你可能感兴趣的:(mysql全文索引使用方法)