微軟的SQL Server數據庫是一個在中低端企業應用中占有廣泛市場的關系型數據庫系統
它以簡單
方便
易用等特性深得眾多軟件開發人員和數據庫管理人員的鐘愛
但SQL Server
以前的數據庫系統由於沒有全文檢索功能
致使無法提供像文本內容查找此類的服務
成為一個小小的遺憾
從SQL Server
起
到如今的SQL Server
終於具備了全文檢索功能
使用戶可以高效地檢索存儲在數據庫char
varchar
text
ntext
nchar
nvarchar等數據類型列中的文本數據
建立全文索引
在進行全文檢索之前
必須先建立和填充數據庫全文索引
為了支持全文索引操作
SQL Server
新增了一些存儲過程和Transact
SQL語句
使用這些存儲過程創建全文索引的具體步驟如下(括號內為調用的存儲過程名稱)
啟動數據庫的全文處理功能(sp_fulltext_
database);
建立全文檢索目錄(sp_fulltext_catalog);
在全文檢索目錄中注冊需要全文索引的表(sp_fulltext_table);
指出表中需要全文檢索的列名(sp_fulltext_
column);
為表創建全文索引(sp_fulltext_table);
填充全文檢索目錄(sp_fulltext_catalog)
下面舉例說明如何創建全文索引
在本例中
對Test數據庫Book表中Title列和Notes列建立全文索引
use test //打開數據庫
//打開全文索引支持
啟動SQL Server的全文搜索服務
execute sp_fulltext_database
enable
//建立全文檢索目錄ft_test
execute sp_fulltext_catalog
ft_test
create
為Title列建立全文索引數據元
pk_title為Book表中由主鍵所建立的唯一索引
這個參數是必需的
execute sp_fulltext_table
book
create
ft_test
pk_title
//設置全文索引列名
execute sp_fulltext_column
book
title
add
execute sp_fulltext_column
book
notes
add
//建立全文索引
execute sp_fulltext_table
book
activate
//填充全文索引目錄
execute sp_fulltext_catalog
ft_test
start_full
至此
全文索引建立完畢
進行全文檢索
SQL Server
提供的全文檢索語句主要有CONTAINS和FREETEXT
CONTAINS語句的功能是在表的所有列或指定列中搜索
一個字或短語
一個字或短語的前綴
與一個字相近的另一個字
一個字的派生字
一個重復出現的字
CONTAINS語句的語法格式為
CONTAINS({column | *})
_condition>)
其中column是搜索列使用*時說明對表中所有全文索引列進行搜索Contains_search_
condition 說明CONTAINS語句的搜索內容其語法格式為
{||||}[{{AND|AND NOT|OR}}] [n]
下面就simple_term和prefix_term參數做簡要說明
simple_term是CONTAINS語句所搜索的單字或短語當搜索的是一個短語時必須使用雙引號作為定界符其格式為
{word| phrase}
prefix_term說明CONTAINS語句所搜索的字或短語前綴其格式為
{word* | phrase*}
例如下面語句檢索Book表的Title列和Notes列中包含database或computer字符串的圖書名稱及其注釋信息
select title notes
from book
where contains(tilte database) or contains(notesdatabase)
or contains(titlecomputer) or contains(notescomputer)
FREETEXT語句的功能是在一個表的所有列或指定列中搜索一個自由文本格式的字符串並返回與該字符串匹配的數據行所以FREETEXT語句所執行的功能又稱做自由式全文查詢
FREETEXT語句的語法格式為FREETEXT({column | * }freetext_string)
其中column是被搜索列使用*時說明對表中的所有全文索引列進行搜索Freetext_string參數指出所搜索的自由文本格式字符串
例如下面語句使用FREETEXT語句搜索Book表中包含Successful Life字符串的數據行
select title notes
from book
where freetext(*Successful Life)
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22028.html