1.全文檢索可以對(duì)varchar,text,image型字段進(jìn)行檢索,但一個(gè)表最多只能建一個(gè)全文索引
2.如果使用傳統(tǒng)的模糊搜索會(huì)降低數(shù)據(jù)庫(kù)的性能,選擇全文索引來(lái)解決是比較好的方法!
3.創(chuàng)建全文索引演示
(1)打開(kāi)全文索引支持,啟動(dòng)SQL Server的全文搜索服務(wù)
use 數(shù)據(jù)庫(kù)名字
go
execute sp_fulltext_database 'enable'
(2)建表和初始化數(shù)據(jù)(說(shuō)明:測(cè)試數(shù)據(jù)庫(kù)名稱(chēng)為:myDBtest,測(cè)試表名稱(chēng)為:My_FullText)
--建表
USE [myDBTest]
GO
CREATE TABLE My_FullText(
ID [int] IDENTITY(1,1) NOT NULL,
MyText [varchar](256) NOT NULL
)
GO
----全文索引只能創(chuàng)建在唯一的列上
--全文索引不能建立在視圖上,只能建立在有唯一索引的基礎(chǔ)表上。
alter table dbo.My_FullText
add constraint pk_FullText primary key (ID)
Go
----插入數(shù)據(jù)
insert into dbo.My_FullText(MyText) values('汽車(chē)會(huì)飛。 {猜一種飲料} 答案:咖啡 (CAR,飛)')
insert into dbo.My_FullText(MyText) values('A和C誰(shuí)比較高呢?答案:C比較高 (因?yàn)锳BCD A比C低)')
insert into dbo.My_FullText(MyText) values('茉莉花、太陽(yáng)花、玫瑰花哪一朵花最沒(méi)力? 答案:茉莉花 (好一奪沒(méi)力[美麗]的茉莉花)')
insert into dbo.My_FullText(MyText) values('猩猩最討厭什么線? 答案:平行線。 平行線沒(méi)有相交(香蕉)')
insert into dbo.My_FullText(MyText) values('橡皮、老虎皮、獅子皮哪一個(gè)最不好? 答案:橡皮。 (橡皮差)')
insert into dbo.My_FullText(MyText) values('布和紙怕什么? 答案:布怕一萬(wàn),紙怕萬(wàn)一。(不怕一萬(wàn),只怕萬(wàn)一)')
insert into dbo.My_FullText(MyText) values('麒麟飛到北極會(huì)變成什么? 答案:冰淇淋。 原因:冰淇淋(冰麒麟)')
insert into dbo.My_FullText(MyText) values('1234567890 哪個(gè)數(shù)字最勤勞,哪個(gè)數(shù)字最懶惰? 答案:1懶惰;2勤勞。 (1不做2不休)')
insert into dbo.My_FullText(MyText) values('怎樣使麻雀安靜下來(lái)? 答案:壓它一下。 原因:鴉雀無(wú)聲(壓雀無(wú)聲)')
insert into dbo.My_FullText(MyText) values('小白加小白等于什么?答案:小白兔 (TWO)')
insert into dbo.My_FullText(MyText) values('餃子是男人還是女人? 答案:男人 (餃子有包皮 )')
insert into dbo.My_FullText(MyText) values('如果有一臺(tái)車(chē),小明是司機(jī),小華坐在他右邊,小花坐在他后面,請(qǐng)問(wèn)這臺(tái)車(chē)是誰(shuí)的呢?? 答案:“如果”的')
(3)創(chuàng)建全文索引
注意:如果不能創(chuàng)建全文索引,有可能是缺乏某些組件,需要下載補(bǔ)。
SQL Server 2005的SP2補(bǔ)丁文件名為:SQLServer2005SP2-KB921896-x64-CHS.exe,http://www.microsoft.com/downloads/details.aspx?familyid=D07219B2-1E23-49C8-8F0C-63FA18F26D3A&displaylang=zh-cn )
(4)測(cè)試全文索引
select * from dbo.My_FullText where contains(MyText,'c')
搜索結(jié)果為:
結(jié)果為空。而事實(shí)上記錄中有包含“C”的卻搜索不出來(lái),因?yàn)槟J(rèn)的斷詞語(yǔ)言是簡(jiǎn)體中文,所以英文搜索不出來(lái)!
下面使用:
select * from dbo.My_FullText where contains(MyText,'汽車(chē)')
(5)刪除全文索引
直接刪除會(huì)出現(xiàn)如:
此時(shí)刪除主鍵,則依賴(lài)于主鍵的全文索引會(huì)自動(dòng)刪除!