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

SQL Server 全文檢索完整建立與查詢指南:sp_fulltext_* 系統預存程序實戰

     編輯:關於SqlServer

全文索引 vs 一般索引

建立全文索引六步驟 (SQL 2000/2005 相容腳本)


-- 1. 啟用資料庫全文功能
USE pubs;
EXEC sp_fulltext_database 'enable';

-- 2. 建立全文目錄
EXEC sp_fulltext_catalog 'FT_pubs', 'create';

-- 3. 註冊資料表 (需唯一索引鍵,通常為 PK)
EXEC sp_fulltext_table 'titles', 'create', 'FT_pubs', 'UPKCL_titleidind';

-- 4. 指定全文檢索欄位
EXEC sp_fulltext_column 'titles', 'title', 'add';
EXEC sp_fulltext_column 'titles', 'notes', 'add';

-- 5. 啟用資料表全文索引
EXEC sp_fulltext_table 'titles', 'activate';

-- 6. 填充全文目錄 (完整填充)
EXEC sp_fulltext_catalog 'FT_pubs', 'start_full';

-- 等待填充完成
WHILE FULLTEXTCATALOGPROPERTY('FT_pubs', 'PopulateStatus') <> 0
    WAITFOR DELAY '00:00:30';

全文查詢語法


-- CONTAINS: 精確詞彙/前綴/鄰近/加權
SELECT title FROM titles
WHERE CONTAINS(title, 'database') 
   OR CONTAINS(notes, 'database')
   OR CONTAINS(title, 'computer')
   OR CONTAINS(notes, 'computer');

-- FREETEXT: 自然語言、語意擴展
SELECT title FROM titles
WHERE FREETEXT(*, 'database management system');

進階填充策略 (SQL 2005+)

  • 完整填充:重建整個目錄,耗時久,適合初始建立
  • 增量填充:僅處理變更列,需 TIMESTAMP 欄位,搭配 SQL Agent 排程
  • 變更追蹤 (自動/手動):即時/批次更新,現代首選

常見問題排查

  • 全文服務 (Microsoft Search / FDLauncher) 未啟動
  • 資料表無唯一單欄索引 (PK 或 UNIQUE NOT NULL)
  • 斷詞器未安裝對應語言 (中文需安裝簡體/繁體斷詞器)
  • 查詢語法錯誤:CONTAINS 需雙引號包裹詞彙,支援 AND/OR/NEAR、"* 前綴、*" 片語

現代版本 (SQL 2008+) 建議改用 CREATE FULLTEXT CATALOG/INDEX DDL 語法,配合 ALTER FULLTEXT INDEX ... SET CHANGE_TRACKING AUTO,管理更直觀、效能更佳。舊版系統仍可沿用 sp_fulltext_* 維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性一般索引全文索引
建立方式CREATE INDEX / 約束sp_fulltext_* 系統預存程序
更新機制自動 (DML 同步)排程填充 / 手動 / 變更追蹤
每表數量多個**僅一個**
儲存位置資料庫檔案檔案系統 (全文目錄)
分組管理無全文目錄