国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

如何使用SQL Server 2000全文檢索

2024-08-31 00:47:58
字體:
來源:轉載
供稿:網友


sql server 2000全文檢索

一、如何在sql中啟用全文檢索功能
1、證全文檢索服務是否安裝
通過儲存過程fulltextserviceproperty(返回有關全文服務級別屬性的信息)來驗證搜索服務(全文組件)是否安裝。如select fulltextserviceproperty (‘isfulltextinstalled’):返回1表示已安裝全文組件;返回0表示未安裝全文組件;返回null表示輸入無效或發生錯誤。
2、啟動全文檢索服務(mircosoft search)
3、打開數據庫全文索引的支持
為全文索引啟用數據庫:
use northwind
exec sp_fulltext_database  ‘enable’
從數據庫中刪除所有目錄:
use northwind
exec sp_fulltext_database ‘disable’
二、建立全文目錄
1、創建全文目錄
use northwind
exec sp_fulltext_catalog 'ft_ catalog ', 'create'
2、重建全文目錄
use northwind
exec sp_fulltext_catalog 'ft_ catalog ', ' rebulid'
3、啟動全文目錄的填充
use northwind
exec sp_fulltext_catalog 'ft_ catalog ', 'start_full'
4、停止全文目錄的填充
use northwind
exec sp_fulltext_catalog 'ft_ catalog ', 'stop'
5、刪除全文目錄
use northwind
  pk_products
exec sp_fulltext_catalog 'ft_ catalog ', 'drop'
三、為表建立全文索引數據元
1、建立的唯一索引
use northwind
exec sp_fulltext_table 'products','create', 'ft_ catalog', ' pk_products '
2、設置全文索引列名
use northwind
exec sp_fulltext_table 'products','create', 'ft_ catalog', ' pk_products '
3、設置全文索引列名
use northwind
exec sp_fulltext_column ' products ', productname', 'add'
go
exec sp_fulltext_column ' products ', quantityperunit', 'add'
go
4、激活全文索引
use northwind
exec sp_fulltext_table 'products','activate
5、填充全文索引目錄
use northwind
exec sp_fulltext_catalog 'ft_ catalog ', 'start_full'
四、使用transact-sql進行全文檢索,我們使用contains、freetext等謂詞
1、檢索productname中,即包含b又包含c的所有列
use northwind
select *
from products
where contains(productname, '"c*" and "b*" ')
2、檢索productname中,即包含chai chang tofu之一的所有列
use northwind
select *
from products
where freetext(productname, 'chai chang tofu ')
五、全文查詢有關的系統存儲過程
(1)啟動數據庫的全文處理功能(sp_fulltext_datebase);
(2)建立全文目錄(sp_fulltext_catalog);
(3)在全文目錄中注冊需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文檢索的列名(sp_fulltext_column)
(5)為表創建全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。

全文查詢支持
microsoft® sql server™ 2000 在接收帶全文構造的 transact-sql 語句時,使用全文提供程序從 microsoft 搜索服務檢索所需信息。全文構造是 contains 或 freetext 謂詞,或者是 containstable 或 freetexttable 行集函數。如果不知道包含搜索條件的列,全文構造可以在全文索引中引用多列。該進程的流程如下圖所示。

這一進程涉及的步驟包括:
應用程序給 sql server 實例發送帶全文構造的 transact-sql 語句。
sql server 關系引擎通過查詢系統表驗證全文構造,確定全文索引是否覆蓋列引用。關系引擎將每個 sql 語句簡化為一系列行集操作,并使用 ole db 將這些操作傳遞給基礎組件,通常是存儲引擎。關系引擎通過全文提供程序而不是存儲引擎,將任何全文構造轉換成對行集的請求。請求的行集是滿足搜索條件和等級的鍵集,而這個等級表示每個鍵的數據滿足搜索條件的程度。向全文提供程序發送的行集請求命令包括全文檢索條件。
全文提供程序驗證請求并將搜索條件更改為由microsoft 搜索服務的查詢支持組件使用的形式。將請求發送到搜索服務。
查詢支持組件使用搜索引擎組件從全文索引析取所請求的數據。然后以行集的形式將這些數據傳遞回全文提供程序。
全文提供程序將這個行集返回給關系引擎。
關系引擎將它從存儲引擎和全文提供程序收到的所有行集進行組合,以生成發送回客戶端的最終結果集。
 
全文目錄和索引
microsoft® sql server™ 2000 全文索引為在字符串數據中進行復雜的詞搜索提供有效支持。全文索引存儲關于重要詞和這些詞在特定列中的位置的信息。全文查詢利用這些信息,可快速搜索包含具體某個詞或一組詞的行。
全文索引包含在全文目錄中。每個數據庫可以包含一個或多個全文目錄。一個目錄不能屬于多個數據庫,而每個目錄可以包含一個或多個表的全文索引。一個表只能有一個全文索引,因此每個有全文索引的表只屬于一個全文目錄。
全文目錄和索引不存儲在它們所屬的數據庫中。目錄和索引由 microsoft 搜索服務分開管理。
全文索引必須在基表上定義,而不能在視圖、系統表或臨時表上定義。 全文索引的定義包括:
能唯一標識表中各行的列(主鍵或候選鍵),而且不允許 null 值。
索引所覆蓋的一個或多個字符串列。
全文索引由鍵值填充。每個鍵的項提供與該鍵相關聯的重要詞(干擾詞或終止詞除外)、它們所在的列和它們在列中的位置等有關信息。
格式化文本字符串(如 microsoft® word™ 文檔文件或 html 文件)不能存儲在字符串或 unicode 列中,因為這些文件中的許多字節包含不構成有效字符的數據結構。數據庫應用程序可能仍需要訪問這些數據并對其應用全文檢索。因為 image 列并不要求每一字節都構成一個有效字符,所以許多站點將這類數據存儲在 image 列中。sql server 2000 引入了對存儲在 image 列中的這些類型的數據執行全文檢索的能力。sql server 2000 提供篩選,可從 microsoft office™ 文件(.doc、.xls 和 .ppt 文件)、文本文件(.txt 文件)及 html 文件(.htm 文件)中析取文本化數據。設計表時除包括保存數據的 image 列外,還需包括綁定列來保存存儲在 image 列中的數據格式的文件擴展名。可以創建引用 image 列和綁定列的全文索引,以便在存儲于 image 列中的文本化信息上啟用全文檢索。sql server 2000 全文檢索引擎使用綁定列中的文件擴展名信息,選擇從列中析取文本化數據的合適的篩選。
全文索引是用于執行兩個 transact-sql 謂詞的組件,以便根據全文檢索條件對行進行測試:
contains
freetext
transact-sql 還包含兩個返回符合全文檢索條件的行集的函數:
containstable
freetexttable
sql server 在內部將搜索條件發送給 microsoft 搜索服務。microsoft 搜索服務查找所有符合全文檢索條件的鍵并將它們返回給 sql server。sql server 隨后使用鍵的列表來確定表中要處理的行。
全文索引
對 microsoft® sql server™ 2000 數據的全文支持涉及兩個功能:對字符數據發出查詢的能力和創建及維護基礎索引以簡化這些查詢的能力。
全文索引在許多地方與普通的 sql 索引不同。

普通 sql 索引

全文索引

存儲時受定義它們所在的數據庫的控制。

存儲在文件系統中,但通過數據庫管理。

每個表允許有若干個普通索引。

每個表只允許有一個全文索引。

當對作為其基礎的數據進行插入、更新或刪除時,它們自動更新。

將數據添加到全文索引稱為填充,全文索引可通過調度或特定請求來請求,也可以在添加新數據時自動發生。

不分組。

在同一個數據庫內分組為一個或多個全文目錄。

使用 sql server 企業管理器、向導或 transact-sql 語句創建和除去。

使用 sql server 企業管理器、向導或存儲過程創建、管理和除去。

