全文索引和全文檢索是sql server
的新增功能
它能夠對數據中的字符類型列(如varchar
text等類型列)進行索
引
並通過索引實現全文搜索查詢
sql server常規索引與全文檢索相比
二者的區別如下
常規索引 全文索引
使用create index或約束定義創建 使用全文索引存儲過程創建和刪除
通過刪除或執行drop index語句刪除
當插入
修改或刪除數據時
sql server 只能通過任務調度或執行存儲過
能夠自動更新常規索引內容 程來填充全文索引
每個表可以建立多個常規索引 每個表只能有一個全文索引
索引不能分組 同一個數據庫中的多個全文索引可
以組織為一個全文目錄
常規索引存儲在數據庫文件中 全文索引存儲在文件系統中
為了支持全文索引操作
sql server
新增了一些新存儲過程和transact
sql語句
使用這些存儲過程創建全文索引的
具本步驟為(括號內為每步所調用的存儲過程名稱)
(
)啟動數據庫的全文處理功能(sp_fulltext_datebase)
(
)建立全文目錄(sp_fulltext_catalog)
(
)在全文目錄中注冊需要全文索引的表(sp_fulltext_table)
(
)指出表中需要全文檢索的列名(sp_fulltext_column)
(
)為表創建全文索引(sp_fulltext_table)
(
)填充全文索引(sp_fulltext_catalog)
例
use pubs
go
exec sp_fulltext_database
enable
為titles表建立全文索引數據元
其中create為建立
activate為激活
deactivate為關閉表全文索引的激活狀態
使
它不再參加全文目錄填充
drop為刪除
create參數中
後面跟的是全文目錄名稱和索引列名
下面語句為pubs數據庫中的titles表創建全文索引數據元
存儲該數據元的全文目錄為FT_pubs
所使用的唯一索引為
UPKCL_titleidind(title表中為title_id列的PRIMARY KEY約束所建立的唯中索引)
sp_fulltext_table titles
create
FT_pubs
upkcl_titledind
激活它
sp_fulltext_table titles
activate
指定參加全文索引的列
sp_fulltext_column
titles
title
add
sp_fulltext_column
titles
notes
add
下面是一個完整的例子
在執行該腳本程序之前啟動sql server的全文搜索服務
即microsoft search服務
use pubs
打開數據庫
go
檢查pubs是否支持全文索引
如果不支持全文索引
則使用sp_fulltext_datebase打開該功能
if (select databaseproperty (
pubs
IsFulltextEnables
))=
execute sp_fulltext_database
enable
建立全文目錄FT_pubs
execute sp_fulltext_catalog
FT_pubs
create
為titles表建立全文索引數據元
execute sp_fulltext_table
titles
FT_pubs
UPKCL_titleidind
設置全文索引列名
execute sp_fulltext_column
titles
title
add
execute sp_fulltext_column
titles
notes
add
建立全文索引
execute sp_fulltext_table
FT_pubs
activate
填充全文索引目錄
execute sp_fulltext_catalog
FT_pubs
start_full
GO
檢查全文目錄填充情況
WHILE FulltextCatalogProperty(
FT_pubs
PopulateStatus
)<>
BEGIN
如果全文目錄正處於填充狀態
則等待
秒後再檢測一次
WAITFOR DELAY
END
全文目錄填充完成後
使用全文目錄檢索
查詢title列或notes列中包含有database或computer字符串的圖書名稱
SELECT title
FROM title
where CONTAINTS(title
database
)
or contains(notes
database
)
or contains(title
computer
)
or contains(notes
computer
)
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22004.html