本文以經典 `pubs` 資料庫為例,示範使用系統預存程序建立全文索引的完整步驟,並說明各階段的關鍵指令與驗證方式。
USE pubs;
GO
-- 1. 啟用全文功能(若未啟用)
IF (SELECT DATABASEPROPERTY('pubs', 'IsFulltextEnabled')) = 0
EXEC sp_fulltext_database 'enable';
-- 2. 建立全文目錄
EXEC sp_fulltext_catalog 'FT_pubs', 'create';
-- 3. 為 title 表建立全文索引(需唯一索引 UPKCL_titleidind)
EXEC sp_fulltext_table 'title', 'create', 'FT_pubs', 'UPKCL_titleidind';
-- 4. 加入索引欄位
EXEC sp_fulltext_column 'title', 'title', 'add';
EXEC sp_fulltext_column 'title', 'notes', 'add'; -- 注意:原文此處誤寫為 notes 表,實為 title 表的 notes 欄位
-- 5. 啟用全文檢索
EXEC sp_fulltext_table 'title', 'activate';
-- 6. 完全填充目錄
EXEC sp_fulltext_catalog 'FT_pubs', 'start_full';
GO
-- 等待填充完成
WHILE FULLTEXTCATALOGPROPERTY('FT_pubs', 'PopulateStatus') <> 0
BEGIN
WAITFOR DELAY '00:00:30';
END
-- 7. 使用全文查詢
SELECT title
FROM title
WHERE CONTAINS(title, 'database')
OR CONTAINS(title, 'computer')
OR CONTAINS(notes, 'database')
OR CONTAINS(notes, 'computer');
| 程序名稱 | 執行權限 | 功能描述 |
|---|---|---|
| sp_fulltext_service | serveradmin / 系統管理員 | 設定全文搜尋屬性(斷詞器、同義字典等) |
| sp_fulltext_catalog | db_owner 及以上 | 建立/刪除全文目錄、啟動/停止索引作業 |
| sp_fulltext_database | db_owner | 初始化全文索引或刪除資料庫所有全文目錄 |
| sp_fulltext_table | db_ddladmin / db_owner | 標識資料表為全文索引表或移除 |
| sp_fulltext_column | db_ddladmin | 指定全文索引表的欄位加入/移出索引 |