使用SQL語句爲SQL Server 2005創建全文索引

下面以表TArticle爲例,爲BiaoTi、NeiRong兩個字段建立全文索引。

開始創建全文目錄了:

-- SQL語句:
create fulltext catalog FTArticle in path “D:\DataBase\FullText“
-- 存儲過程:
spfulltextcatalog FTArticle, “create“, “D:\Database\FullText“

注意:對應的目錄必須在服務器上已經建好了。

然後,在TArticle表上創建全文索引並加入BiaoTi、NeiRong字段。

-- SQL語句:
create fulltext
        index on TArticle
        (
                BiaoTi, NeiRong
        )
        key index pkTArticle
        on FTArticle
-- 存儲過程:
spfulltexttable “TArticle“, “create“, “FTArticle“, “pkTArticle“
spfulltextcolumn TArticle, “BiaoTi“, “add“
spfulltextcolumn TArticle, “NeiRong“, “add“

注意:pkTArticle請使用PKtableName的方式,否則會提示錯誤。

使用全文檢索:

select * from TArticle where contains(NeiRong, “div“)
select * from TArticle where freetext(NeiRong, “div“)


查看全文檢索的配置情況:

sphelpfulltextcatalogs -- 檢查數據庫有哪些全文目錄
sphelpfulltexttables FTArticle -- 查看哪些表把全文索引建立在FTArticle下
sphelpfulltextcolumns TArticle -- 查看TArticle表哪些字段配置了全文索引


刪除全文索引必須與創建的時候倒過來一步一步操作:

drop fulltext index on TArticle -- 撤銷T-Article上的全文檢索

drop fulltext catalog FTArticle -- 撤銷全文目錄FTArticle


存儲過程實例:

Use myDATA--打開數據庫 
GO

--檢查pubs是否支持全文檢索,若不支持則使用sp_fulltext_database打開此功能 
if (select databaseProperty('myDATA','isfulltextEnabled'))=0
	Begin 
		execute sp_fulltext_database 'enable'
	end
--建立全文目錄FT_pubs 
execute sp_fulltext_catalog 'TE_CI_Class_10134','create','E:\MSFTESQL'
--爲title表建立全文索引數據元 
execute sp_fulltext_table 'TE_CI_Class_10134','create','TE_CI_Class_10134','PK_TE_CI_Class_10134' 
--設置全文索引列名 
execute sp_fulltext_column 'TE_CI_Class_10134','CI_SearchKey','add' 
--execute sp_fulltext_column'TE_CI_Class_10134','CI_CorpName','add' 
--建立全文索引 
execute sp_fulltext_table 'TE_CI_Class_10134','activate' 
--填充全文索引目錄 
execute sp_fulltext_catalog 'TE_CI_Class_10134','start_full' 
GO 

--檢測全文索引目錄 
while FulltextCatalogProperty('PK_TE_CI_Class_10134','PopulateStatus') <> 0 
	Begin 
	--若全文索引正處在填充狀態,則等待30面後再檢測 
	waitfor delay  '0:0:30' 
	end

--設置自動跟蹤更新
ALTER FULLTEXT INDEX ON TE_CI_ChargeLevel_6 SET CHANGE_TRACKING AUTO

格式文檔幫助:

14.8  2005新增:與全文索引相關的T-SQL語句

SQL Server 2005以前的版本中,創建與管理全文目錄、全文索引主要是使用存儲過程來完成。從SQL Server 2005開始新增加了一些與全文索引相關的T-SQL語句,可以用來創建與管理全文目錄和全文索引。

14.8.1  創建全文目錄

創建全文目錄的T-SQL語句爲:

CREATE FULLTEXT CATALOG catalog_name

     [ON FILEGROUP filegroup ]

     [IN PATH 'rootpath']

     [WITH <catalog_option>]

     [AS DEFAULT]

     [AUTHORIZATION owner_name ]

<catalog_option>::=

     ACCENT_SENSITIVITY = {ON|OFF}

其中參數說明如下:

