SQL Server全文檢索索引簡介

來源:互聯網
上載者:User
server|全文檢索索引 全文索引和全文檢索索引是sql server 7.0的新增功能,它能夠對資料中的字元類型列(如varchar、text等類型列)進行索
引,並通過索引實現全文檢索搜尋查詢。sql server常規索引與全文檢索索引相比,二者的區別如下:

常規索引                                  全文索引
使用create index或約束定義建立            使用全文索引預存程序建立和刪除
通過刪除或執行drop index語句刪除

當插入、修改或刪除資料時,sql server      只能通過任務調度或執行儲存過
能夠自動更新常規索引內容                  程來填充全文索引

每個表可以建立多個常規索引                每個表只能有一個全文索引
索引不能分組                              同一個資料庫中的多個全文索引可
                                          以組織為一個全文檢索目錄
常規索引儲存在資料庫檔案中                全文索引儲存在檔案系統中

為了支援全文索引操作,sql server 7.0新增了一些新預存程序和transact-sql語句,使用這些預存程序建立全文索引的
具本步驟為(括弧內為每步所調用的預存程序名稱):

(1)啟動資料庫的全文處理功能(sp_fulltext_datebase);
(2)建立全文檢索目錄(sp_fulltext_catalog);
(3)在全文檢索目錄中註冊需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文檢索索引的列名(sp_fulltext_column)
(5)為表建立全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。

例:
use pubs
go
exec sp_fulltext_database 'enable'
--為titles表建立全文索引資料元,其中create為建立,activate為啟用,deactivate為關閉表全文索引的啟用狀態,使
它不再參加全文檢索目錄填充,drop為刪除;create參數中,後面跟的是全文檢索目錄名稱和索引列名。
--下面語句為pubs資料庫中的titles表建立全文索引資料元,儲存該資料元的全文檢索目錄為FT_pubs,所使用的唯一索引為
UPKCL_titleidind(title表中為title_id列的PRIMARY KEY約束所建立的唯中索引)
sp_fulltext_table titles,'create','FT_pubs','upkcl_titledind'

--啟用它
sp_fulltext_table titles,'activate'

--指定參加全文索引的列
sp_fulltext_column 'titles','title','add'
sp_fulltext_column 'titles','notes','add'

下面是一個完整的例子:
--在執行該指令碼程式之前啟動sql server的全文檢索搜尋服務,即microsoft search服務
use pubs  --開啟資料庫
go
--檢查pubs是否支援全文索引,如果不支援全文索引,則使用sp_fulltext_datebase開啟該功能
if (select databaseproperty ('pubs','IsFulltextEnables'))=0
   execute sp_fulltext_database 'enable'
--建立全文檢索目錄FT_pubs
execute sp_fulltext_catalog 'FT_pubs','create'
--為titles表建立全文索引資料元
execute sp_fulltext_table 'titles','FT_pubs','UPKCL_titleidind'
--設定全文索引列名
execute sp_fulltext_column 'titles','title','add'
execute sp_fulltext_column 'titles','notes','add'
--建立全文索引
execute sp_fulltext_table 'FT_pubs','activate'
--填充全文索引目錄
execute sp_fulltext_catalog 'FT_pubs','start_full'
  GO
  --檢查全文檢索目錄填充情況
   WHILE FulltextCatalogProperty("FT_pubs','PopulateStatus')<>0
    BEGIN
     --如果全文檢索目錄正處於填充狀態,則等待30秒後再檢測一次
     WAITFOR DELAY ‘0:0:30’
    END
--全文檢索目錄填充完成後,使用全文檢索目錄檢索

--查詢title列或notes列中包含有database或computer字串的圖書名稱
SELECT title
  FROM title
  where CONTAINTS(title,'database')
   or contains(notes,'database')
   or contains(title,'computer')
   or contains(notes,'computer')




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.