18. 全文本搜索
1. 理解全文本搜索
2. 使用全文本搜索
- 为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断地重新索引。在对表列进行适当设计后,MySQL会自动进行所有的索引和重新索引。
2.1. 启用全文本搜索支持
- 一般在创建表时启用全文本搜索。
- CREATE TABLE语句(第21章中介绍)接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表
- MySQL根据子句FULLTEXT(note_text)的指示对它进行索引。
- 不要在导入数据时使用FULLTEXT
2.2. 进行全文本搜索
- 在索引之后,使用两个函数Match()和Against()执行全文本搜索,其中Match()指定被搜索的列,Against()指定要使用的搜索表达式。
- 传递给Match()的值必须与FULLTEXT()定义中的相同。如果指定多个列,则必须列出它们(而且次序正确)。
- 具有较高等级的行先返回(因为这些行很可能是你真正想要的行)
2.3. 使用查询扩展

2.4. 布尔文本搜索
MySQL支持全文本搜索的另外一种形式,称为布尔方式(boolean mode)。
- 要匹配的词;
- 要排斥的词(如果某行包含这个词,则不返回该行,即使它包含其他指定的词也是如此);
- 排列提示(指定某些词比其他词更重要,更重要的词等级更高);
- 表达式分组;
- 另外一些内容。
即使没有FULLTEXT索引也可以使用布尔方式不同于迄今为止使用的全文本搜索语法的地方在于,即使没有定义FULLTEXT索引,也可以使用它。但这是一种非常缓慢的操作
2.5. 全文本搜索的使用说明
18. 全文本搜索
http://binbo-zappy.github.io/2024/11/27/mysql_bzbh/18-全文本搜索/