天天看點

全文索引

一:簡要介紹下全文索引

可以利用索引快速通路資料庫表中的特定資訊。索引是對資料庫表中一個或多個列的值進行排序的結構。

索引提供指針以指向存儲在表中指定列的資料值,然後根據指定的排序次序排列這些指針。

資料庫使用索引的方式與使用書的目錄很相似:通過搜尋索引找到特定的值,然後跟随指針到達包含該值的行

二:全文索引的相關操作

1.确認全文索引是否開啟

對于SQL2005每個建立的資料庫全文索引特性預設是開啟的

可以通過這個語句來确認它是否開啟了

SELECT databasePropertyex('xland','isfulltextenabled')

傳回0為未開啟,傳回1為已開啟

2.激活和禁止全文索引

禁用全文索引一定要注意,已經存在的全文目錄,資料表同該目錄的任何關聯資訊都會被删除

exec sp_fulltext_database @action = 'disable'

'enable'為激活

3.建立全文索引

use xland 

go

create fulltext index on dbo.mytable --在某個表上建立全文索引

(title language English)  --對某個列使用全文索引

key index Pk_mytable --索引名(一般就是表名前面加Pk)

on maincatalog

with change_tracking off, --關閉跟蹤特性

no population --不進行初始化填充

其中Eglish可改為簡體中文

可通過

select name alias from master..syslanguages

查詢系統中支援的語言

修改和删除全文索引

drop fulltext index on dbo.mytable

三.全文目錄的相關操作

1.建立全文目錄

建立全文目錄的時候,全文索引一定要為enable狀态

全文目錄存放的路徑一定要有效

use xland

exec sp_fulltext_database @action = 'enable'

create fulltext catalog maincatalog

in path 'c:\fulltext'

更改和删除分别是alter和drop

drop fulltext catalog maincatalog

與其他的沒有太多差別

2.填充全文目錄

這是個背景的過程,表大的話雖然提示成功了,但是背景還在填充

alter fulltext index on dbo.mytable

start full population

exec sp_fulltext_table @tabname = 'dbo.mytable',

@action = 'start_full'

3.檢視結果

select title from mytable where contains(title,'全文')

四:全文查詢文法

1.contains:精确的比對

where contains(*,' "my name is" ') --對短語的精确比對,注意要有雙引号

where contains(*,' "my" or "name is" ') --或者的關系

還有'and not'  'and'   

還有臨近詞和權重  我就不多說了

2.freetext:模糊比對(你輸入swim可以比對出swam)與contains文法相同

3.containstable

此函數傳回一個表

此表包含兩個列

一個是key(就是主健啦)  一個是rank(傳回的行與搜尋結果的比對程度,越大越精确)

select  title from mytable p 

join containstable(mytable, title , 'xland') ct

on p.id  = ct.[key] 

4.freetexttable與containstable類似

附件:使用舊式文法建立全文索引的例子

--檢查資料庫pubs是否支援全文索引,如果不支援 

--則使用sp_fulltext_database 打開該功能 

if(select databaseproperty('xland','isfulltextenabled'))=0 

execute sp_fulltext_database 'enable' 

--建立全文目錄FT_xland 

execute sp_fulltext_catalog 'FT_xland','create'

--為mytable表建立全文索引資料元 

execute sp_fulltext_table 'mytable','create','FT_xland','PK_mytable'--最後一個是主鍵名 

--設定全文索引列名 

execute sp_fulltext_column 'mytable','title','add' 

--建立全文索引 

--activate,是激活表的全文檢索能力,也就是在全文目錄中注冊該表 

execute sp_fulltext_table 'mytable','activate' 

--填充全文索引目錄 

execute sp_fulltext_catalog 'FT_xland','start_full' 

go 

--檢查全文目錄填充情況 

While fulltextcatalogproperty('FT_xland','populateStatus')<>0 

begin 

--如果全文目錄正處于填充狀态,則等待30秒後再檢測一次 

waitfor delay '0:0:30' 

end 

--全文目錄填充完成後,即可使用全文目錄檢索 

select * from mytable where CONTAINS(title,'xland') 

上一篇: 觸發器
下一篇: 遊标