sqlserver如何新增全文索引
一、檢查服務裡面帶有Full-text字樣的服務是否存在並開啟
如果不存在帶有Full-text字樣的服務的,確認是否安裝了sqlserverFullTextSearch
--檢查資料庫PS2是否支援全文索引,如果不支援
--則使用sp_fulltext_database 開啟該功能
if(select databaseproperty('PS2','isfulltextenabled'))=0
execute sp_fulltext_database 'enable'
二、新建全文目錄
全文目錄是用來儲存全文索引的三、為表定義全文索引
四、點選下一步,按提示選擇
1.確認下一步
2.選擇唯一索引,通常是主鍵
3.選擇要建立的全文索引列,對於斷字元的選擇如果列存的是中文就選擇chinese,如果是英文就選擇English
4.選擇索引更新方式,可以先自動更新,以後資料量大了可以設定新增全文索引的計劃
5.選擇全文目錄
五、全文索引的SQL查詢關鍵字
建立好全文索引後就可以使用SQL語句來查詢了,主要用帶三個關鍵字 CONTAINS、FREETEXT、CONTAINSTABLE和FREETEXTTABLE1. CONTAINS
搜尋單個詞和短語的精確或模糊的匹配項,要搜尋的內容必須是個有意義的詞語,比如說“蘋果”、“建設廳”,不能是一些沒意義的詞語,比如“阿迪撒啊是”,“兒兒的”這樣的詞語即使LIKE是能查詢出來,但全文索引對這樣沒意義的詞語可能沒有建立索引,查不出來- SELECT *
- FROM dbo.Business
- WHERE CONTAINS(Address,'旅遊')
2. FREETEXT
和CONTAINS類似,不同的是它會先把要查詢的詞語先進性分詞然後在查詢匹配項- 01.select *
- 02.from dbo.Business
- 03.where freetext(Address,'帶嬰兒旅遊')
3.CONTAINSTABLE
在查詢方式上與 CONTAINS 幾乎一樣。但CONTAINSTABLE 返回的是符合查詢條件的表,在 SQL 語句中我們可以把它當作一個普通的表來使用,並且使用 CONTAINSTABLE 的查詢對每一行返回一個相關性排名值 (RANK) 和全文鍵 (KEY)。- SELECT *
- FROM Business AS FT_TBL
- INNER JOIN CONTAINSTABLE(Business, *, 'ISABOUT (嬰兒 WEIGHT (.8),赤水 WEIGHT (.4) )')
- AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]
- ORDER BY KEY_TBL.RANK DESC
4. FREETEXTTABLE
在查詢方式上與 FREETEXT 幾乎一樣。但 FREETEXTTABLE 返回的是符合查詢條件的表,在 SQL 語句中我們可以把它當作一個普通的表來使用,並且使用 FREETEXT 的查詢對每一行返回一個相關性排名值 (RANK) 和全文鍵 (KEY)。- SELECT * ,
- BusinessID ,
- Address
- FROM Business AS FT_TBL
- INNER JOIN FREETEXTTABLE(Business, Address, 'ISABOUT (帶嬰兒旅遊 WEIGHT (.8),赤水 WEIGHT (.4) )')
- AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]
- ORDER BY KEY_TBL.RANK DESC
--activate,是啟用表的全文檢索能力,也就是在全文目錄中註冊該表
execute sp_fulltext_table 'ProSearch','activate'
--填充全文索引目錄
execute sp_fulltext_catalog 'ProSearchCatalog','start_full'
--查詢全文索引是否建立完畢(0:完畢;1:正在建立)
select fulltextcatalogproperty('ProSearchCatalog','populateStatus')
三、介紹一下全文索引的一些相關操作
檢視全文檢索的配置情況:
sp_help_fulltext_catalogs -- 檢查資料庫有哪些全文目錄
sp_help_fulltext_tables ProSearchCatalog -- 檢視哪些表把全文索引建立在T_testData下
sp_help_fulltext_columns ProSearch -- 檢視test表哪些欄位配置了全文索引
四、步驟說明(額外,其它理解方式):
1. 啟動資料庫的全文處理功能(sp_fulltext_database);;
2. 建立全文檢索目錄(sp_fulltext_catalog);
3.在全文檢索目錄中註冊需要全文索引的表(sp_fulltext_table);
4. 指出表中需要全文檢索的列名(sp_fulltext_column);
5. 為表建立全文索引(sp_fulltext_table);
6. 填充全文檢索目錄(sp_fulltext_catalog);
下面舉例說明如何建立全文索引,在本例中,對Test資料庫Book表中Title列和Notes列建立全文索引
use test //開啟資料庫
//開啟全文索引支援,啟動SQL Server的全文搜尋服務
execute sp_fulltext_database ‘enable’
//建立全文檢索目錄ft_test
execute sp_fulltext_catalog ‘ft_test’, ‘create’
為Title列建立全文索引資料元,pk_title為Book表中由主鍵所建立的唯一索引,這個引數是必需的。
execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’
//設定全文索引列名
execute sp_fulltext_column ‘book’, ‘title’, ‘add’
execute sp_fulltext_column ‘book’,‘notes’, ‘add’
//建立全文索引
execute sp_fulltext_table ‘book’, ‘activate’
//填充全文索引目錄
execute sp_fulltext_catalog ‘ft_test’, ‘start_full’
至此,全文索引建立完畢。可進行全文檢索
刪除全文索引必須與建立的時候倒過來一步一步操作:
drop fulltext index on test -- 撤銷test上的全文檢索
drop fulltext catalog FT_testData -- 撤銷全文目錄FT_testData