今天在研究SQL Server2000的全文檢索索引功能。在網上找到的一些比較不錯的資料:
[SQLSERVER]SQL中的全文檢索索引(轉鄒建)
執行個體示範在SQL中啟用全文檢索索引
使用SQL SERVER 2000的全文檢索索引功能
SQL Server 2000 全文檢索索引技術
以上的文章中對Search的相關文法及參數說的不夠詳細,下面是詳細的說明:
SQL Server 2000提供的全文檢索索引語句主要有CONTAINS和FREETEXT。
CONTAINS:
CONTAINS語句的功能是在表的所有列或指定列中搜尋:一個字或短語;一個字或短語的首碼;與一個字相近的另一個字;一個字的派生字;一個重複出現的字。
CONTAINS語句的文法格式為:
CONTAINS({column | *}), <contains_search_condition>)
其中,column是搜尋列,使用“*”時說明對錶中所有全文索引列進行搜尋。
Contains_search_condition 說明CONTAINS語句的搜尋內容,其文法格式為:
{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...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(notes,'database')
or contains(title,'computer') or contains(notes,'computer')
FREETEXT
FREETEXT語句的功能是在一個表的所有列或指定列中搜尋一個自由文字格式設定的字串,並返回與該字串匹配的資料行。所以,FREETEXT語句所執行的功能又稱做自由式全文檢索查詢。
FREETEXT語句的文法格式為:FREETEXT({column | * },'freetext_string')
其中,column是被搜尋列,使用“*”時說明對錶中的所有全文索引列進行搜尋。Freetext_string參數指出所搜尋的自由文字格式設定字串。
例如,下面語句使用FREETEXT語句搜尋Book表中包含“工藝”和“機械”字串的資料行,注意,SQL語名把字串分成兩個詞搜尋了:
select *
from trade
where freetext(*,'工藝 機械')
全文檢索搜尋SQL Server提供的Search服務外,還有Microsoft Indexing Services 和 第三方的搜尋組件。
關於Index Service下面的文章值得一看:
使用Microsoft Indexing Services開發網站全文檢索索引配置說明