全文本搜索

【注】mysql最常用的引擎是MyISAM和InnoDB,前者支持全文本搜索,后者不支持

1. 实现全文本搜索

1)启用全文本搜索支持
  方式1:用create table创建表时对想要进行全文本搜索的字段进行操作,如对note_text字段进行全文本搜索,FULLTEXT(note_text)。
         定义之后,mysql自动维护该索引,在增加,更新或者删除行时,索引随之自动更新。
2)执行全文本搜索
  sql语句格式:select note_text from 表 where match(note_text) against('rabbit');
  【注】match函数指定被搜索的列,against函数指定要使用的搜索表达式,如上述例子就是搜索出含有rabbit字符串的所有note_text字段。
  sql语句格式2:select note_text, match(note_text) against('rabbit') as rank from 表;
  这种方式会将搜索结果作为一列返回,列值是一个等级值。

需要说明的是,虽然用like关键字同样可以实现对指定文本内容的搜索,但是全文本搜索的最大的好处是对结果排序,具有较高等级的行先返回。

2. 查询扩展

查询扩展目的是放宽全文本搜索结果的范围,不仅包含满足查询条件的结果,还返回与搜索有关的所有其他行。
sql语句格式:select note_text from 表 where match(note_text) against('anvils' with query expansion);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MySQL支持几种基本的数据库引擎。并非所有的引擎都支持本书所描述的全文本搜索。两个最常使用的引擎为 MyISAM...
    夏虫Phizzz阅读 392评论 0 0
  • 全文本搜索 使用全文本(fulltext)搜索,MySQL不需要分别查看每个行,不需要分析和处理每个词。MySQL...
    olivia_ong阅读 1,442评论 0 0
  • 关联章节: 第8章LIKE关键字以及通配符 第9章正则表达式 通配符与正则表达式搜索都存在着一些性能上的限制,但是...
    100gle阅读 590评论 0 2
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,593评论 28 53
  • 首先介绍下自己的背景: 我11年左右入市到现在,也差不多有4年时间,看过一些关于股票投资的书籍,对于巴菲特等股神的...
    瞎投资阅读 5,772评论 3 8