MySQL必知必会---第十八章全文本搜索总结

全文本搜索

  1. MySQL常用的引擎为 MyISAM 和 InnoDB,前者支持,后者不支持。
    1. 为啥?不知道
支持字符搜索的几种方式
LIKE谓语
正则表达式
全文本搜索
创建表,对表进行约束,语法格式: FULLTEXT括号 列名
对该列加索引的数据类型为TEXT
查询语句的关键字为:MATCH 括号列名 AGAINST括号 列名中的字符
全文本搜索
查询扩展
布尔全文本查询
-- 全文本搜索创建表的例子
CREATE TABLE product
(	note_id int not null,
 	note_text text NULL,
 	PRIMARY KEY(note_id),
 	FULLTEXT(note_text)
)ENGINE = MyISAM;  -- 选择引擎为 MyISAM

-- 一般全文本查询的例子
SELECT note_text
FROM product
WHERE Match(note_text)Against('rabbit');

-- 查询拓展的例子
SELECT note_text
FROM product
WHERE Match(note_text)Against('rabbit' WITH QUERY EXPANSION);

-- 布尔全文本查询的例子
SELECT note_text
FROM product
WHERE Match(note_text)Against('rabbit' IN BOOLEAN MODE);

全文本查询与LIKE谓语、正则表达式的区别

1.全文本查询是按照权重排序的,后两者没有排序

2.全文本查询的速度比后两者快。(我的理解是, 全文本查询是索引,对着目录查知识点比一页一页的查快吧?)

查询拓展 与一般全文本查询的区别

查询拓展的执行原理大概是这样的

  1. 先进行一般的全文本查询
  2. 对查询结果,在进行全文本

举个例子:1.用全文本查询 查 rabbit 返回了 一行 the rabiit from China

​ 2.用全文本查询再查 the rabiit from China,返回来的结果就是查询拓展的结果

布尔全文本查询 与 查询拓展的区别

1.布尔文本查询不需要加索引,查询结果有的时候和一般文本查询结果一样

2.布尔全文本查询不会受到查的字符超过文本比重的百分之50的限制而忽略了这个词。

3.布尔全文本查询对查询结果不排序,查询拓展对查询结果排序。

全文本查询的注意要点

1.不区分查询结果的大小写。(除非用BINARY)

2.导入数据时,先不要加索引,导入完了之后再加索引。(这样导入数据的速度快一点)

布尔全文本查询的一些操作符

[外链图片转存失败(img-E5mOYUYi-1563697833365)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1563697356797.png)]

全文本查询的使用说明

1.使用索引的时候,短词被忽略却从索引中删除(默认为3个或3个字符一下)

2.MySQL带有一个内建的非用词列表(stopword),这些词会在索引全文本数据时被忽略

3.当这个字符出现的太过频繁,超过了百分之50,它也被忽略(布尔全文本除外)

4.如果表中行数少于3行,全文本搜索不返回结果

d),这些词会在索引全文本数据时被忽略

3.当这个字符出现的太过频繁,超过了百分之50,它也被忽略(布尔全文本除外)

4.如果表中行数少于3行,全文本搜索不返回结果

5.忽略词中的单引号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值