SQL Server 2005 全文搜索包括改进和更新的干扰词文件

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 14:03:03

Microsoft SQL Server 2005 全文搜索包括改进和更新的干扰词文件。

这些干扰词文件位于以下目录中:

$SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\FTDATA\

在同时设置 SQL Server 2005 和全文搜索支持时,会创建此目录并安装干扰词文件。

注意:如果您使用的是较低版本的 SQL Server 中的自定义干扰词文件,则在升级到 SQL Server 2005 后,这些自定义干扰词文件将不再有效。要继续使用这些自定义干扰词文件,必须按照“更多信息”一节中的步骤操作。

从 SQL Server 2000 或 SQL Server 7.0 升级到 SQL Server 2005 后,将根据改进和更新的 SQL Server 2005 干扰词文件填充全文目录。

来自以前 SQL Server 安装的干扰词文件将被放在以下目录中:

$SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\FTERef

此外,旧的干扰词文件名也将被更新。例如,简体中文干扰词文件名称将从 noise.chs 更新为 noiseCHS.MSSearch2x.txt。

要在升级到 SQL Server 2005 后继续使用旧的干扰词文件,请按照下列步骤操作:

1. 升级到 SQL Server 2005 后,立即停止全文目录填充。为此,对每个全文索引运行以下 ALTER FULLTEXT INDEX 命令:
ALTER FULLTEXT INDEX ON table_name STOP POPULATION
注意:在此命令中,table_name 是表名称的占位符。

如果启用了更改跟踪,请先运行以下命令禁用更改跟踪,然后再停止填充:
ALTER FULLTEXT INDEX ON table_name SET CHANGE_TRACKING OFF
有关如何停止全文索引填充的更多信息,请参见 SQL Server 联机丛书中的“更改全文索引 (Transact-SQL)”主题。
2. 将旧的干扰词文件从 $SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\FTERef 目录复制到 $SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\FTDATA\ 目录。

注意:当升级群集解决方案时,旧的干扰词文件将被复制到以下安装节点目录中:
$SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\FTERef
3. 重命名旧的干扰词文件,以便与 SQL Server 2005 干扰词文件的名称一致。例如,将简体中文干扰词文件的名称 noiseCHS.MSSearch2x.txt 重命名为 noiseCHS.txt。

注意:必须先备份 SQL Server 2005 干扰词文件,然后再将其替换为旧的干扰词文件。
4. 重新填充全文目录。要重新启动填充,请对每个全文索引运行以下 ALTER FULLTEXT INDEX 命令:
ALTER FULLTEXT INDEX ON table_name START FULL POPULATION
如果要使用更改跟踪,请运行以下命令来重新启动填充并启用更改跟踪:
ALTER FULLTEXT INDEX ON table_name SET CHANGE_TRACKING {MANUALAUTO}
有关如何启动全文索引填充的更多信息,请参见 SQL Server 联机丛书中的“更改全文索引 (Transact-SQL)”主题。

以下代码是对步骤 1 中的每个全文索引停止全文索引填充的一个示例脚本。可以将此脚本改为对步骤 4 中的每个全文索引启动全文索引填充。 

-- Sample script to stop full-text index population for 
-- each full-text index.

DECLARE @table_name NVARCHAR(517),
        @schema_name NVARCHAR(517);

DECLARE @exec_str NVARCHAR(4000);

DECLARE @change_tracking_state NCHAR(1);

-- Retrieve a list of tables with full-text indexes and stop 
-- full-text index population for each full-text index.
DECLARE ms_crs_ftind CURSOR STATIC LOCAL FOR
    SELECT t.name, SCHEMA_NAME(t.schema_id), ft.change_tracking_state
    FROM sys.fulltext_indexes AS ft 
		JOIN sys.tables AS t 
		ON (ft.object_id = t.object_id);

OPEN ms_crs_ftind;

FETCH ms_crs_ftind INTO @table_name, @schema_name, @change_tracking_state;

WHILE @@FETCH_STATUS >= 0
BEGIN
	-- If change tracking is enabled ('O' indicates change tracking 
	-- is OFF), stop change tracking before stopping population. 
    IF (@change_tracking_state != N'O')
    BEGIN
		SELECT @exec_str = 'ALTER FULLTEXT INDEX ON '
			+ QUOTENAME(@schema_name,'[')+'.'+ QUOTENAME(@table_name,'[') 
			+ ' SET CHANGE_TRACKING OFF ';
        EXEC (@exec_str);
    END

	-- Stop full-text index population for each full-text index. 
    SELECT @exec_str = 'ALTER FULLTEXT INDEX ON '
		+ QUOTENAME(@schema_name,'[')+'.'+QUOTENAME(@table_name,'[') 
		+ ' STOP POPULATION ';
    EXEC (@exec_str);

    FETCH ms_crs_ftind INTO @table_name,@schema_name, @change_tracking_state;
END

DEALLOCATE ms_crs_ftind;

Tags:

作者:佚名
分享到: 微信 更多