mysql全文本搜索、查询扩展、布尔文本搜索 must掌握

本文详细介绍了MySQL的全文本搜索功能,包括创建全文本索引、查询语法、查询扩展和布尔文本搜索。当索引单词最小长度设置为4时,搜索短词如'come'无法匹配,但通过调整查询方式可以得到预期结果。全文本搜索的等级值反映了匹配的相关度。此外,还提到了MySQL的非用词(stopword)列表和高频词过滤规则。
摘要由CSDN通过智能技术生成

创建一个表:

create table test1(
note_text varchar(10),
FULLTEXT(note_text)
)

FULLTEXT(note_text) : 表示对note_text进行索引;

录入数据:
在这里插入图片描述

当我们查询字段中包含on时:

select * from test1 where note_text like '%on%'

在这里插入图片描述

进行全文本搜索

select note_text from test1 where MATCH(note_text) AGAINST('on');

发现查询不出来结果;
原因是因为 系统定义的索引的单词的最小长度是4;

select note_text from test1 where MATCH(note_text) AGAINST('come');

结果:
在这里插入图片描述
现在就可以查询出来了;

select note_text,Match(note_text) Against('come') from test1;

在这里插入图片描述

此列包含全文本搜索计算出的等级值。等级由MySQL根据行中词的数目、唯一词的数目、整个索引中词的总数以及包含该词的行的数目计算出来。正如所见,不包含词come的行等级为0(因此不被前一例子中的WHERE子句选择)。确实包含词come的两个行每行都有一个等级值,文本中词靠前的行的等级值比词靠后的行的等级值高。

使用查询扩展

select note_text from test1 where MATCH(note_text) AGAINST('come' with query expansion);

在这里插入图片描述
这次返回了3行。第一行包含词come,因此等级最高。第二
行与come无关,但因为它包含第一行中的test,所以也被检索出来。

布尔文本搜索

select note_text from test1 where MATCH(note_text) AGAINST('come' in boolean mode);

在这里插入图片描述
全文本搜索检索包含词come的所有行(有两行)。其中使用
了关键字IN BOOLEAN MODE,但实际上没有指定布尔操作符,
因此,其结果与没有指定布尔方式的结果相同。

select note_text from test1 where MATCH(note_text) AGAINST('come -test*' in boolean mode);

在这里插入图片描述
仍然匹配词come,但-test明确地指示MySQL排除包含test(任何以test开始的词,包括tests)的行;

在这里插入图片描述

注意:
1.在索引全文本数据时,短词被忽略且从索引中排除。短词定义为那些具有3个或3个以下字符的词(如果需要,这个数目可以更改)。
2.MySQL带有一个内建的非用词(stopword)列表,这些词在索引全文本数据时总是被忽略。如果需要,可以覆盖这个列表(请参阅MySQL文档以了解如何完成此工作)。
3.许多词出现的频率很高,搜索它们没有用处(返回太多的结果)。因此,MySQL规定了一条50%规则,如果一个词出现在50%以上的行中,则将它作为一个非用词忽略。50%规则不用于IN BOOLEAN MODE。
4.如果表中的行数少于3行,则全文本搜索不返回结果(因为每个词或者不出现,或者至少出现在50%的行中)。
5.忽略词中的单引号。例如,don’t索引为dont。
6.不具有词分隔符(包括日语和汉语)的语言不能恰当地返回全文本搜索结果。

参考书籍:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈行恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值