SqlServer 建立全文索引

2021-07-01 19:24:55 字數 2473 閱讀 3995

引言微軟的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語句。使用這些儲存過程建立全文索引的具體步驟如下(括號內為呼叫的儲存過程名稱):

1. 啟動資料庫的全文處理功能(sp_fulltext_

database);;

2. 建立全文檢索目錄(sp_fulltext_catalog);

3.在全文檢索目錄中註冊需要全文索引的表(sp_fulltext_table);

4. 指出表中需要全文檢索的列名(sp_fulltext_

column);;

5. 為表建立全文索引(sp_fulltext_table);;

6. 填充全文檢索目錄(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 2000提供的全文檢索語句主要有contains和freetext。contains語句的功能是在表的所有列或指定列中搜尋:乙個字或短語;乙個字或短語的字首;與乙個字相近的另乙個字;乙個字的派生字;乙個重複出現的字。

contains語句的語法格式為:

contains(), _condition> )

其中,column是搜尋列,使用「*」時說明對錶中所有全文索引列進行搜尋。contains_search_

condition 說明contains語句的搜尋內容,其語法格式為:

[}] [...n]

下面就******_term和prefix_term引數做簡要說明:

******_term是contains語句所搜尋的單字或短語,當搜尋的是乙個短語時,必須使用雙引號作為定界符。其格式為:

prefix_term說明contains語句所搜尋的字或短語字首,其格式為:

例如,下面語句檢索book表的title列和notes列中包含「database」或「computer」字串的圖書名稱及其注釋資訊:

select title, notes

from book

where contains(tilte, 『database』) or contains(notes,『database』)

or contains(title,『computer』) or contains(notes,『computer』)

freetext語句的功能是在乙個表的所有列或指定列中搜尋乙個自由文字格式的字串,並返回與該字串匹配的資料行。所以,freetext語句所執行的功能又稱做自由式全文查詢。

freetext語句的語法格式為:freetext(,『freetext_string』)

其中,column是被搜尋列,使用「*」時說明對錶中的所有全文索引列進行搜尋。freetext_string引數指出所搜尋的自由文字格式字串。

例如,下面語句使用freetext語句搜尋book表中包含「successful life」字串的資料行:

select title, notes

from book

where freetext(*,『successful life』) 

SQL Server 全文索引

一 建立全文索引 1 使用ssms 2 使用t sql create fulltext index on production.productdescription description key index pk productdescription productdescriptionid on...

SQL Server 全文索引

一 建立全文索引 1 使用ssms 2 使用t sql create fulltext index on production.productdescription description key index pk productdescription productdescriptionid on...

SQL Server 全文索引

一 建立全文索引 1 使用ssms 2 使用t sql create fulltext index on production.productdescription description key index pk productdescription productdescriptionid on...