全文檢索搜尋查詢
若要在 Microsoft SQL Server 2005 中撰寫全文檢索查詢,您必須學習如何使用 CONTAINS 與 FREETEXT Transact-SQL 述詞,以及 CONTAINSTABLE 與 FREETEXTTABLE 資料列集值函數。
CONTAINS 與 FREETEXT 述詞只能在 SELECT 陳述式的 WHERE 子句中使用。CONTAINSTABLE 與 FREETEXTTABLE 資料列集值函數可在 SELECT 陳述式的 FROM 子句中使用。
CONTAINS 述詞支援多樣的語法,可在內含文字資料的資料行中搜尋:
- 一或多個特定的單字或片語 (不可分割的詞彙)。
在全文檢索搜尋中,會將單字視為 Token。Token 是透過適當的斷詞工具 (其遵循所指定語言的語言規則) 予以識別。有效片語可包含多個單字 (不論之間是否具有標點符號)。例如,"croissant" 是一個單字,而 café au lait 則是一個片語。這類單字與片語稱為不可分割的詞彙。 - 特定單字的字形變化 (衍生詞彙)。
例如,搜尋 "drive" 單字的字形變化。如果資料表的不同資料行中包括 "drive"、"drives"、"drove"、"driving" 及 "driven" 等字,則因為所有這些單字都是從 "drive" 這個字所變化產生,所以它們都會出現在結果集中。 - 特定單字的同義字變化 (同義字)。
例如,如果將 "{car, automobile, truck, van}" 這個項目加入同義字中,則您可搜尋 "car" 這個字的同義字變化。由於 "automobile"、"truck"、"van" 或 "car" 這些字都是屬於內含 "car" 這個字的同義字展開集,因此所查詢之資料表中含有這些字的所有資料列都會出現在結果集中。如需有關同義字檔案結構的詳細資訊,請參閱<設定同義字檔案>。 - 以指定文字開始的單字或片語 (前置詞彙)。
對於片語,片語中的每個單字都是一個前置詞。例如,"auto tran*" 一詞符合 "automatic transmission" 及 "automobile transducer",但不符合 "automatic motor transmission"。 - 使用加權值的單字或片語 (加權詞彙)。
例如,在搜尋多個詞彙的查詢中,您可以指派每個搜尋單字的加權值,以指出它與搜尋條件中之其他單字的相對重要性。這類型之查詢的結果會根據您指派給搜尋單字的相對加權,先傳回最相關的資料列。 - 鄰近另一個單字或片語的單字或片語 (相近詞彙)。
例如,您要尋找 "ice" 單字接近 "hockey" 單字或 "ice skating" 片語接近 "ice hockey" 片語的資料列。
例如,CONTAINS 述詞可以使用布林運算子 AND、OR 及 NOT 將這些詞彙結合在一起,以尋找同一個全文檢索索引資料行中內含 "latte" 和 "New York-style bagel" 的所有資料列。使用 AND NOT 即可否定詞彙,例如 "bagel" and not "cream cheese"。
使用 CONTAINS 時請記住,SQL Server 會從搜尋條件中捨棄贅字。贅字如 "a"、"and"、"is" 或 "the" 等字,這些字經常出現在句子中,但對搜尋特定文字並無幫助。如需有關贅字的詳細資訊,請參閱<贅字>。