這些差異使大量管理任務變得不可缺少。全文管理是在幾個層次上實施的:
服務器
可以對服務器范圍的某些屬性(如 resource_usage)加以設置,以便增加或減少全文服務所使用的系統資源數量。
 
說明  全文引擎作為名為 microsoft 搜索的服務在 microsoft windows nt® server 和 microsoft windows® 2000 server 上運行。對于 microsoft sql server 個人版,microsoft 搜索服務不可用。盡管這意味著 microsoft 搜索服務既未安裝在 microsoft windows 95/98 上,也未安裝在 windows nt 工作站或 windows 2000 professional 客戶端上,但這些客戶端在連接到 sql server 標準版安裝或企業版實例時可以使用這項服務。
數據庫
必須啟用數據庫才能使用全文服務。可以在已啟用的數據庫中創建和除去一個或多個全文目錄的元數據。
全文目錄
全文目錄包含數據庫中的全文索引。每個目錄可以用于數據庫內的一個或多個表的索引需求。該目錄中的索引是使用這里介紹的管理功能來填充的。(全文目錄必須駐留在與 sql server 實例相關聯的本地硬盤驅動器上。不支持可移動的驅動器、軟盤和網絡驅動器)。在每個服務器上最多可創建 256 個全文目錄。
 
說明  windows nt 故障轉移群集環境完全支持全文索引。有關更多信息,請參見在故障轉移群集中運行全文查詢。

首先,必須為全文支持啟用表。然后,為與該表相關聯的全文索引創建元數據(如表名及其全文目錄)。表啟用后,可以用為全文支持而啟用的列中的數據填充它。如果表的全文定義被更改(例如,添加一個也將為全文檢索而索引的新列),則必須重新填充相關的全文目錄以使全文索引與新的全文定義同步。

可以從非活動的注冊表中添加或除去支持全文查詢的列。
在所有這些級別上,可使用工具檢索元數據和狀態信息。
和常規 sql 索引一樣,當在相關表中修改數據時,可自動更新全文索引。或者,也可以適當的間隔手工重新填充全文索引。這種重寫可能既耗時又大量占用資源,因此,在數據庫活動較少時,這通常是在后臺運行的異步進程。
應將具有相同更新特性的表(如更改少的與更改多的,或在一天的特定時段內頻繁更改的表)組合在一起,并分配給相同的全文目錄。通過以此方法設置全文目錄填充調度,使得全文索引和表保持同步,且在數據庫活動較多時不對數據庫服務器的資源使用產生負面影響。
為全文目錄中的表安排全文索引的位置是非常重要的。在為全文目錄指定表時,應該注意下列基本原則:
始終選擇可用于全文唯一鍵的最小唯一索引。(4 個字節且基于整數的索引是最佳的。)這將顯著減少文件系統中 microsoft 搜索服務所需要的資源。如果主鍵很大(超過 100 字節),可以考慮選擇表中其它唯一索引(或創建另一個唯一索引)作為全文唯一鍵。否則,如果全文唯一鍵的大小達到允許的上限(450 字節),全文填充將無法繼續進行。
如果進行索引的表有成千上萬行,請將該表指定給其自己的全文目錄。
應該考慮對其進行全文索引的表中發生的更改數以及表的行數。如果要更改的總行數,加上上次全文填充期間表中出現的行數達到成千上萬行,請將該表指定給其自己的全文目錄。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳信县| 无极县| 永川市| 拉孜县| 读书| 昆明市| 平武县| 通河县| 江油市| 伊宁县| 桐乡市| 汉沽区| 汶川县| 蕉岭县| 高安市| 石景山区| 东宁县| 延边| 平利县| 确山县| 襄汾县| 英超| 准格尔旗| 田阳县| 南丹县| 崇州市| 临沧市| 安康市| 德阳市| 彩票| 河池市| 什邡市| 达拉特旗| 塔城市| 信宜市| 二连浩特市| 巍山| 龙泉市| 长岭县| 高邮市| 汝城县|