-- 1. 啟用資料庫全文檢索
EXEC sp_fulltext_database 'enable';
-- 2. 建立全文目錄
EXEC sp_fulltext_catalog 'FT_ProductCatalog', 'create';
-- 3. 建立全文索引(需資料表有唯一索引/主鍵)
EXEC sp_fulltext_table 'Products', 'create', 'FT_ProductCatalog', 'PK_Products';
-- 4. 加入欲索引欄位
EXEC sp_fulltext_column 'Products', 'ProductName', 'add';
EXEC sp_fulltext_column 'Products', 'Description', 'add';
-- 5. 啟用全文索引
EXEC sp_fulltext_table 'Products', 'activate';
-- 6. 啟動完整填補
EXEC sp_fulltext_catalog 'FT_ProductCatalog', 'start_full';
-- 7. 查詢填補狀態
SELECT FULLTEXTCATALOGPROPERTY('FT_ProductCatalog', 'PopulateStatus');
-- 0=閒置, 1=完整填補中, 2=累加填補中, 3=暫停, 4=節流, 5=復原, 6=關閉
char/varchar/nchar/nvarchar/text/ntext/xml/varbinary),指定語言(中文選 Chinese (Simplified/Traditional))。| 述詞/函數 | 用途 | 範例 |
|---|---|---|
CONTAINS | 精確/前綴/鄰近/權重搜尋 | WHERE CONTAINS(ProductName, ' "山地車" OR "公路車" ') |
FREETEXT | 自然語言/語意模糊搜尋 | WHERE FREETEXT(Description, '輕量化碳纖車架') |
CONTAINSTABLE | 傳回排名結果表 (KEY, RANK) | SELECT * FROM CONTAINSTABLE(Products, *, '山地車') AS FT JOIN Products P ON P.ID = FT.[KEY] ORDER BY FT.RANK DESC |
FREETEXTTABLE | 模糊搜尋排名表 | 同上 |
SQL Server 錯誤記錄檔、全文檢索記錄檔(LOG 目錄下 SQLFT*)、磁碟空間、目錄權限(服務帳號需修改權限)。ALTER FULLTEXT CATALOG FT_ProductCatalog REORGANIZE;(合併碎片)或 REBUILD(重建)。ntext/image 欄位。OPTIMIZE FOR、限制 TOP N、使用 CONTAINSTABLE 取得 RANK 排序而非 CONTAINS 當 WHERE 條件。sys.dm_fts_index_population、sys.fulltext_catalogs 狀態。SQL Server 2005 全文檢索提供強大的非結構化文字搜尋能力。建立流程:啟用資料庫 → 建立目錄 → 定義索引(唯一鍵+文字欄位+語言) → 啟用 → 填補。查詢首選 CONTAINS/CONTAINSTABLE 精確控制,FREETEXT 適合模糊搜尋。維護重點在斷詞器語言正確、填補排程合理、目錄碎片定期整理、磁碟 I/O 隔離。