程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在Sql Server中使用全文檢索

在Sql Server中使用全文檢索

編輯:關於SqlServer

在SQL Server數據庫中可以使用全文索引,與僅適用於字符模式的 LIKE 謂詞不同,全文查詢將根據特定語言的規則對詞和短語進行操作,從而針對此數據執行語言搜索。

對大量非結構化的文本數據進行查詢時,使用全文搜索獲得的性能優勢會得到充分的表現。對數百萬行文本數據執行的 LIKE 查詢可能需要花費幾分鐘時間才能返回結果;但對同樣的數據,全文查詢只需要幾秒或更少的時間,具體取決於返回的行數。

可以對包含 char、varchar 和 nvarchar 數據的列創建全文索引。也可以對包含格式化二進制數據(如存儲在 varbinary(max) 或 image 列中的 Microsoft Word 文檔)的列創建全文索引。不能使用 LIKE 謂詞來查詢格式化的二進制數據。若要對一個表創建全文索引,該表必須具有一個唯一且非空的列。

下面是創建全文檢索的步驟

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



Create fulltext catalog DocumentCatalog as default

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



create unique index T_DocumentsContent_VerID on T_DocumentsContent(VerID)

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

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



Create FULLTEXT INDEX ON T_DocumentsContent(DOCUCONTENT TYPE COLUMN ExtendedName)
key index T_DocumentsContent_VerID on DocumentCatalog
with change_tracking auto
  • T_DocumentsContent:用於全文索引的表明
  • DocuContent:用於全文檢索的字段
  • 如果用於全文檢索的字段是二進制流文件,那麼要通過指定這個二進制流文件的擴展名由哪個列提供數據。如上例的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版本不能使用全文索引。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved