基本限制與概念
- SQL Server 7.0 Desktop 版不支援全文檢索。
- 每個資料表僅能建立一個全文索引。
- 被索引資料表必須擁有單一欄位唯一索引 (主鍵或 UNIQUE 限制)。
- 全文索引儲存於檔案系統 (全文目錄),非資料庫內部。
- 全文索引更新較一般索引耗時,不支援即時自動更新。
- 全文目錄屬於單一資料庫,不可跨資料庫共用。
- 僅能在實體資料表建立,不可用於檢視、系統表、暫存表。
- 忽略雜訊字,查詢包含雜訊字會報錯,應用程式需預先過濾。
啟動 Microsoft Search 服務
- 企業管理器 → 支援服務 → 全文檢索搜尋 右鍵 啟動。
- SQL Server Service Manager → Services 下拉選單選 Microsoft Search → Start/Continue。
- 命令列:
net start mssearch。
全文檢索精靈 (7 步驟)
- 工具 → 全文檢索索引 → 選擇資料庫 → 下一步。
- 選擇資料表 → 下一步。
- 選擇唯一索引 → 下一步。
- 選擇索引欄位 → 加入 → 下一步。
- 選擇/建立全文目錄 → 下一步。
- 設定/建立填滿排程 (選填) → 下一步。
- 完成。
SQL-DMO 自動化 (VB 範例)
Dim objSQL As New SQLDMO.SQLServer
objSQL.Connect "localhost", "sa", ""
Dim objCatalog As New SQLDMO.FullTextCatalog
objSQL.Databases("pubs").EnableFullTextCatalogs
objCatalog.Name = "ftcPubsTest"
objSQL.Databases("pubs").FullTextCatalogs.Add objCatalog
Dim objTable As New SQLDMO.Table
Set objTable = objSQL.Databases("pubs").Tables("authors")
objTable.FullTextCatalogName = "ftcPubsTest"
objTable.UniqueIndexForFullText = "UPKCL_auidind"
objTable.FullTextIndex = True
objTable.Columns("au_lname").FullTextIndex = True
objTable.Columns("au_fname").FullTextIndex = True
objTable.FullTextIndexActive = True
objCatalog.Start SQLDMOFullText_Full
預存程序建立腳本
USE Pubs; GO
EXEC sp_fulltext_database 'enable'; GO
EXEC sp_fulltext_catalog 'ftcPubsTest', 'create'; GO
EXEC sp_fulltext_table 'authors', 'create', 'ftcPubsTest', 'UPKCL_auidind'; GO
EXEC sp_fulltext_column 'authors', 'au_lname', 'add'; GO
EXEC sp_fulltext_column 'authors', 'au_fname', 'add'; GO
EXEC sp_fulltext_table 'authors', 'activate'; GO
EXEC sp_fulltext_catalog 'ftcPubsTest', 'start_full'; GO
進階管理
- 排程填滿:
sp_fulltext_catalog 'catalog_name', 'start_incremental' (增量) 或 'start_full' (完整)。
- 變更追蹤:
sp_fulltext_table 'table', 'change_tracking', 'auto'/'manual'/'off'。
- 查詢語法:
CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE。