SQL Server 全文索引的应用

在公司项目中提出了一个需求:

搜索包含指定关键词的数据。得到这需求后,站在技术角度考虑第一时间就联想到使用SQL里面“like”查询语句。进一步分析需求后,发现“Like”查询满足不到实际的要求。

示例:

--------------------------------------------------------------------

关键词:牛仔 骨(注:词中间有空格)

搜索名称中包含有“牛仔”或“骨”的数据返回显示(即名称中包含美食或鸡的数据都要返回),有点类似搜索引擎的做法(当然两者之间还是有天渊之别的,搜索引擎有一套自己的复杂算法支撑着)

方案分析:

一. “Like”语句

“Like”语句官方解决:确定特定字符 String 是否与指定模式相匹配。

select * from Table where name Like '%牛仔 骨%'

查询结果返回名称中包含“牛仔 骨”看作一个独立词前后模糊相匹配的数据

没有将包含“牛仔”或“”关键词条件的所有数据查询出来

显然,使用“Like”语句查询方案无法满足到实际需求,需要寻找其他解决方案来实现。

SQL Server 提供了一种叫“全文索引(FULLTEXT)”搜索技术能够很好满足这种查询的需求。

二、全文索引(FULLTEXT)

全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server全文引擎服务创建和维护的。从 SQL Server 2008 开始,全文索引与数据库引擎集成在一起。

每个表只允许有一个全文索引。

若要对某个表创建全文索引,该表必须具有一个唯一且非 Null 的列(建议使用整型作为主键列)。

支持以下类型的列表创建全文索引:char、varchar、nchar、nvarchar、text、ntext、image、xml、varbinary 和 varbinary(max)。对数据类型为 varbinary、varbinary(max)、image或xml 的列创建全文索引需要您指定类型列。类型列是用来存储每行中文档的文件扩展名(.doc、.pdf、.xls等)的表列。

创建和维护全文索引的过程称为“填充”。有三种类型的全文索引填充:完全填充、基于更改跟踪的填充和基于时间戳的增量式填充

以下使用“基于时间戳的增量式填充”来创建全文索引,其他类型的详细信息,请参阅填充全文索引

创建全文索引示例SQL语句:


--创建全文目录
CREATE FULLTEXT CATALOG FT AS DEFAULT;
go

--创建全文索引
CREATE FULLTEXT INDEX ON [dbo].[Test](Food) 
KEY INDEX Id 
GO

参考资料:

创建和管理全文索引 - SQL Server | Microsoft Learn

全文搜索入门 - SQL Server | Microsoft Learn

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值