全文搜索入门

更新日期: 2006 年 7 月 17 日

在 Microsoft SQL Server 2005 中为某个表设置全文索引功能需要执行以下两个步骤:

  1. 创建全文目录来存储全文索引。
  2. 创建全文索引。
ms142497.note(zh-cn,SQL.90).gif注意:
除非 SQL Server 中的数据库是使用 SQL Server Management Studio 创建的,否则默认情况下,它们都支持全文索引。若要在使用 Management Studio 创建数据库时为数据库启用全文搜索,请参阅如何创建数据库 (SQL Server Management Studio)。若要为现有数据库启用全文搜索,请参阅如何为数据库启用全文索引 (SQL Server Management Studio)
ms142497.note(zh-cn,SQL.90).gif注意:
还可以针对索引视图创建全文索引。有关索引视图的详细信息,请参阅视图类型

在 AdventureWorks 中设置全文搜索

以下示例对 AdventureWorks 中的 Document 表创建全文索引。

若要创建一个名为 AdvWksDocFTCat 的全文目录,请使用 CREATE FULLTEXT CATALOG 语句:

CREATE FULLTEXT CATALOG AdvWksDocFTCat

此语句将在安装过程中指定的默认位置创建全文目录。将在默认目录下创建名为 AdvWksDocFTCat 的文件夹。

ms142497.note(zh-cn,SQL.90).gif注意:
若要指定目录位置,请使用 IN PATH 子句。有关详细信息,请参阅 CREATE FULLTEXT CATALOG (Transact-SQL)

或者,您可以使用 Management Studio 创建全文目录。在对象资源管理器中,在要创建全文目录的数据库下,展开**“存储”文件夹,右键单击“全文目录”文件夹,然后单击“新建全文目录”**。有关详细信息,请参阅新建全文目录(“常规”页)

全文目录 ID 从 00005 开始,每创建一个新目录,其 ID 值就会递增 1。

确定了全文目录的物理驱动器之后,如果可能的话最好在该物理驱动器上创建它。因为创建全文索引是一个需要大量占用 I/O 的过程(它需要频繁地从 SQL Server 读取数据,然后将索引写入文件系统),您一定不希望 I/O 子系统成为瓶颈。

由于您已经创建了全文目录,因此下一步就可以创建全文索引。但是,在对 Document 表创建全文索引之前,您必须确定该表是否具有唯一且针对单列的非空索引。Microsoft Full-text Engine for SQL Server (MSFTESQL) 服务使用此唯一索引将表中的每一行映射到一个唯一的可压缩键。

若要创建唯一且针对单列的非空索引,请运行以下语句:

CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentID)
ms142497.note(zh-cn,SQL.90).gif注意:
Document 表中已包含一个这样的列。上述代码仅用来举例。

由于您已经拥有唯一键,因此可以对 Document 表创建全文索引:

CREATE FULLTEXT INDEX ON Production.Document
(
    Document                         --Full-text index column name 
        TYPE COLUMN FileExtension    --Name of column that contains file type information
        Language 0X0                 --0X0 is LCID for neutral language
)
KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index
WITH CHANGE_TRACKING AUTO            --Population type
GO

或者,您可以使用全文索引向导创建全文索引。有关详细信息,请参阅如何启动全文索引向导 (SQL Server Management Studio)

若要了解在选择列语言时需要注意的事项,请参阅有关全文搜索的国际化注意事项

若要监视填充状态,请使用 FULLTEXTCATALOGPROPERTY 或 OBJECTPROPERTYEX 函数。若要获得目录填充状态,请运行以下语句:

SELECT FULLTEXTCATALOGPROPERTY('AdvWksDocFTCat', 'Populatestatus')

通常,如果正在进行完全填充,则返回的结果为 1。

请参阅

其他资源

FULLTEXTCATALOGPROPERTY (Transact-SQL)
OBJECTPROPERTYEX (Transact-SQL)
CREATE FULLTEXT CATALOG (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

新增内容:
  • 添加了使用 Management Studio 创建数据库时的注意事项:默认情况下,不为这些数据库启用全文索引。