一、语法:

MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier:
 {
 IN NATURAL LANGUAGE MODE
 | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
 | IN BOOLEAN MODE
 | WITH QUERY EXPANSION
 }

二、MySQL支持全文索引和搜索

1、全文索引在MySQL里面索引类型是:FULLTEXT

2、全文索引只能用在InnoDB或者 MyISAM存储引起的表中,并且只能在CHAR, VARCHAR, TEXT类型的字段上创建

3、MySQL内置的全文ngram解析器支持中文、日文和韩语,还提供一个可安装的日语的MeCab全文解析器插件。

4、全文索引可以在CREATE TABLE执行的时候随表一起创建,也可以通过ALTER TABLE 或 CREATE INDEX命令随后添加

5、对于大数据量的加载,先把数据加载到表里面然后再创建全文索引要比创建全文索引之后再加载数据到表里面快很多

三、

全文搜索采用match()...against语法来执行。match()使用逗号分隔的列表来表示那些需要被搜索的列。against传入的是搜索的字符,和可选择的修饰符来指示使用哪种搜索类型。搜索的字符串在查询过程中必须是字符串常量值,这就排除了类似于表列的值,因为每一行的列值会存在不同。

四、三种类型的全文索引

1、自然语言搜索

      将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。除了双引号(“)字符外,没有特殊运算符。如果指定了IN NATURAL LANGUAGE MODE修饰符或未指定修饰符,则全文搜索使用自然语言搜索。

2、布尔搜索

      使用特殊查询语言的规则解释搜索字符串。字符串包含要搜索的单词。它还可以包含一些操作符,这些操作符指定了一些要求,比如一个单词必须出现在匹配的行中,或者在匹配的行中不出现,或者它的权重应该比通常的高或低。某些常用词(stopwords)将从搜索索引中省略,如果出现在搜索字符串中,则不匹配。使用IN BOOLEAN MODE修饰符指定布尔搜索。

3、查询扩展搜索

      对自然语言搜索的修改。搜索字符串用于执行自然语言搜索。然后将搜索返回的最相关行中的单词添加到搜索字符串中,然后再次执行搜索。查询返回第二次搜索的行。使用IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION或者 WITH QUERY EXPANSION修饰符指定查询扩展搜索