全文檢索服務可對大量文字資料進行高效搜尋。本文以 pubs 範例資料庫的 titles 資料表為例,示範從啟用服務到查詢的完整流程。
USE pubs
GO
-- 1. 啟用資料庫全文檢索支援
EXEC sp_fulltext_database 'enable'
GO
-- 2. 建立全文檢索目錄
EXEC sp_fulltext_catalog 'ft_titles', 'create'
GO
-- 3. 為 titles 資料表建立全文檢索資料定義
-- UPKCL_titleidind 為主鍵唯一索引名稱(可用 sp_help titles 查詢)
EXEC sp_fulltext_table 'titles', 'create', 'ft_titles', 'UPKCL_titleidind'
GO
-- 4. 加入全文檢索欄位
EXEC sp_fulltext_column 'titles', 'title', 'add'
GO
EXEC sp_fulltext_column 'titles', 'notes', 'add'
GO
-- 5. 啟用資料表全文檢索
EXEC sp_fulltext_table 'titles', 'activate'
GO
-- 6. 填充全文檢索目錄(完整填充)
EXEC sp_fulltext_catalog 'ft_titles', 'start_full'
GO
-- CONTAINS:精確詞彙/片語搜尋
SELECT title, notes FROM titles WHERE CONTAINS(title, '"computer Cooking"')
GO
-- FREETEXT:意義搜尋(字幹分析、同義詞)
SELECT title, notes FROM titles WHERE FREETEXT(title, 'computer Cooking')
GO
-- FREETEXT 加雙引號視為字面片語
SELECT title, notes FROM titles WHERE FREETEXT(title, '"computer Cooking"')
GO
-- 單字搜尋
SELECT title, notes FROM titles WHERE CONTAINS(title, 'computer')
GO
-- 全欄位搜尋
SELECT title, notes FROM titles WHERE FREETEXT(*, 'computer')
GO
sp_fulltext_table ... 'create' 需指定唯一單一欄位索引(通常為主鍵)。start_full / start_incremental / start_update)為非同步作業,大量資料需等待完成。CONTAINS 支援布林邏輯、近接詞、加權詞彙;FREETEXT 較寬鬆、語意導向。