SQL Server 2000 的Standard Edition 和Enterprise Edition 版本提供了對錶資料中字串的複雜檢索功能---全文檢索索引(Full-Text Searches)。此功能需要在安裝時通過自訂安裝選項來添加。
10.7.1 全文索引和目錄
全文檢索索引是通過使用全文索引(Full-Text Index)來實現的。一個全文索引中儲存了表的資料中有確切含義的字串以及其在表的列中的位置等資訊。全文檢索索引就是利用全文索引中的資訊尋找含有特定字串的資料行。
全文索引包含在全文索引目錄中(Full-Text Catalogs),通常是由同一資料庫中的一個或多個表的全文索引構成一個全文索引目錄。一個表只能有一個全文索引,因此每個有全文索引的表只隸屬於一個全文索引目錄。一個資料庫可以包含一個或多個全文索引目錄,但一個全文索引目錄也只能隸屬於一個資料庫。全文索引目錄和全文索引儘管是由SQL Server 來管理,但是並不存放在資料庫檔案中,而是與Microsoft Search 服務相關的作業系統檔案。
在使用全文索引查詢時,SQL Server 將檢索條件發送給Microsoft Search 服務。MicrosoftSearch 服務將找出所有符合全文檢索索引條件的值,並將它們返送給SQL Server SQL Server就根據這些值來決定將處理表的哪些資料行。因此,必須啟動Microsoft Search 服務才能
使SQL Server 具有全文檢索索引的功能。
啟動Microsoft Search 服務的方法有兩種:
(1) 用Enterprise Manager 啟動
在Enterprise Manager 的Support Services 分類樹檔案夾中用按右鍵“Full-TextSearch”,從捷徑功能表中選擇“Start”項,即可啟動。啟動後10-1 所示。
(2) 用作業系統控制台中的服務管理程式啟動
在Win2000 Server 和Windows NT 確認中都可以從控制台的“管理工具Administrative Tools”下的“服務”介面中按右鍵所要啟動的服務“Microsoft Search”,從捷徑功能表中選擇“啟動”選項,就會啟動Microsoft Search 服務,啟動後畫面10-2所示。
10.7.2 建立全文索引目錄
在企業管理器中建立全文索引目錄的步驟如下:
(1) 在企業管理器的分類樹中選擇要建立全文索引目錄的資料庫,將其展開,按右鍵“Full-Text Catalogs” 對象從捷徑功能表中選取“New Full-Text Catalogs”,則會出現10-3 所示的建立全文索引目錄對話方塊。
(2) 在圖10-3 所示的對話方塊中輸入要建立的全文索引目錄名稱和檔案存放位置SQLServer 預設的存放目錄是“安裝目錄MSSQLFTDATA”,在此目錄下將為每個全文索引目錄單獨建立一個目錄,目錄名稱與圖10-3 中指定的名稱不同,是由系統產生的。單擊“Schedules” 頁框,則會出現10-4 所示的全文索引目錄計劃對話方塊。
(3) 在圖10-4 中可以建立、編輯全文索引目錄執行計畫。單擊“確定”按鈕,則建立全文索引目錄。
圖10-4 建立全文索引目錄計劃對話方塊
10.7.3 建立全文索引
建立全文索引的步驟如下:
(1) 在企業管理器中選擇要建立全文索引的資料庫,或表單擊右鍵,從捷徑功能表中選擇“New Full-Text Indexes”, 則會出現10-5 所示的全文索引建立嚮導介面。
(2) 單擊“下一步”按鈕,出現10-6 所示的選擇要建立全文索引的表對話方塊。
(3) 單擊“下一步”按鈕,出現10-7 所示的選擇表中的惟一索引對話方塊。
(4) 單擊“下一步”按鈕,出現10-8 所示的選擇組成索引的列的對話方塊。
(5) 單擊“下一步”按鈕,出現10-9 所示的選擇或建立全文索引目錄對話方塊。
(6) 單擊“下一步”按鈕,出現10-10 所示的選擇或建立編輯全文索引目錄。執行計畫或表計劃對話方塊。單擊“New Catalog Schedule” 按鈕,則出現10-11 所示的建立全文索引目錄執行計畫對話方塊。其它編輯、建立執行計畫對話方塊與此類似。
圖10-8 選擇組建全文索引的列的對話方塊
圖10-11 建立全文索引目錄執行計畫對話方塊
(7) 單擊“下一步”按鈕,出現10-12 所示的結束全文索引建立嚮導對話方塊。單擊“完成”按鈕,則SQL Server 開始在後台運行程式,定義全文索引,程式完成後顯示10-13 所示的定義全文索引成功對話方塊。此對話方塊告訴使用者全文索引已經定義,但是還沒有植入索引值。
(8) 單擊“OK” 按鈕。在企業管理器中選取所建立的全文索引所在的全文索引目錄,單擊右鍵,從捷徑功能表中選取“Start Full Population” 選項,完成全文索引的建立過程。
注意:全文索引與一般的索引不同,它不會隨著資料的更新而更新,因此必須經常或使用執行計畫去更新它,其更新會佔用許多系統資源和時間。
圖10-13 定義全文索引成功對話方塊
10.7.4 全文檢索索引查詢
在一個表中建立了全文索引後,才可以對錶中的資料進行全文檢索索引。進行全文檢索索引需
要在SELECT 命令的WHERE 字句中使用兩個Transact-SQL 謂詞:CONTAINS 和FR
ETEXT。
(1) CONTAINS
CONTAINS 謂詞的文法如下
CONTAINS ( { column_name | * } , '< contains_search_condition >' )
< contains_search_condition > ::=
{ < simple_term >
| < prefix_term >
| < generation_term >
| < proximity_term >
| < weighted_term >
}
| { ( < contains_search_condition > )
{ AND | AND NOT | OR } < contains_search_condition > [ ...n ]
}
其含義是檢索列中包含有符合< contains_search_condition >檢索條件的資訊。其中
“column_name” 必須是包含在全文索引中的列,“*” 表示檢索條件應用到所有包含在全文索引中的列上。CONTAINS 謂詞的含義與LIKE 謂詞相似,但CONTAINS 謂詞的功能更強大,支援更多的查詢方,式且對大小寫不敏感。
本章小結
本章的大部分內容都在講述SELECT 語句的應用。精通SELECT 語句等於攻克了SQL語言的半壁江山。如果再能將下一章“資料庫更新”中的語句熟練運用,那麼就基本掌握了SQL 語言。