在SQL Server 2008中,當設置全文搜索時,它給了我一個選擇一個時間/天來重新填充索引的選項,我可以用代碼來做這件事嗎? C#代碼?如果是的話,我會怎麼做呢?我需要從C#執行SQL代碼來刷新索引嗎?刷新全文搜索索引
另外,如果我不重新填充索引並添加一些新的記錄,通過使用FTS查詢將新的記錄仍然會出現?但速度較慢?或者,除非我重新編制索引,否則他們根本不會出現?
在SQL Server 2008中,當設置全文搜索時,它給了我一個選擇一個時間/天來重新填充索引的選項,我可以用代碼來做這件事嗎? C#代碼?如果是的話,我會怎麼做呢?我需要從C#執行SQL代碼來刷新索引嗎?刷新全文搜索索引
另外,如果我不重新填充索引並添加一些新的記錄,通過使用FTS查詢將新的記錄仍然會出現?但速度較慢?或者,除非我重新編制索引,否則他們根本不會出現?
編輯:當心,有保留的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索引等的概況)