MySQL中文全文检索

MySQL中文全文检索


1.简介:

常规数据库搜索都是用 like 语句,但是like 语句是不能利用索引的,查询效率极其低下。这也就是为什么很多功能都只提供标题搜索的原因,因为如果搜索内容,几万数据就跑不动了。

Mysql 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。


2.注意事项:

  • 在MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库。从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。

  • 只能在类型为 CHAR、VARCHAR 或者 TEXT 的字段上创建全文索引。

  • 全文索引只支持 InnoDB 和 MyISAM 引擎。

  • MATCH (columnName) AGAINST (‘keywords’)。MATCH()函数使用的字段名,必须要与创建全文索引时指定的字段名一致。

    如:MATCH (title,content)使用的字段名与全文索引t_article(title,conent)定义的字段名一致。

    如果要对 title 或者 content 字段分别进行查询,就需要在 title 和 content 字段上分别创建新的全文索引。

  • MATCH()函数使用的字段名只能是同一个表的字段,因为全文索引不能够跨多个表进行检索。

  • 如果要导入大数据集,使用先导入数据,再在表上创建全文索引的方式,要比先在表上创建全文索引再导入数据的方式快很多。


3.全文检索模式:

常用的全文检索模式有两种:

1、自然语言模式(NATURAL LANGUAGE MODE)

自然语言模式是 MySQL 默认的全文检索模式。

自然语言模式不能使用操作符,不能指定关键词必须出现或者必须不能出现等复杂查询。

2、BOOLEAN 模式(BOOLEAN MODE)
BOOLEAN 模式可以使用操作符,可以支持指定关键词必须出现或者必须不能出现或者关键词的权重高还是低等复杂查询。


4.配置MySQL,创建索引,查询语法等可参考以下文章:

参考链接:https://www.cnblogs.com/miracle-luna/p/11147859.html

.
.
.

你可能感兴趣的:(mysql,全文检索,模糊查询,中文分词)