刷新全文搜索索引

时间:2009-11-05 20:57:14

标签: c# sql-server-2008 full-text-search

在SQL Server 2008中,在设置全文搜索时,它为我提供了一个选项,可以选择一个时间/日来重新填充索引,我可以从代码中执行此操作而不是像C#代码吗?如果是这样我怎么办?我是否需要从C#执行SQL代码来刷新索引?

另外,如果我不重新填充索引并添加一些新记录,通过使用FTS查询,新记录是否会出现?但慢一点?或者除非我重新索引,否则他们会不会出现?

1 个答案:

答案 0 :(得分:6)

编辑:请注意,有两种方法可以保持FT索引的最新状态:

  • 要“更新”它需要跟踪单个记录的更改(这是自动完成的,给定正确的“更改跟踪”设置,但这会产生轻微的开销)。
  • “重新开始”它,即重新创建完整的索引。

前一种方法对于基础目录用户的持续服务是+/-透明的,后者意味着在重新填充索引时部分服务丢失(尽管可能不是在2008年?)

有些不清楚问题所涉及的更新或重新填充类型,因此以下回复是通用的。

1)是的!可以使用简单的TSQL查询以编程方式完成全文索引重新填充(或更新),如下所示。可以使用OLEDB甚至ODBC从C#代码调用此类查询。

ALTER FULLTEXT INDEX ON myCatalog START FULL POPULATION;    -- for full (re-)population
ALTER FULLTEXT INDEX ON myCatalog START UPDATE POPULATION;    -- for update

2)是的, FTS索引将反映数据库的变化,接近实时,只要相应地设置。 您需要为“更改跟踪”设置FT索引,以便能够保持索引当前。这是必要条件。使用已更改的记录和已记录的新记录(来自更改跟踪),SQL可以“动态”更新FT索引(保持此索引稍微落后于实时重新对数据库的更新;延迟是因为更新到FT索引有点缓冲,也因为这种类型的更新通常是关于服务器上CPU使用率的低优先级,或者这可以“手动”完成(手动是在引号中,因为“明确”可能更多适当的,对于这样的手动更新可能会被安排,因此“自动”发生。)

有关详细信息,请参阅此Microsoft technet article。 (另请查看本文底部的链接,了解FT索引等概述。)