sqlserver如何添加全文索引


在SQL Server 中提供了一種名為全文索引的技術,可以大大提高從長字符串里搜索數
據的速度,不用在用LIKE這樣低效率的模糊查詢了。
 
下面簡明的介紹如何使用Sql2008 全文索引

一、檢查服務里面帶有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和FREETEXTTABLE

1. CONTAINS 

搜索單個詞和短語的精確或模糊的匹配項,要搜索的內容必須是個有意義的詞語,比如說“蘋果”、“建設廳”,不能是一些沒意義的詞語,比如“阿迪撒啊是”,“兒兒的”這樣的詞語即使
LIKE是能查詢出來,但全文索引對這樣沒意義的詞語可能沒有建立索引,查不出來
  1. SELECT *   
  2. FROM dbo.Business  
  3. WHERE CONTAINS(Address,'旅游')  
實現功能:查詢Business表中Address列包含“旅游”的行

2. FREETEXT

和CONTAINS類似,不同的是它會先把要查詢的詞語先進性分詞然后在查詢匹配項
  1. 01.select *    
  2. 02.from dbo.Business     
  3. 03.where freetext(Address,'帶嬰兒旅游')  

3.CONTAINSTABLE

在查詢方式上與 CONTAINS 幾乎一樣。但CONTAINSTABLE 返回的是符合查詢條件的表,在 SQL 語句中我們可以把它當作一個普通的表來使用,並且使用 CONTAINSTABLE 的查詢對每一行返回一個相關性排名值 (RANK) 和全文鍵 (KEY)。
  1. SELECT  *  
  2. FROM    Business AS FT_TBL  
  3.         INNER JOIN CONTAINSTABLE(Business, *, 'ISABOUT (嬰兒 WEIGHT (.8),赤水 WEIGHT (.4) )')  
  4.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  
  5. ORDER BY KEY_TBL.RANK DESC  
ISABOUT 是這種查詢的關鍵字,weight 指定了一個介於 0~1之間的數,類似系數。表示不同條件有不同的側重。
CONTAINSTABLE 返回的表包含有特殊的兩列:KEY,RANK。
被全文索引的表必須有唯一索引。這個唯一的索引列在返回的表中就成為 KEY。我們通常把它作為表連接的條件。
在某些網站搜索時,結果中會出現表示匹配程度的數字,RANK 與此類似。它的值在0~1000之間,標識每一行與查詢條件的匹配程度,程度越高,RANK 的值大,通常情況下,按照 RANK 的降序排列。

4. FREETEXTTABLE

在查詢方式上與 FREETEXT 幾乎一樣。但 FREETEXTTABLE 返回的是符合查詢條件的表,在 SQL 語句中我們可以把它當作一個普通的表來使用,並且使用  FREETEXT  的查詢對每一行返回一個相關性排名值 (RANK) 和全文鍵 (KEY)。
  1. SELECT  * ,  
  2.         BusinessID ,  
  3.         Address  
  4. FROM    Business AS FT_TBL  
  5.         INNER JOIN FREETEXTTABLE(Business, Address, 'ISABOUT (帶嬰兒旅游 WEIGHT (.8),赤水 WEIGHT (.4) )')  
  6.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  
  7. 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表哪些字段配置了全文索引

 


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

drop fulltext index on test -- 撤銷test上的全文檢索 drop fulltext catalog FT_testData -- 撤銷全文目錄FT_testData
  詳細介紹請查看全文https://cnblogs.com/qianzf/
  原文博客的鏈接地址:https://cnblogs.com/qzf/
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM