SQL Server 2005 全文搜索包括改进和更新的干扰词文件
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;