2009-11-05 74 views
2

在SQL Server 2008中,当设置全文搜索时,它给了我一个选择一个时间/天来重新填充索引的选项,我可以用代码来做这件事吗? C#代码?如果是的话,我会怎么做呢?我需要从C#执行SQL代码来刷新索引吗?刷新全文搜索索引

另外,如果我不重新填充索引并添加一些新的记录,通过使用FTS查询将新的记录仍然会出现?但速度较慢?或者,除非我重新编制索引,否则他们根本不会出现?

回答

6

编辑:当心,有保留的FT指数电流的方法有两种:

  • 为“更新”,它需要保持更改单个记录(这是为你自动完成的轨道,给予适当的“更改跟踪”设置,但这会产生轻微的开销)。
  • “重新突出”它即重新创建完整的索引。

前一种方法是+/-透明用于底层目录用户继续服务,后者意味着服务的部分损失,而指数被重新填充(尽管可能不是在2008?)

这个问题涉及的是什么类型的更新或重新填充有点不清楚,所以下面的回答是通用的。

1)是的!全文索引重新填充(或更新)可以通过编程方式使用一个普通的TSQL查询来完成,如下所示。这样的查询可以很好地从C#代码调用,使用OLEDB甚至ODBC。

ALTER FULLTEXT INDEX ON myCatalog START 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索引等的概况)