1.Mysql最常使用的引擎是MyISAM和InnoDB ,前者支持全文本搜索,而后者不支持。
2.在使用全文本搜索时,Mysql不需要分别查看每个行,不需要分别分析和处理每个词。Mysql创建指定列中各词的一个索引,搜索可以针对这些词进行。这样,Mysql可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词不匹配,它们匹配的频率,等等。
3.为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断的重新索引。在对表列进行适当设计后,MySQL会自动进行所有的索引和重新索引。在索引之后,SELECT可与Match()和Against()一起使用以实际执行搜索。
一般在创建表时启用全文本搜索。CREATETABLE语句接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表。
CREATE
(
这里只指定了一个列note_text进行索引,如果需要也可以指定多个列。在定义之后,MySQL自动维护该索引。增加、删除和更新行之后,索引会随之自动更新。可以在创建表时使用FULLTEXT,也可以稍后使用。注意:不要在导入数据时使用FULLTEXT。
4.在索引之后,使用两个函数Match()和Against()执行全文本搜索,其中Match()制定被搜索的列,Against() 指定要使用的搜索表达式:
select note_text;
from productnotes
where Match(note_text) Against('rabbit');
注意:1. 传递给Match()的值必须与FULLTEXT()定义的相同。如果指定多个列,则必须列出它们且次序正确。
2. 除非使用BINARY方式,否则全文本搜索不区分大小写。