標籤: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全文索引