全文本搜索

1.Mysql最常使用的引擎是MyISAM和InnoDB ,前者支持全文本搜索,而后者不支持。

2.在使用全文本搜索时,Mysql不需要分别查看每个行,不需要分别分析和处理每个词。Mysql创建指定列中各词的一个索引,搜索可以针对这些词进行。这样,Mysql可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词不匹配,它们匹配的频率,等等。

3.为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断的重新索引。在对表列进行适当设计后,MySQL会自动进行所有的索引和重新索引。在索引之后,SELECT可与Match()和Against()一起使用以实际执行搜索。

一般在创建表时启用全文本搜索。CREATETABLE语句接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表。
CREATE TABLE productnotes
(
    note_id INTNOT NULL AUTO_INCREAMENT,
    prod_idCHAR(10) NOT NULL,
    note_dataDATETIME NOT NULL,
    note_textTEXT NULL,
    PRIARYKEY(note_id),
   FULLTEXT(note_text)
 )ENGINE=MyISAM

这里只指定了一个列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方式,否则全文本搜索不区分大小写。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值