sql server 全文索引

來源:互聯網
上載者:User

以犧牲空間來換取時間的 sql full-text 具體的實現方案如下所示:

 

1:在Sql指令碼中完成full-text的建立【假設我將Users表中的LoginName欄位(nvarchar)與DisplayName欄位(nvarchar),Sites表中的Properties欄位(xml)加入到full-text檔案中】

--檢查資料庫MyDB是否支援全文索引,如果不支援--則使用sp_fulltext_database 開啟該功能if(select databaseproperty('MyDB','isfulltextenabled'))=0  execute sp_fulltext_database 'enable' --建立全文檢索目錄FT_MyDB(最後的參數e:/fulltext是自訂的儲存目錄,要是去掉將會在系統預設的地方建立相應的隱藏檔)execute sp_fulltext_catalog 'FT_MyDB','create','e:/fulltext'--建立唯一索引(這裡一定要先將系統預設為主鍵建立的聚簇索引刪除掉,因為一個表中只能有一個聚簇索引)create unique clustered index UsersId on dbo.Users(Id)create unique clustered index SitesId on dbo.Sites(Id) --為Users表和Sites表建立全文索引資料元execute sp_fulltext_table 'Users','create','FT_MyDB','UsersId'execute sp_fulltext_table 'Sites','create','FT_MyDB','SitesId'
--設定全文索引列名,(Users表的LoginName和DisplayName,Sites表的Properties)execute sp_fulltext_column 'Users','LoginName','add'execute sp_fulltext_column 'Users','DisplayName','add'execute sp_fulltext_column 'Sites','Properties','add' --建立全文索引--activate,是啟用表的全文檢索索引能力,也就是在全文檢索目錄中註冊該表execute sp_fulltext_table 'Users','activate'execute sp_fulltext_table 'Sites','activate' --填充全文索引目錄execute sp_fulltext_catalog 'FT_MyDB','start_full'go --檢查全文檢索目錄填充情況While fulltextcatalogproperty('FT_MyDB','populateStatus')<>0begin --如果全文檢索目錄正處於填充狀態,則等待30秒後再檢測一次waitfor delay '0:0:30'end

 

2:用相應的語句就可以對設定了全文索引的列進行filter,具體語句如下所示:

SELECT * FROM [MyDB].[dbo].[Users] WHERE CONTAINS(LoginName,'"ad*"') -–擷取nvarchar欄位LoginName中包含ad的記錄SELECT * FROM [MyDB].[dbo].[Sites] WHERE CONTAINS(Properties,'"haha"') –擷取xml欄位Properties中包含haha的記錄

 

3:由於sql full-text不能即時與資料庫的資料保持一致,因此要為資料表中的Full-Text Index運行相應的Incremental Population 或者 Full Population,這裡我們可以通過手動建立一個Schedule機制對其定期執行,使full-text中的資料與資料庫中的資料保持一致。

不過這裡也可以當我們去尋找資料的時候,可執行一下sql 語句來完成Incremental Population的運行,來確保每次搜素出來的資料都是最新的,sql語句如下所示:

execute sp_fulltext_catalog 'FT_My_DB','start_incremental'

但是上面的兩種方式都是我們自己去實現資料的同步,會損失一定的效率,我們可以用更好的一種方式:讓sql server自己去做資料的同步,sql指令碼如下所示:

USE DGA_DB;GOALTER FULLTEXT INDEX ON [My_DB].[dbo].[Users] SET CHANGE_TRACKING AUTO;GO

4:關於Sql Server的全文索引,我們可以參考MSDN來擷取更多的內容: 

     http://msdn.microsoft.com/zh-cn/library/ms142571

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.