熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server全文檢索簡介

2013-11-15 14:34:19  來源: SQL Server 

  
  
  
   全文索引和全文檢索是sql server 的新增功能它能夠對數據中的字符類型列(如varchartext等類型列)進行索
   引並通過索引實現全文搜索查詢sql server常規索引與全文檢索相比二者的區別如下
  
   常規索引 全文索引
   使用create index或約束定義創建 使用全文索引存儲過程創建和刪除
   通過刪除或執行drop index語句刪除
  
   當插入修改或刪除數據時sql server 只能通過任務調度或執行存儲過
   能夠自動更新常規索引內容 程來填充全文索引
  
   每個表可以建立多個常規索引 每個表只能有一個全文索引
   索引不能分組 同一個數據庫中的多個全文索引可
   以組織為一個全文目錄
   常規索引存儲在數據庫文件中 全文索引存儲在文件系統中
  
   為了支持全文索引操作sql server 新增了一些新存儲過程和transactsql語句使用這些存儲過程創建全文索引的
   具本步驟為(括號內為每步所調用的存儲過程名稱)
  
   ()啟動數據庫的全文處理功能(sp_fulltext_datebase)
   ()建立全文目錄(sp_fulltext_catalog)
   ()在全文目錄中注冊需要全文索引的表(sp_fulltext_table)
   ()指出表中需要全文檢索的列名(sp_fulltext_column)
   ()為表創建全文索引(sp_fulltext_table)
   ()填充全文索引(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 titlescreateFT_pubsupkcl_titledind
  
   激活它
   sp_fulltext_table titlesactivate
  
   指定參加全文索引的列
   sp_fulltext_column titlestitleadd
   sp_fulltext_column titlesnotesadd
  
   下面是一個完整的例子
   在執行該腳本程序之前啟動sql server的全文搜索服務即microsoft search服務
   use pubs 打開數據庫
   go
   檢查pubs是否支持全文索引如果不支持全文索引則使用sp_fulltext_datebase打開該功能
   if (select databaseproperty (pubsIsFulltextEnables))=
   execute sp_fulltext_database enable
   建立全文目錄FT_pubs
   execute sp_fulltext_catalog FT_pubscreate
   為titles表建立全文索引數據元
   execute sp_fulltext_table titlesFT_pubsUPKCL_titleidind
   設置全文索引列名
   execute sp_fulltext_column titlestitleadd
   execute sp_fulltext_column titlesnotesadd
   建立全文索引
   execute sp_fulltext_table FT_pubsactivate
   填充全文索引目錄
   execute sp_fulltext_catalog FT_pubsstart_full
   GO
   檢查全文目錄填充情況
   WHILE FulltextCatalogProperty(FT_pubsPopulateStatus)<>
   BEGIN
   如果全文目錄正處於填充狀態則等待秒後再檢測一次
   WAITFOR DELAY
   END
   全文目錄填充完成後使用全文目錄檢索
  
   查詢title列或notes列中包含有database或computer字符串的圖書名稱
   SELECT title
   FROM title
   where CONTAINTS(titledatabase)
   or contains(notesdatabase)
   or contains(titlecomputer)
   or contains(notescomputer)
  

From:http://tw.wingwit.com/Article/program/SQLServer/201311/22004.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.