SQL Server全文索引服務(wù)
2020-07-25 13:41:31
供稿:網(wǎng)友
 
						SQL 7的全文檢索和Index Server的檢索方式非常類似。  
Contains  
AND, OR, NOT 
可以在Contains中很方便使用邏輯表達(dá)式 
Example: 
Select username from member where contains(userinfo,'"作家" AND "木匠"') 
Select username from member where contains(userinfo,'"作家" OR "木匠"') 
Select username from member where contains(userinfo,'"作家" AND NOT "木匠"')  
NEAR 
這是一個(gè)在普通的邏輯表達(dá)式中沒有的關(guān)鍵字,意思是很簡單,就是說找到靠近的兩個(gè)詞 
Example: 
Select Content from MicrosoftRecord where contains(Content,'"比爾?蓋茨" NEAR "保羅?艾倫"') 
這就表示要找到全文中包含比爾?蓋茨和保羅?艾倫,并且兩個(gè)詞相隔不遠(yuǎn)。  
FORMSOF INFLECTIONAL  
這個(gè)功能可以查找單詞的各種形式,比如過去式、復(fù)數(shù)、動(dòng)詞形式、名詞形式等。可惜對(duì)中文沒什么用 
Example: 
SELECT ProductName FROM Products WHERE CONTAINS(ProductName,'FORMSOF (INFLECTIONAL, dry)')  
* 
這個(gè)功能可以查找單詞的前綴,不過對(duì)中文也沒有什么用處 
Example: 
SELECT ProductName FROM Products WHERE CONTAINS(ProductName, '"dis*"')  
ISABOUT WEIGHT 
這個(gè)功能可以給復(fù)合查詢時(shí)不同的條件以不同的權(quán)重,以決定返回的記錄集的順序 
SELECT CategoryName, Description FROM Categories WHERE CONTAINS(Description, 'ISABOUT spread weight (.8), sauces weight (.4), relishes weight (.2) )' ) 
權(quán)重的值可以從0.0到1.0 
ContainsTable 
它的使用方式和Contains基本相同,這里就不再重復(fù)介紹了。要提到的是它返回的是一張供你進(jìn)一步查詢的表,而不是一個(gè)查詢條件。  
FreeText  
如果使用這種方式,那么查詢的時(shí)候會(huì)使用分詞技術(shù)來實(shí)現(xiàn)模糊查詢,并且過濾掉一些非關(guān)鍵詞,比較類似于Contains中的FORMSOF,可惜對(duì)中文也沒有什么支持 
Example: 
SELECT CategoryName FROM Categories WHERE FREETEXT (Description, 'sweetest candy bread and dry meat' )  
FreeTextTable  
它和FreeText的差別就跟Contains和ContainsTable的差別一樣。