l  catalog_name:全文目錄名稱。

l  ON FILEGROUP filegroup:包含全文目錄的文件組名。

l  IN PATH 'rootpath':全文目錄的路徑。

l  AS DEFAULT:指定該全文目錄爲默認目錄。

l  AUTHORIZATION owner_name:將全文目錄的所有者設爲數據庫用戶名或角色的名稱。

l  ACCENT_SENSITIVITY:設置該全文目錄的全文索引是否區分重音。

例十三、在Northwind數據庫中創建一個名爲“TSQL全文目錄全文目錄,其代碼如下:

CREATE FULLTEXT CATALOG TSQL全文目錄

         ON FILEGROUP [PRIMARY]

         IN PATH 'E:"book"SQL Server 2005大全"數據庫"第十四章"運行後數據庫'

         AS DEFAULT

14.8.2  更改全文目錄屬性

創建完全文目錄之後,如果發現其設置有不如意之處,可以用T-SQL語句對其進行修改。更改全文目錄屬性的T-SQL語句代碼如下:

ALTER FULLTEXT CATALOG catalog_name

{ REBUILD [ WITH ACCENT_SENSITIVITY = { ON | OFF } ]

| REORGANIZE

| AS DEFAULT

}

其中參數說明如下:

l  catalog_name:全文目錄名稱

l  REBUILD:重新生成全文目錄。

l  WITH ACCENT_SENSITIVITY:設置該全文目錄的全文索引是否區分重音。

l  REORGANIZE:執行主合併索引以便將在索引過程中創建的各個較小的索引合併成一個大索引。

l  AS DEFAULT:指定該全文目錄爲默認目錄。

例十四、重新生成“TSQL全文目錄,其代碼如下:

ALTER FULLTEXT CATALOG TSQL全文目錄

         REBUILD

14.8.3  創建全文索引

有了全文目錄後,可以在全文目錄裏創建全文索引。一個全文目錄裏可以包含多個全文索引,但一個全文索引只能屬於一個全文目錄。每個數據表只能有一個全文索引。創建全文索引的T-SQL語句代碼如下:

CREATE FULLTEXT INDEX ON table_name

     [(column_name [TYPE COLUMN type_column_name]

          [LANGUAGE language_term] [,...n])]

     KEY INDEX index_name

          [ON fulltext_catalog_name]

     [WITH

          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}

     ]

其中參數說明如下:

l  table_name:數據表名。

l  column_name:全文索引中包括的一列或多列的名稱。只能對類型爲charvarcharncharnvarchartextntextimagexmlvarbinary的列進行全文索引。

l  TYPE COLUMN type_column_name:用於存儲column_name的文檔類型的數據表中的列名。

l  LANGUAGE language_term:存儲在column_name中的數據所用的語言。

l  KEY INDEX index_name:數據表中唯一鍵索引的字段名。

l  ON fulltext_catalog_name:全文目錄名。

l  MANUAL:指定是使用SQL Server代理還是手動傳播跟蹤日誌。

l  AUTO:當關聯的數據表中修改了數據時,SQL Server自動更新全文索引。

l  OFF[,NO POPULATION]:不保留對索引數據的更改列表。

例十五、爲文章表的標題內容文件三個字段創建全文索引,其代碼如下:

CREATE FULLTEXT INDEX

         ON 文章(標題,內容,文件 TYPE COLUMN 擴展名)

         KEY INDEX PK_文章

         ON TSQL全文目錄

注意:由於在前面的章節裏已經爲文章表創建了全文索引,因此在運行本例之前要先把原來創建的全文索引刪除。

14.8.4  更改全文索引屬性

創建完全文索引之後,如果發現其設置有不如意之處,可以用T-SQL語句對其進行修改。更改全文索引屬性的T-SQL語句代碼如下:

