MySQL之全文本搜索

1、简介

在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词。MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行。这样,MySQL可以快速有效地决定哪些词匹配(哪些行包含它们),哪些词不匹配,它们匹配的频率,等等
为了进行全文本搜索,必须索引被搜索的列,而且要随着数据不断地更新索引。在对表进行适当的设计后,MySQL会自动进行所有的索引和重新索引。

2、启用全文本搜索支持

InnoDB引擎不支持全文本搜索,需要使用MyISAM引擎。
在这里插入图片描述
不要在导入数据时使用FULLTEXT
更新索引要花时间,虽然不是很多,但毕竟要花时间。如果正在导入数据到一个新表,此时不应该启用 FULLTEXT 索引。应该首先导入所有数据,然后再修改表,定义 FULLTEXT 。这样有助于更快地导入数据(而且使索引数据的总时间小于在导入每行时分别进行索引所需的总时间)。

3、进行全文本搜索

在这里插入图片描述
其中note_text为字段,rabbit为要搜索的文本。
默认不区分大小写,除非使用BINARY方式。

4、扩展查询WITH QUERY EXPANSION

设法放宽返回的全文本搜索结果的范围。例如,你想找到所有包含wocao的行,但还想找出可能与你的搜索有关的所有其他行,即使他们不含有wocao。
使用扩展查询时,MySQL对数据和索引进行两遍扫描来完成搜索:
1.基本全文本搜索,找出与搜索条件匹配的所有行;
2.检查匹配行并选择所有有用的词;
3.再次全文本搜索,不仅使用原来的条件,而且使用所有有用的词。
在这里插入图片描述

5、布尔文本搜索IN BOOLEAN MODE

可以完成更多细节:
在这里插入图片描述
使用实例
在这里插入图片描述
其中,heavy -rope*表示匹配heavy但不匹配含有rope开始的词。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值