管理全文搜索
全文管理可分为四项主要任务:
- 创建全文索引和全文目录。
- 更改现有的全文索引和目录。
- 删除现有的全文索引和目录。
- 计划和维护索引填充。
全文管理可以在服务器、数据库、表和列级执行。在服务器级,可以设置服务器范围内的属性(例如 resource_usage)以增加或减少全文服务所使用的系统资源量。在数据库级,可以为数据库启用或禁用 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务。在启用全文索引的数据库中,可以为多个全文目录之一创建和删除元数据。
注意: |
---|
在 Microsoft SQL Server 2005 中,所有数据库在默认情况下都支持全文索引。 |
在表级,可以启用或禁用表对全文查询的支持。如果表的全文定义被更改(例如,添加了一个需要创建索引以进行全文搜索的列),则需要重新填充关联的全文目录,以使全文索引与新的全文定义同步。在列级,可以添加或删除支持全文查询的列。
有关创建全文索引和全文目录的注意事项
在了解如何创建全文索引之前,有必要知道它们与普通 SQL Server 索引的不同。下表列出了这些差别。
全文索引 | 普通 SQL Server 索引 |
---|---|
存储在文件系统中,但通过数据库管理。 |
存储时受定义它们的数据库的控制。 |
每个表只允许有一个全文索引。 |
每个表允许有若干个普通索引。 |
将数据添加到全文索引(称为“填充”),可以通过计划或特定请求来请求填充,也可以在添加新数据时自动填充。 |
当插入、更新或删除作为其基础的数据时自动更新。 |
在同一个数据库内分组为一个或多个全文目录。 |
不分组。 |
在所有这些级别上,可使用工具检索元数据和状态信息。
与普通 SQL Server 索引一样,全文索引可以在相关表中的数据被修改时自动更新。另外,也可以按适当的间隔手动重新填充全文索引,但这可能会耗费大量时间和资源。因此,索引更新通常作为异步进程在数据库活动较少时在后台执行。
应当将具有相同更新特征的表(如更改次数少的与更改次数多的,或在一天中某个特定时段内频繁更改的表)组合在一起,并分配给同一个全文目录。通过这种方式设置全文目录填充计划,将使全文索引与表保持同步,且在数据库活动较多时不会对数据库服务器的资源使用产生负面影响。
在全文目录中安排表的全文索引的位置是非常重要的。将表分配给全文目录时,应注意下列基本原则:
始终选择可用于全文唯一键的最小唯一索引。(最好是 4 个字节、基于整数的索引。)这将显著减少文件系统中 Microsoft Search 服务所需要的资源。如果主键较大(超过 100 个字节),可以考虑选择表中的另一个唯一索引(或创建另一个唯一索引)来作为全文唯一键。否则,如果全文唯一键的大小超过所允许的最大值(900 个字节),全文填充将无法继续进行。
如果创建索引的表有成千上万行,请将该表分配给自己的全文目录。
应考虑要进行全文索引的表中发生的更改次数以及表的行数。如果要更改的总行数加上上次全文填充期间表中出现的行数达到了上百万,请将该表分配给自己的全文目录。
请参阅
概念
全文索引
全文搜索简介
全文搜索的体系结构
使用全文搜索查询 SQL Server