MySQL全文本搜索、查询扩展和布尔文本搜索

MySQL全文本搜索提供高效能的文本匹配,通过FULLTEXT索引和match() against()函数实现。查询扩展能放宽搜索结果,而布尔文本搜索允许更精细的控制,包括指定要匹配或排除的词。全文本搜索不适用于InnoDB引擎,且短语和高频率词可能被忽略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

在MySQL中,我们经常使用文本搜索功能,比较熟悉的搜索:
(1)使用LIKE关键词,利用通配符匹配文本,如select col1 from table1 where col1 like 'abc%';
(2)使用正则表达式搜索(REGEXP),如select col1 from table1 where col1 regexp '[123]abc';

这两种搜索方式能满足我们大部分的需求,但是,这两种搜索方式也存在几点重要的限制:

  1. 性能:通配符和正则表达式匹配通常要求MySQL尝试匹配表中的所有的行,因此,随着数据的增加,这些搜索非常耗时。
  2. 明确控制:这两种搜索方式很难明确控制匹配什么,不匹配什么,如指定一个词必须匹配,另一个词必须不匹配。
  3. 智能化的结果:通配符搜索和正则表达式匹配仅能返回满足匹配条件的行,但是每个结果的匹配程度等不能体现。

因此,要解决这些问题,我们就需要用到全文本搜索。

在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词。MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行。这样,MySQL可以快速有效的决定哪些词匹配,哪些词不匹配,以及他们匹配的频率,等等。

一、使用全文本搜索

使用全文本搜索时,必须要索引被搜索的列,而且要随着数据的改变不断重新索引,不过不用担心,我们对表列进行设计后,MySQL会自动进行索引和重新索引。

1.启用全文本搜索

在创建表的时候,通过指定FULLTEXT列来启用全文本搜索。如:

create table table1
(
 id    int        not null auto_increment,
 name  char(20)   not null,
 dates datetime   not null,
 texts text       null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值