技术开发 频道

SQL Server 2008的全文搜索升级

  有关选择全文升级选项的注意事项 
  为升级选择升级选项时,请考虑以下几点:

  如何使用断字符?
  SQL Server 2008 全文搜索服务包括新的断字符和词干分析器。这可能更改早期版本中特定文本模式或方案的全文查询结果。因此,在选择适当的升级选项时,如何使用断字符非常重要:

  如果使用的全文语言的断字符在 SQL Server 2008 中未发生更改,或者撤回准确性对您来说并不重要,则适合导入。随后,如果遇到任何撤回问题,您只需通过重新生成全文目录即可升级到新的断字符。

  如果您关心撤回准确性,并使用 SQL Server 2008 中经过改进的断字符之一,则适合重新生成。

  是否基于整数全文键列生成了任何全文索引?
重新生成执行内部优化,在某些情况下该优化可提高升级的全文索引的查询性能。具体来说,如果您具有的全文目录包含基表的全文键列为整数数据类型的全文索引,重新生成将在升级后实现全文查询的理想性能。在这种情况下,我们强烈建议使用“重新生成”选项。

  注意:
  对于 SQL Server 2008 中的全文索引,建议采用整数数据类型作为全文键列。

  使服务器实例处于联机状态的优先级是什么?
  升级期间的导入或重新生成操作会占用很多 CPU 资源,这会延迟其余服务器实例的升级和联机。如果使服务器实例尽快处于联机状态非常重要,并且希望在升级后运行手动填充,则适合“重置”。

  导入 SQL Server 2005 全文索引后使用新的断字符 
  导入 SQL Server 2005 全文索引时,一定要认识到,SQL Server 2008 包含 SQL Server 2005 中存在的大多数语言的新断字符。只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。对于其他语言,SQL Server 2008 引入了新一代断字符,这些断字符的行为可能与导入的 SQL Server 2005 全文索引中的 SQL Server 2005 断字符行为稍有不同。

  如果全文目录是在将 SQL Server 2005 数据库升级到 SQL Server 2008 时导入的,该全文目录中全文索引使用的一种或多种语言现在可能与新断字符关联。对于这些语言,当查询使用新断字符时,由于旧断字符和新断字符的行为略有差异,因此有时可能会出现查询和全文索引内容不匹配。在这种情况下,若要保证查询和全文索引内容之间的完全匹配,请执行下列操作之一:

  重新生成包含全文索引的全文目录 (ALTER FULLTEXT CATALOG catalog_name REBUILD)

  对全文索引执行 FULL POPULATION (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION)。

  重要提示:
  如果全文目录和索引使用的断字符未发生更改(例如英语断字符),则不会出现不匹配。查询时使用的断字符将与以前编制索引时用于创建索引的断字符和将来查询时所使用的断字符相同。
 
  将干扰词文件升级到非索引字表 
  SQL Server 2005 干扰词已替换为 SQL Server 2008 非索引字。将数据库从早期版本升级到 SQL Server 2008 时,SQL Server 2008 中将不再使用干扰词文件。然而,旧的干扰词文件存储在 FTDATA\ FTNoiseThesaurusBak 文件夹中,您可以稍后在更新或生成相应的 SQL Server 2008 非索引字表时使用它们。

  升级之后:

  如果您在 SQL Server 2005 安装中从未添加、修改或删除过任何干扰词文件,则该系统非索引字表应该可以满足您的需要。

  如果在 SQL Server 2005 中修改过干扰词文件,则这些修改在升级期间将会丢失。若要重新创建这些更新,必须在对应的 SQL Server 2008 非索引字表中手动重新创建这些修改。

  如果不希望将任何非索引字应用于全文索引(例如,如果您在 SQL Server 2005 安装中删除或清除过干扰词文件),则必须关闭每个已升级的全文索引的非索引字表。请运行如下 Transact-SQL 语句(将 database 替换为升级的数据库的名称,并将 table 替换为 table 的名称):

Use database;
ALTER FULLTEXT INDEX ON table SET STOPLIST OFF;

 

  GOSTOPLIST OFF 子句删除非索引字筛选,并触发对表的填充,而不会筛选任何视为干扰词的词语。

0
相关文章