架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 17|回复: 0

[技巧] (MSSQL)SQL Server Full-Text 全文搜索、全文索引

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
全文搜索是 SQL Server 数据库引擎的一个可选组件。 如果你在安装 SQL Server 时没有选择全文搜索,请再次运行 SQL Server 安装程序来添加它。

概述

全文索引包括表中一个或多个基于字符的列。 这些列可以具有以下任何数据类型:char、varchar、nchar、nvarchar、text、ntext、image、xml 或 varbinary(max) 和 FILESTREAM。 每个全文索引都对表中的一个或多个列创建索引,并且每个列都可以使用特定语言。

全文查询根据特定语言(例如,英语或日语)的规则对词和短语进行操作,从而依据全文索引中的文本数据执行语言搜索。 全文查询可以包括简单的词和短语,或者词或短语的多种形式。 全文查询返回包含至少一个匹配项(也称为“命中”)的所有文档。 当目标文档包含在全文查询中指定的所有字词,并符合任何其他搜索条件(如匹配的字词之间的距离)时,即发生匹配。

Linux Docker MSSQL 2022 安装全文搜索服务

参考如下:
Docker MSSQL 2022 安装全文搜索服务
https://www.itsvse.com/thread-10857-1-1.html

检查 SQL SERVER 的全文搜索功能是否安装

命令如下:

SQL Server Full-Text 全文搜索、全文索引

首先,新建测试库和插入测试数据,脚本如下:
创建全文目录

全文目录用来存储全文索引。可以直接使用以下脚本进行创建:
为数据库表创建全文索引

为数据库表创建全文索引的时候需要指定对应的语言。因为不同的语言的分词都有所差异,SQL Server将会使用对应语言的分词器处理表中的数据。SQL Server的全文搜索支持大约 50 种不同语言,可通过查询sys.fulltext_languages表来查看所有支持的语言。命令:
如下图:

QQ截图20260608192950.jpg

下面我们对 News 表的 Title 和 Content 两个字段添加简体中文的全文索引:
全文搜索谓词、函数

全文查询使用全文谓词(CONTAINSFREETEXT)以及全文函数(CONTAINSTABLEFREETEXTTABLE)。它们支持复杂的 Transact-SQL 语法,这种语法支持各种形式的查询词。

CONTAINS 和 FREETEXT 区别

CONTAINS: 超链接登录可见。

使用精确匹配的方式来查找文本中的特定单词或短语。
支持复杂的查询条件,如邻近搜索(例如,词语必须出现在彼此附近)、前缀搜索等。
通常用于需要更具体控制搜索结果的情况。

FREETEXT: 超链接登录可见。

提供一种更加灵活且自然语言式的搜索体验。
不需要指定任何特殊的搜索条件;它会自动解析输入文本并尝试找到与之相关的内容。
更适合于那些希望执行类似Google那样的简单关键字搜索而不关心具体位置或形式的用户。

命令分别如下:
如下图:

QQ截图20260608201022.jpg

CONTAINSTABLE 和 FREETEXTTABLE

CONTAINSTABLE返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用CONTAINSTABLE的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。RANK用于表示相关性的匹配程度,它的值在0~1000之间,KEY就是主表的ID。FREETEXTTABLE会先把要查询的词句先进行分词然后再查询匹配。命令如下:
如下图:

QQ截图20260608201657.jpg

另外,可以通过查询 sys.dm_fts_parser 来查看分词结果:
如下图:

QQ截图20260608201846.jpg

问题

问题: CONTAINS 默认不支持模糊查询,如果输入 CONTAINS(Column, 'apple'),它会匹配词根(例如 apples),但不会匹配 pineapple。
解决: 如果需要模糊查询,必须在通配符前后加上双引号和星号:CONTAINS(Column, '"*apple*"')

参考:

超链接登录可见。
超链接登录可见。




上一篇:远程办公、工作,自由职业工作平台网站
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-6-8 23:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表