SQL Server 全文索引的应用

article/2025/11/4 21:23:58

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

搜索包含指定关键词的数据。得到这需求后,站在技术角度考虑第一时间就联想到使用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


http://chatgpt.dhexx.cn/article/kEf5feZQ.shtml

相关文章

全文检索

本文我将为大家讲解全文检索技术——Lucene,现在这个技术用到的比较多,我觉得大家还是应该掌握一下,不说多精通,但是应该有所了解。在讲解之前,我们先来看一个案例,通过该案例引出全文检索技术——Lucene。…

mysql全文索引使用

一、前言 在以前的博客中小编介绍过mysql的执行流程,索引优化等。正好前一段时间项目有一个新的需求,就重新调研了一下mysql的全文索引,并对mysql的全文索引进行了压测,看看性能怎么样。以判断是否使用。——可想而知,…

MySQL使用全文索引(fulltext index) 及中文全文索引使用

全文索引介绍 ----------------------------------------------------------------------------------------------------------------------------- 1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的My…

索引和全文检索

目录 索引 全文检索 学习类容:索引和全文检索 索引 索引:对数据库中一列或多列的值进行排序的一种结构 作用:合理的使用索引可以加速检索表中的数据。 分类: 按键列个数区分:单列索引,多列索引。 按…

MySQL使用全文索引(fulltext index)

1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网, 1.1. 创建表的同时创建全文索引 CREATE TABLE article ( …

MySQL 全文索引

说到查询,日常中常用的baidu,cnbing ,google等之类的网站。关系型数据库中的全文索引应该也是从这些搜索引擎里摸索出来的。 全文索引介绍: 在数据库中常用的查询方式一般是 等价,范围方式。当然也有LIKE %的模糊查询&#xff0c…

MySQL索引系列:全文索引

什么是全文索引? 全文索引首先是 MySQL 的一种索引类型,也是搜索引擎的关键技术。 试想在1M大小的文件中搜索一个词,可能需要几秒,在100M的文件中可能需要几十秒,如果在更大的文件中搜索那么就需要更大的系统开销&am…

全文索引简介

全文索引技术就是将各种信息,文档中所有的文字序列都作为检索对象,找出包含检索词汇的信息或文档。 全文索引在数据库中一般是作为单独模块使用的,如MYSQL全文检索工具——Sphinx,一般全文索引模块需要配合数据库的存储方式进行处…

【MySQL】全文索引详解

文章目录 🍀全文索引概述 🍀全文索引的创建 🍀创建表时定义索引 🍀在已存在表上创建 🍀执行create语句 🍀执行ALTER TABLE语句 全文索引概述 全文索引主要对字符串类型建立基于分词的索引&#xff0c…

html怎么异步传数据,用jQuery实现异步通信(用json传值)方法步骤

jQuery是时下比较流行的一个js库,能够用简单的代码做出理想的效果,就像官网上说的那样“write less ,do more”。Jquery在一定程度上改写了以往对JavaScript的写法,本人就用jquery实现上篇中用ajax实现异步通信的效果,感受一下jqu…

用jQuery实现异步通信(用json传值)具体思路

jQuery是时下比较流行的一个js库,能够用简单的代码做出理想的效果,就像官网上说的那样“write less ,do more”。Jquery在一定程度上改写了以往对JavaScript的写法,本人就用jquery实现上篇中用ajax实现异步通信的效果,感受一下jqu…

jQuery的toggle

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><!--引入jq框架--><script src"https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script></head><body>…

12.jQuery技术

一、jQuery知识点总览。 css&#xff08;&#xff09;方法&#xff1a;//通过css&#xff08;&#xff09;方法获取样式值let backgroundcolor $("#one").css("backgroundColor");alert(backgroundcolor);//通过css&#xff08;&#xff09;方法设置id为…

jQuery

##jQuery基础 1.概念&#xff1a;一个JavaScript框架。简化JS开发 *jQuery是一个快速、简洁的JavaScript框架&#xff0c;是继Prototype之后又一个优秀的JavaScript代码库&#xff08;框架&#xff09;于2006年1月由John Resig发布。 jQuery设计的宗旨是“write Less&#xf…

jQuery建立WebSocket连接

jQuery建立WebSocket连接&#xff0c;向服务端发送数据&#xff0c;实现WebSocket连接成功。 js代码如下&#xff1a; <script src"https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script><script type"text/javascript">…

WebGoat攻略 for Mac(1)

WebGoat攻略 for Mac&#xff08;1&#xff09; 一、环境配置1.配置Docker2.配置WebGoat3.连接WebGoat 二、题目攻略Introduction(介绍)a.WebGoatb.WebWolf General(通用)a.HTTP Basics(HTTP基础)b.HTTP Proxies配置OWASP ZAP c.Developer Tools(开发人员工具)d.CIA Triade.Cry…

代码审计之WEBGOAT 反序列化

反序列化这关在前端页面可以看到是提交token到后端&#xff0c;先看一下接口名 可以看到接口名为InsecureDeserialization/task&#xff0c;那就后端全局搜索InsecureDeserialization/task&#xff0c;最终定位到InsecureDeserializationTask.java 源码如下&#xff1a; packa…

kali搭建webgoat靶场

下载webgoat-server-8.0.0.M26.jar与webwolf-server-8.0.0.M26.jar&#xff0c;并保存至kali的documents处&#xff0c;并在此打开终端&#xff08;不然无法打开&#xff09; 打开webgoat-server-8.0.0.M26.jar 浏览器访问127.0.0.1:8080/WebGoat/login.html 进行注册且登录 成…

基于 WebGoat 平台的 SQL 注入攻击

基于 WebGoat 平台的 SQL 注入攻击 扩展功能参考: https://blog.csdn.net/HZC0217/article/details/126790211 使用实例参考: https://www.cnblogs.com/hndreamer/p/16635984.html 目录 1、什么是 webgoat? 2、jar 下载 3、环境搭建 4、运行 webgoat 5、在浏览器中登录 …

owaspbwa之WebGoat

简介 下载&#xff1a;https://sourceforge.net/projects/owaspbwa/files/ GitHub: https://github.com/chuckfw/owaspbwa/wiki/UserGuide 0x001 侦查 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux; protoc…