可以使用 CONTAINS 謂詞在數(shù)據(jù)庫中檢索特定的短語。當(dāng)然,這樣的查詢可以使用 LIKE 謂詞編寫。但是,CONTAINS 的許多形式所提供的文本查詢能力比 LIKE 要強(qiáng)。此外,與使用 LIKE 謂詞不同的是,CONTAINS 檢索總是區(qū)分大小寫。
說明??對于那些區(qū)分大小寫的語言(多數(shù)都基于拉丁語),全文檢索查詢以區(qū)分大小寫的方式執(zhí)行。但是,在日語中,有許多表示語音的拼字法,其中拼字規(guī)范化這一概念與不區(qū)分大小寫類似,如 kana = 不區(qū)分。這種拼字規(guī)范化不被支持。
假定想在 Northwind 數(shù)據(jù)庫內(nèi)進(jìn)行搜索,以查找短語"bean curd"。如果使用 CONTAINS 謂詞,這就是一個(gè)很簡單的查詢。
USE Northwind
GO
SELECT Description
FROM Categories
WHERE Description LIKE '%bean curd%'
GO
或者,使用 CONTAINS:
USE Northwind
GO
SELECT Description
FROM Categories
WHERE CONTAINS(Description, ' "bean curd" ')
GO
CONTAINS 謂詞使用的函數(shù)表示法中,第一個(gè)參數(shù)是要檢索的列的名稱,第二個(gè)參數(shù)是全文檢索條件。檢索條件(此例中是"bean curd")可以很復(fù)雜,由一個(gè)或多個(gè)條件組成,這將在后面介紹。
CONTAINS 謂詞支持使用復(fù)雜的語法在基于字符的列中檢索:
- 一個(gè)或多個(gè)特定的單詞和/或短語(簡單條件)。
一個(gè)單詞是一個(gè)或多個(gè)字符,中間沒有空格或標(biāo)點(diǎn)。有效的短語可以由帶空格的多個(gè)單詞組成,單詞之間可以有標(biāo)點(diǎn)也可以沒有標(biāo)點(diǎn)。例如,croissant 是一個(gè)單詞,而 café au lait 是一個(gè)短語。這樣的單詞和短語稱為簡單條件。
- 特定單詞的變形(派生條件)。
例如,檢索單詞 drive 的變形。如果表中的不同行包含單詞 drive、drives、drove、driving 和 driven,那么所有這些都將包含在結(jié)果集中,因?yàn)槠渲忻恳粋€(gè)都可以從單詞 drive 變形而來。
- 以指定文本(前綴條件)打頭的單詞或短語。
如果是短語,則該短語內(nèi)的每個(gè)單詞都被看作是一個(gè)前綴。例如,條件 auto tran* 與 automatic transmission 和 automobile transducer 匹配。
- 使用加權(quán)值的單詞或短語(加權(quán)條件)。
例如,查找一個(gè)賦權(quán)值比另一個(gè)單詞高的單詞。這將返回排序的查詢結(jié)果。
- 與另一個(gè)單詞或短語相近的單詞或短語(鄰近條件)。
例如,查找一些行,這些行中單詞 ice 與 hockey 相鄰,或者短語 ice skating 與 ice hockey 相鄰。
CONTAINS 謂詞可以用 AND 和 OR 將這些條件中的幾個(gè)結(jié)合起來,例如,要查找同一個(gè)啟用全文的數(shù)據(jù)庫列中所有有 latte 和 New York-style bagel 的行。不僅如此,還可以使用 AND NOT 對條件取反,例如 bagel and not cream cheese。
在使用 CONTAINS 時(shí),記住 SQL Server 將從檢索條件中去掉干擾詞。干擾詞是象 a、and、is 或 the 這樣的詞,這些詞可能經(jīng)常出現(xiàn),但是在檢索特定文本時(shí)沒有真正的幫助。
posted on 2009-02-21 16:01
JasonChou 閱讀(6650)
評論(0) 編輯 收藏 所屬分類:
database