Microsoft SQL Server 憑藉簡單易用的特性,在中低階企業應用中佔有廣泛市場。SQL Server 7.0 以前缺乏全文檢索功能,無法提供文本內容搜尋服務。自 SQL Server 7.0 起,至 SQL Server 2000 正式具備完整的全文檢索能力,支援對 char、varchar、text、ntext、nchar、nvarchar 等資料類型欄位中的文字資料進行高效檢索。
為支援全文索引操作,SQL Server 7.0 新增多項預存程序與 Transact-SQL 陳述式。具體建立步驟如下:
sp_fulltext_database)sp_fulltext_catalog)sp_fulltext_table)sp_fulltext_column)sp_fulltext_table 啟用)sp_fulltext_catalog 開始填充)USE test
GO
-- 啟用全文索引支援,啟動 SQL Server 全文搜尋服務
EXEC sp_fulltext_database 'enable'
GO
-- 建立全文檢索目錄 ft_test
EXEC sp_fulltext_catalog 'ft_test', 'create'
GO
-- 為 Title 欄位建立全文索引資料元,pk_title 為 Book 表主鍵建立的唯一索引 (必要參數)
EXEC sp_fulltext_table 'book', 'create', 'ft_test', 'pk_title'
GO
-- 設定全文索引欄位
EXEC sp_fulltext_column 'book', 'title', 'add'
EXEC sp_fulltext_column 'book', 'notes', 'add'
GO
-- 啟用全文索引
EXEC sp_fulltext_table 'book', 'activate'
GO
-- 填充全文索引目錄
EXEC sp_fulltext_catalog 'ft_test', 'start_full'
GO
功能:在資料表的所有欄位或指定欄位中搜尋單字、片語、前綴詞、近似詞、衍生詞或加權詞。
語法格式:
CONTAINS ( { column | * } , '' )
column:搜尋欄位,使用 * 表示搜尋所有全文索引欄位。contains_search_condition:包含 SIMPLE_TERM、PREFIX_TERM、PROXIMITY_TERM、GENERATION_TERM、WEIGHTED_TERM 等,可結合 AND、OR、AND NOT 邏輯運算子。範例:搜尋 Title 或 Notes 含 "database" 或 "computer" 的記錄:
SELECT title, notes
FROM book
WHERE CONTAINS(title, 'database') OR CONTAINS(notes, 'database')
OR CONTAINS(title, 'computer') OR CONTAINS(notes, 'computer')
功能:以自由文本格式搜尋字串,回傳符合語意的資料列,稱為自由式全文查詢。
語法格式:
FREETEXT ( { column | * } , 'freetext_string' )
範例:搜尋包含 "Successful Life" 字串的資料列:
SELECT title, notes
FROM book
WHERE FREETEXT(*, 'Successful Life')