ALTER FULLTEXT INDEX ON table_name

   { ENABLE

   | DISABLE

   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }

   | ADD ( column_name

     [ TYPE COLUMN type_column_name ]

     [ LANGUAGE language_term ] [,...n] )

     [ WITH NO POPULATION ]

   | DROP ( column_name [,...n] )

     [WITH NO POPULATION ]

   | START { FULL | INCREMENTAL | UPDATE } POPULATION

   | STOP POPULATION

   }

其中一些參數說明如下:

l  table_name:數據表名。

l  ENABLE | DISABLE:啓用或禁用全文索引。

l  MANUAL:指定是使用SQL Server代理還是手動傳播跟蹤日誌。

l  AUTO:當關聯的數據表中修改了數據時,SQL Server自動更新全文索引。

l  OFF:不保留對索引數據的更改列表。

l  ADD:指定在全文索引中添加列。

l  WITH NO POPULATION:指定添加過刪除全文索引列之後不填充全文索引。

l  DROP:指定在全文索引中刪除列。

l  START……POPULATION:開始填充全文索引。

l  FULL:指定填充所有全文索引。

l  INCREMENTAL:指定對上次填充以來修改過的行進行填充。

l  UPDATE :指定對自上次更新更改跟蹤索引以來的所有插入、更新或刪除進行處理。

l  STOP POPULATION:停止正在進行的填充。

例十六、禁用文章表的全文索引,其代碼如下:

ALTER FULLTEXT INDEX ON 文章

         DISABLE

例十七、啓用文章表的全文索引,其代碼如下:

ALTER FULLTEXT INDEX ON 文章

         ENABLE

例十八、將文章表裏的文件字段從全文索引裏刪除,其代碼如下:

ALTER FULLTEXT INDEX ON 文章

         DROP (文件)

例十九、填充文章表的全文索引,其代碼如下:

ALTER FULLTEXT INDEX ON 文章

         START FULL POPULATION

14.8.5  刪除全文索引

刪除全文索引的T-SQL的語法代碼比較簡單,如下所示:

DROP FULLTEXT INDEX ON table_name

例二十、刪除文章表裏的全文索引,其代碼如下:

DROP FULLTEXT INDEX ON 文章

14.8.6  刪除全文目錄

刪除全文目錄的T-SQL的語法代碼比較簡單,如下所示:

DROP FULLTEXT CATALOG catalog_name

例二十一、刪除文章表裏的全文索引,其代碼如下:

DROP FULLTEXT CATALOG TSQL全文目錄

注意:要刪除全文目錄必須爲空,即不能包含有全文索引。

14.9  小結

使用全文搜索可以快速、靈活地爲存儲在數據庫中的文本數據的基於關鍵字的查詢創建索引。與僅適用於字符模式的LIKE謂詞不同,全文查詢將根據特定語言的規則對詞和短語進行操作,從而針對此數據執行語言搜索。

全文索引是由SQL Server FullText Search服務來維護的,必須選啓動該服務才能使用全文索引。填充全文索引有三種方式:完全填充、增量填充和更改跟蹤。

在全文索引中概念與術語比較多,如全文索引、全文目錄、斷字符、詞幹分析器、標記、篩選器、填充、干擾詞等。瞭解怎麼創建全文目錄,怎麼創建全文索引,怎麼進行全文索引的填充,怎麼使用調度讓全文索引自動填充。

使用CONTAINSFREETEXT兩個謂詞和CONTAINSTABLEFREETEXTTABLE兩個行集值函數可以用來進行全文搜索,其中CONTAINSFREETEXT用在WHERE子句中,CONTAINSTABLEFREETEXTTABLE用在FROM子句中。CONTAINS搜索有簡單詞、派生詞、前綴詞、加權詞和鄰近詞五種搜索方式。FREETEXT只有一種搜索方式,但是其將一個句子中的每個單字拆分開進行搜索。

SQL Server 2005可以對存儲在image類型字段裏的文件進行全文搜索。其搜索的前提是必須要有一個字段指明image類型字段裏存儲的文件是什麼類型。當爲image類型字段設置好全文索引後,可以像其他字段一樣地進行全文搜索。


發佈了13 篇原創文章 · 獲贊 9 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章