MySQL 自学第十八章 全文本搜索

在这里插入图片描述

注意事项

并非所有引擎都支持全文本搜索

两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,而后者不支持。

之前的学习,我们使用LIKE关键字 通配操作符匹配文本(和部分文本)。以及,使用正则表达式进行复杂的文本匹配搜索。

为什么需要全文本搜索

1、性能,通配符和正则表达式需要对数据表的全部行进行匹配,性能上较慢;
2、查询,通配符和正则表达式更多的是一种模糊查询,能难精确控制匹配;
3、都不能提供一种智能化的选择结果的方法。

使用全文本搜索

启用全文本搜索支持

规则
在创建表时启用全文本搜索
列中有一个名为note_text的列,为了进行全文本搜索,MySQL根据子句FULLTEXT(note_text)的指示对它进行索引。
这里的FULLTEXT索引单个列,如果需要也可以指定多个列。
在这里插入图片描述

进行全文本搜索
SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit');

Match(note_text)指示MySQL针对指定的列进行搜索,
Against(‘rabbit’)指定词rabbit作为搜索文本。

由于有两行包含词rabbit,这两个行被返回。
在这里插入图片描述

使用完整的 Match() 说 明
传递给 Match() 的值必须与FULLTEXT()定义中的相同。
如果指定多个列,则必须列出它们(而且次序正确)。

搜索不区分大小写

使用查询扩展
SELECT note_text FROM productnotes WHERE Match(note_text) Against('anvils');
SELECT note_text FROM productnotes WHERE Match(note_text) Against('anvils' WITH QUERY EXPANSION);

在这里插入图片描述

布尔文本搜索
SELECT note_text FROM productnotes WHERE Match(note_text) Against('heavy' IN BOOLEAN MODE);
SELECT note_text FROM productnotes WHERE Match(note_text) Against('heavy -rope*' IN BOOLEAN MODE);

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值