首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

深入理解 SQL Server 全文檢索索引

     編輯:關於SqlServer

什麼是全文檢索?

Microsoft SQL Server 內建的 T-SQL 支援標準 SQL 查詢,例如精確比對 WHERE Notes = 'Deliver Tuesday' 或模糊比對 WHERE Notes LIKE '%caution%'。但當你需要更進階的搜尋——例如「兩個單字彼此接近」、「同一字根衍生出的各種形式(run、ran、running)」、「多關鍵字加權搜尋」或「片語鄰近搜尋」——標準謂詞就無法滿足,這時就需要啟用 SQL Server 的全文檢索功能。

全文檢索架構

許多開發者會驚訝地發現:SQL Server 並不自行處理全文索引建立與查詢,而是倚賴 Windows 作業系統內建的 Microsoft Search Service。這項服務為包括 SQL Server 在內的多種應用程式提供索引與搜尋能力。SQL Server 2000 透過「全文檢索目錄」與「全文檢索索引」兩層結構,將文字資料交給 Search Service 建立倒排索引,查詢時再由 SQL Server 整合結果回傳。

核心搜尋功能一覽

  • 鄰近搜尋 (NEAR):找出兩個單字在指定距離內共同出現的列。
  • 字幹搜尋 (FORMSOF INFLECTIONAL):自動展開同字根單字,如 run 可匹配 running、ran。
  • 加權搜尋 (WEIGHT):為多個關鍵字指派權重,依相關性排序。
  • 片語搜尋:精確匹配完整片語,支援噪音字過濾。

SQL Server 2005 的增強預覽

下一版 SQL Server 2005(代號 Yukon)將大幅強化全文檢索:

  • 全文索引整合進資料庫引擎,不再依賴外部服務,效能與管理更簡化。
  • 支援 CONTAINSTABLE / FREETEXTTABLE 回傳排名分數,直接套用於 ORDER BY。
  • 新增 STOPLIST 物件,可自訂噪音字清單,取代舊版登錄機制。
  • 支援二進位大型物件 (BLOB) 欄位的全文索引,如 Office、PDF 文件直接索引。

快速上手:建立第一個全文索引

-- 1. 建立全文檢索目錄
CREATE FULLTEXT CATALOG ftCatalog AS DEFAULT;

-- 2. 為資料表啟用全文索引 (需有唯一索引鍵)
CREATE FULLTEXT INDEX ON dbo.Articles(Content LANGUAGE 1028)
   KEY INDEX PK_Articles ON ftCatalog
   WITH CHANGE_TRACKING AUTO;

常見查詢範例

-- 字幹搜尋
SELECT * FROM dbo.Articles
WHERE CONTAINS(Content, 'FORMSOF(INFLECTIONAL, run)');

-- 加權搜尋
SELECT * FROM dbo.Articles
WHERE CONTAINSTABLE(Content, 'ISABOUT(performance WEIGHT(0.8), tuning WEIGHT(0.2))') > 0;

-- 鄰近搜尋
SELECT * FROM dbo.Articles
WHERE CONTAINS(Content, 'SQL NEAR Server');

效能與維護建議

  • 啟用 CHANGE_TRACKING AUTO 讓索引自動追蹤資料異動,或排程 FULL/INCREMENTAL 重建。
  • 使用 sys.dm_fts_index_population 監控填入進度(SQL 2005+)。
  • 定期執行 ALTER FULLTEXT CATALOG ... REORGANIZE 減少碎片。

掌握全文檢索,能讓應用程式從「精確比對」邁向「語意搜尋」,大幅提升使用者體驗。立即嘗試在開發環境建立第一個全文索引,感受搜尋能力的質變!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved