創建SQL Server全文檢索的2方案

此文章主要向大家講述的是創建SQL Server全文檢索的正確操作方案,如果你對創建SQL Server全文檢索的正確操作步驟有興趣瞭解的話,以下的文章你就可以對其進行點擊觀看了,以下就是文章的主要方案的描述。

方法一:先啓動全文索引服務,查看當前數據庫的狀態SELECT DATABASEPROPERTY ('pubs','IsFulltextEnabled'),打開FullText功能sp_fulltext_databse 'enable',關閉此功能sp_fulltext_databse 'disable',在所有創建的表上建唯一索引(若已有主鍵索引可省),在表上點右鍵進入定義全文索引向導創建。

方法二:1、首先創建一個全文目錄,一個全文目錄可以包含多個全文索引,但一個全文索引只能用於構成一個全文目錄。每個數據庫可以不包含全文目錄或包含多個全文目錄。as default參數表明把此全文目錄作爲默認的全文目錄。

  1. Create fulltext catalog DocumentCatalog as default 

2、然後創建唯一非聚集索引。

 

  1. create unique index T_DocumentsContent_VerID on T_DocumentsContent(VerID) 

這個一般把你要全文索引的表上的主鍵作爲唯一非聚集索引。該索引將強制插入列中的數據具有唯一性。一般都是主鍵符合這個要求。

 

3、最後一步就是創建全文索引

  1. Create FULLTEXT INDEX ON T_DocumentsContent(DOCUCONTENT TYPE COLUMN ExtendedName)  
  2. key index T_DocumentsContent_VerID on DocumentCatalog  
  3. with change_tracking auto 

T_DocumentsContent:用於全文索引的表明

 

DocuContent:用於SQL Server全文檢索的字段

 

如果用於SQL Server全文檢索的字段是二進制流文件,那麼要通過指定這個二進制流文件的擴展名由哪個列提供數據。如上例的Type Column ExtendedName,表明DocuContent的類型由ExtendedName列提供

 

key index用來指定全文索引表唯一鍵索引的名稱

 

on DocumentCatalog:表明這個全文索引是建立在哪個全文目錄上

 

with Change_Tracking:指定 SQL Server 是否維護一份對索引數據的全部更改的列表。更改跟蹤不會記錄通過 WRITETEXT 和 UPDATETEXT 進行的數據更改。他有幾個選項

 

1. MANUAL: 指定是使用 SQL Server 代理按計劃傳播更改跟蹤日誌,還是由用戶手動進行傳播。

 

2.AUTO:指定在關聯的表中修改了數據時,SQL Server 自動更新全文索引。默認值爲 AUTO。

 

3.OFF [ ,NO POPULATION] 指定 SQL Server 不保留對索引數據的更改的列表。僅當ANGE_TRACKING 爲 OFF 時,才能使用 NO POPULATION 選項。如果指定了 NO POPULATION,則 SQL Server 在創建索引後不會對其進行填充。

只有在用戶使用 START FULL 或 INCREMENTAL POPULATION 子句執行 ALTER FULLTEXT INDEX 命令後,纔會填充索引。如果未指定 NO POPULATION,則 SQL Server 創建索引後將對其進行完全填充

 

當然如果需要使用全文索引需要把全文索引服務啓動,就是SQL Server FullText Search這個服務。注意Sql Express版本不能使用全文索引。

 

最後剩下如何進行全文檢索的查詢了。在查詢種我們不能使用like關鍵字來進行SQL Server全文檢索,應該使用Contains謂詞,他的第一個參數是你要全文檢索的列名,可以指定多個列,用都好分割,並且必須用小括號括起來,第二個參數是需要搜索的文本,第二個參數前後必須用單引號包含起來,裏面查詢的文本可用引號包含,並且可以使用通配符和條件語句,如

where Contains(a.Content, '"中國*" or "武漢"')

條件語句可以用符號來代理如AND可以用&來代替,具體參看SQLServer的幫助文檔。

 

第三個參數是查詢的語言。如果一個列裏面存儲了多種語言,允許用戶指定搜索的語言。

除了Contains謂詞可以用於全文檢索FreeText也可以進行SQL Server全文檢索,但次謂詞用於搜索含有基於字符的數據類型的列,好像不能搜索二進制流的列,但幫助文檔卻又說支持Image的列。但是FreeText的搜索精度沒有Contains的謂詞高,推薦使用Contains謂詞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章