适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
为了防止全文索引变得臃肿,SQL Server 数据库引擎 有一种机制,可以丢弃那些对搜索没有帮助的常见字符串。 这些被丢弃的字符串称为停用词。 在创建索引期间,全文引擎会从全文索引中排除停用词。 这意味着全文查询不会对停用词进行搜索。
| 条款 | Description |
|---|---|
| 非索引字 | 停用词可以是某种特定语言中具有含义的词。 例如,在英语中,诸 a如 、 and、 is和 the 等词汇被排除在全文索引之外,因为它们已知对搜索无用。 非索引字也可以是具有语言意义的标记。 |
| 停用词表 | 在数据库中,停用词通过使用称为“停用词列表”的对象来管理。 停用词表是停用词的列表,在与全文索引关联时,会应用于针对该索引的全文查询。 |
使用现有非索引字表
可以通过以下方式使用现有非索引字:
在数据库中使用系统提供的非索引字表。 数据库引擎 自带一个系统屏蔽词表,包含每种支持语言最常用的屏蔽词,这些屏蔽词默认适用于与特定词断符相关的所有语言。 可以通过添加和删除非索引字来复制系统非索引字表并自定义副本。
系统停止列表安装在 资源数据库中。
在当前服务器实例中使用来自另一数据库的现有自定义停止列表,然后根据需要添加或删除停止词。
创建新的非索引字表
你可以用 Transact-SQL(T-SQL)或SQL Server Management Studio(SSMS)创建停止列表。
使用 Transact-SQL 创建新的非索引字表
使用 SQL Server Management Studio 创建新的停止列表
在对象资源管理器中,展开服务器。
展开“数据库”,然后展开要在其中创建全文非索引字表的数据库。
展开 Storage,然后右键单击 Full-Text Stoplists。
选择“新建全文停止列表”。
输入新停用词列表的名称。
可选择将其他人指定为停用词列表所有者。
选择以下创建非索引字表选项之一:
创建空停用词表
根据系统停用词列表创建
基于现有全文停用词表创建
有关详细信息,请参阅新建全文非索引字表(常规页)。
选择“确定”。
在全文查询中使用停用词列表
若要在查询中使用停用词表,必须将其与全文索引相关联。 可以在创建全文检索时将非索引字表附加到全文检索中,也可以在以后更改索引来添加非索引字表。
| 任务 | 方法 |
|---|---|
| 创建一个全文索引,并将其与停止列表关联起来 | 使用 CREATE FULLTEXT INDEX。 |
| 将停止列表与现有全文索引关联或取消关联 | 使用 ALTER FULLTEXT INDEX。 |
在非索引字表中更改非索引字
你可以使用 Transact-SQL (T-SQL) 或 SQL Server Management Studio (SSMS) 修改停用列表中的非索引字。
使用 Transact-SQL 向停用词列表中添加停用词或从中删除停用词
使用 SQL Server Management Studio 在停止词表中添加或删除停止词
在对象资源管理器中,展开服务器。
展开 数据库,然后展开该数据库。
展开“存储”,然后选择“全文非索引字表”。
右键单击要更改其属性的非索引字表,然后选择“属性”。
在“全文停止列表属性”对话框中:
在 “操作” 列表框中,选择下列操作之一: “添加非索引字”、 “删除非索引字”、 “删除所有非索引字”或 “清除非索引字表”。
如果所选操作启用了 “停用词” 文本框,请输入一个停用词。 这个停字必须是独一无二的。 它不可能已经出现在你选择的语言的停止列表中。
如果对选定的操作启用了“全文语言”列表框,请选择一种语言。
选择“确定”。
管理非索引字表及其使用情况
使用以下方法查看和管理停用列表。
| 任务 | 方法 |
|---|---|
| 查看非索引字表中的所有非索引字 | 使用 sys.fulltext_stopwords。 |
| 获取有关当前数据库中所有停用列表的信息 | 用 sys.fulltext_stoplists 和 sys.fulltext_stopwords。 |
| 查看断字符、同义词库和非索引字表组合的标记化结果 | 用 sys.dm_fts_parser。 |
| 如果停用词导致全文查询中的布尔运算失败,则禁止显示错误消息 | 使用服务器配置:转换干扰词。 |
有关停用词位置的更多信息
尽管全文索引忽略非索引字的包含,但它确实会考虑它们的位置。 例如,考虑短语 Instructions are applicable to these Adventure Works Cycles models。 下表显示了短语中各个词的位置:
| Word | 位置 |
|---|---|
Instructions |
1 |
are |
2 |
applicable |
3 |
to |
4 |
these |
5 |
Adventure |
6 |
Works |
7 |
Cycles |
8 |
models |
9 |
位于第2、4和第5位的停顿词 are, to, , these 被排除在全文索引之外。 但是会保留它们的位置信息,从而使短语中其他词的位置不受影响。
从 SQL Server 2005 升级干扰词
SQL Server 2005 (9.x) 干扰词被非索引字替换。 从 SQL Server 2005 (9.x) 升级数据库后,将不再使用干扰词文件。 但是,干扰词文件存储在 FTDATA\FTNoiseThesaurusBak 文件夹中,你可以在以后更新或构建相应的停用列表时使用它们。 有关将干扰字文件升级到非索引字表的信息,请参阅升级全文搜索。