SQLServer全文索引

來源:互聯網
上載者:User

標籤:io   os   使用   ar   for   檔案   資料   sp   div   

-------------------------

----全文索引使用小例------

分別使用SQL2000和SQL2005

------------------------

使用場合:複雜化查詢 文本資料存放區在資料列中

--環境

use poofly

go

CREATE TABLE HELLO(ID INT NOT NULL PRIMARY KEY,HELLO NVARCHAR(50))

----SP_HELPINDEX HELLO(主鍵約束即唯一索引名PK__HELLO__3214EC271DE57479)

ps:這裡的唯一約束我們最好建立在4B大小的整數列上 一般自增列是不錯的選擇,這樣可以減少檔案系統的Mircosoft搜尋服務的資源需求。

GO

INSERT HELLO SELECT 1,‘TEST‘

 

 

1、要啟用全文索引功能首先需要安裝full text search全文索引服務

 

2、啟動full text search服務

 

3、檢查資料庫全文索引是否開啟,沒有開啟則使用sp_fulltext_database 開啟該功能

if(select databaseproperty(‘poofly‘,‘isfulltextenabled‘)) =0

execute sp_fulltext_database ‘enable‘

 

--以下是的建立全文索引小例子

4、建立全文檢索目錄

EXEC SP_FULLTEXT_CATALOG ‘POOFLY‘,‘CREATE‘

 

5、註冊HELLO表,建立全文索引資料元

EXEC sp_fulltext_table ‘HELLO‘,‘create‘,‘POOFLY‘,‘PK__HELLO__3214EC271DE57479‘

 

6、指定支援全文索引的列名

EXEC sp_fulltext_column ‘HELLO‘,‘HELLO‘,‘add‘

 

7、為表建立(啟用)全文索引

--activate,是啟用表的全文檢索索引能力,也就是在全文檢索目錄中註冊該表

EXEC sp_fulltext_table ‘HELLO‘,‘activate‘

 

8、啟動對全文檢索目錄的完全填充

--後期是使用變更追蹤或者增量填充維護索引

--EXEC sp_fulltext_catalog ‘POOFLY‘,‘strat_incremental‘ 

EXEC sp_fulltext_catalog ‘POOFLY‘,‘start_full‘

 

9、驗證全文檢索目錄填充的進度

select  fulltextcatalogproperty(‘POOFLY‘,‘populateStatus‘) 

--為表示已經完成填充

 

10、通過CONTAINS謂詞進行全文索引

select HELLO

from HELLO

where CONTAINS(*,‘TEST‘)

/*

HELLO

---------------

TEST*/

 

11、刪除全文索引中繼資料

EXEC sp_fulltext_table ‘HELLO‘,‘drop‘

 

12、刪除全文檢索目錄

EXEC sp_fulltext_catalog ‘POOFLY‘,‘DROP‘

 

--------------華麗分割線-----------------------

--以下是的建立全文索引的方法

/*建立全文檢索目錄*/

create FULLTEXT CATALOG POOFLY AS DEFAULT

/*C建立全文索引*/

create FULLTEXT INDEX ON HELLO(HELLO) key index PK__HELLO__3214EC271DE57479 ON  POOFLY

/*通過CONTAINS謂詞進行全文索引*/

select HELLO

from HELLO

where CONTAINS(*,‘TEST‘)

/*刪除全文索引*/

DROP FULLTEXT INDEX on HELLO

/*刪除全文檢索目錄FT(含有全文索引時候不能刪除)*/

drop fulltext catalog POOFLY

 

 

 

 

-----使用contains關鍵字進行全文索引----------------

--1.首碼搜尋

select name from tb where contains(name,‘"china*"‘)

ps:注意這裡的* 返回結果可能會是 chinax chinay chinaname china 

/*返回首碼是china的name--如果不用“”隔開那麼系統會都城contains(name,‘china*‘) 與china* 匹配*/

 

--2.使用派生詞搜尋

Select name from tb where contains(name,‘formsof(inflectional,"foot")‘)

/* 出來結果可能是foot feet (所有動詞不同形態名詞單複數形式)*/

 

--3.詞加權搜尋

select value from tb where contains(value , ‘ISABOUT(performance weight(.8))‘)

/*全值用-1的一個數字表示表示每個詞的重要程度*/

 

--4.臨近詞搜素

select * from tb where contains(document,‘a near b‘)

/* 出來的結果是“a”單詞與“b”單詞臨近的document可以寫成contains(document,‘a ~ b‘)*/--

 

--5.布爾邏輯搜素

select * from tb where contains(name,‘"a" and "b"‘)

/*返回既包含A 又包含B單詞的行當然這裡的AND 關鍵字還有換成OR ,AND NOT 等*/

----------------------------------------------------

 

你還可以使用RREETEXT 進行模糊搜尋

--任意輸入文本全文索引自動識別重要單詞然後構造一個查詢

select * from tb where freetext(wendang,‘zhubajie chi xi gua !‘)

--============================================================

--對全文索引效能影響因素很多包括硬體資源方面還有SQL 自身效能和MSFTESQL服務的效率等方面

--它的搜尋效能有方面: 全文索引效能和全文檢索查詢效能

 

 

------------------------------------------------------------------------------------------------

 

普通 SQL 索引 全文索引
儲存時受定義它們所在的資料庫的控制。 儲存在檔案系統中,但通過資料庫管理。
每個表允許有若干個普通索引。 每個表只允許有一個全文索引。
當對作為其基礎的資料進行插入、更新或刪除時,它們自動更新。 將資料添加到全文索引稱為填充,全文索引可通過調度或特定請求來請求,也可以在添加新資料時自動發生。
不分組。 在同一個資料庫內分組為一個或多個全文檢索目錄。
使用 SQL Server 企業管理器、嚮導或 Transact-SQL 陳述式建立和除去。 使用 SQL Server 企業管理器、嚮導或預存程序建立、管理

 

SQLServer全文索引

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.