非索引字和非索引字表
为了精简全文索引,SQL Server 提供了一种机制,用于去掉那些经常出现但对搜索无益的字符串。这些去掉的字符串称为“非索引字”。在索引创建期间,全文引擎将忽略全文索引中的非索引字。也就是说全文查询将不搜索非索引字。
重要提示 |
---|
SQL Server 2005 干扰词已替换为非索引字。将数据库从先前版本升级到 SQL Server 2008 后,SQL Server 2008 中将不再使用干扰词文件。然而,干扰词文件存储在 FTDATA\FTNoiseThesaurusBak 文件夹中,您可以在以后更新或生成对应的 SQL Server 2008 非索引字表时使用它们。有关将干扰词文件升级到非索引字表的信息,请参阅全文搜索升级。 |
非索引字可以是在特定语言中具有含义的词,也可以是不具有语言含义的“标记”。例如,在英语中,诸如“a”、“and”、“is”和“the”之类的词将被排除在全文索引之外,这是因为已经知道它们对搜索没有用处。
尽管全文索引会忽略所包含的非索引字,但它确实会考虑非索引字的位置。例如,请看下面这个短语:“Instructions are applicable to these Adventure Works Cycles models”。下表显示了短语中各个词的位置:
词 |
位置 |
---|---|
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 2008 中,使用称为“非索引字表”的对象在数据库中管理非索引字。非索引字表是一个由非索引字组成的列表,这些非索引字在与全文索引关联时会应用于该索引的全文查询。
创建非索引字表
可使用下列任一方法创建非索引字表:
在数据库中使用系统提供的非索引字表。SQL Server 为每种支持的语言(即默认情况下与给定断字符关联的每种语言)都附带了一个包含最常用非索引字的系统非索引字表。系统非索引字表包含所有支持语言的常用非索引字。可以复制系统非索引字表并通过添加和删除非索引字来自定义自己的非索引字表。
系统非索引字表安装在 Resource 数据库中。
创建自己的非索引字表,然后针对您所指定的任何语言将非索引字添加到非索引字表中。必要时,您还可以从您的非索引字表中删除非索引字。
在当前服务器实例中使用任何其他数据库中的现有自定义非索引字表,然后根据需要添加和删除非索引字。
重要提示 |
---|
仅在兼容级别为 100 时才支持 CREATE FULLTEXT STOPLIST、ALTER FULLTEXT STOPLIST 和 DROP FULLTEXT STOPLIST。兼容级别为 80 和 90 时,将不支持这些语句。不过,在所有兼容级别下,系统非索引字表将会自动与新的全文索引相关联。 |
创建非索引字表
向非索引字表中添加非索引字或从中删除非索引字
删除非索引字表
在查询中使用非索引字表
若要在查询中使用非索引字表,必须将该非索引字表与全文索引关联。可以在创建全文索引时将非索引字表附加到全文索引中,也可以在以后更改索引来添加非索引字表。
创建全文索引并将非索引字表与其关联起来
将非索引字表与现有的全文索引关联起来或取消它们之间的关联
取消非索引字导致全文查询的布尔操作失败时产生的错误消息。
查看非索引字表和非索引字表的元数据
查看非索引字表的所有非索引字
获取有关当前数据库中所有非索引字表的信息
查看断字符的词汇切分结果、同义词库和非索引字表组合