定义:
全文本搜素是MyISAM存储引擎才具有的功能,主要针对长文本进行良好程度搜索。它的主要功能大概有:快速高效地搜索指定列,而且能提供一种智能化的结果,有查询扩展搜索和布尔文本搜索功能。
使用方法:
(1)启动全文本搜索:在创建表时,加入FULLTEXT(字段),例子如下:
CREATE TABLE productor ( note_id int NOT NULL, prod_name char(10) NOT NULL, note_data datatime NOT NULL, note_text text NULL, PRIMARY KEY(note_id) FULLTEXT(note_text) )ENGINE=MyISAM;
在定义FULLTEXT索引列后,MYSQL会自动对其进行维护,在数据库变更后自动更新。
(2)进行全文本搜索:在select中的where语句中,加入Match(指定列字段)和Aginst(搜索表达式)。例子如下:
SELECT note_text FROM productor WHERE Match(note_text) Aginst('rabbit');
传给Match的列字段必须与FULLTEXT中的列字段相同,而且全文本搜索不区分大小写,返回结果按照良好程度排序(如rabbit先出现的行优先级高)
(3)使用查询扩展搜索:在Against的搜索表达式后,加入WITH QUERY EXPANSION。这样的话,能搜索出与表达式相关的结果,而非精确搜索。
SELECT note_text FROM productor WHERE Match(note_text) Against('rabbit' WITH QUERY EXPANSION);
使用查询扩展,增加了得到的返回结果行数,使得一些与rabbit相关的行也被搜索出来。
(4)使用布尔文本搜索:在Against的搜索表达式后,加入IN BOOLEAN MODE。这样的话,能丰富搜索表达式,如增加要排斥的词,词优先级等。
SELECT note_text FROM productor WHERE Match(note_text) Against('+(>rabbit) +(<success) -rope*' IN BOOLEAN MODE);
使用布尔文本搜索,上式的搜索表达式被丰富了,+必须出现该词,-必须不包含该词,*词尾截断符,>增加词优先级,<减小词优先级。