程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 使用SQLSERVER2000的全文檢索功能

使用SQLSERVER2000的全文檢索功能

編輯:關於SqlServer
 步驟:
  1.打開NorthWind數據庫,右鍵Products表,選擇“全文索引表”,“在表上定義全文索引”,為其創建全文目錄。在“全文索引向導”中,選擇你需要全文查詢條件的列(可以是文本或圖像),我們選擇Productname和QuantityPerUnit列。然後下一步,輸入一個新的目錄proCatalog,點擊下一步。在填充調度一項裡,我們暫時不建立填充調度。接著“下一步”,全成全文索引向導。完成後,我們可以看到在“全文目錄”裡,多了一個全文目錄proCatalog。右鍵proCatalog屬性,可以看到其狀態、表、調度情況。
  
  2.右鍵全文目錄proCatalog, “啟動完全填充”,系統會出現“全文目錄填充成功啟動”。
  
  3.這時,我們可以使用Transact-SQL進行全文檢索了,我們使用CONTAINS、FREETEXT等謂詞。如:
  
  檢索ProductName中,即包含b又包含c的所有列
  
  SELECT *
  
  FROM Products
  
  WHERE CONTAINS(ProductName, '"c*" and "b*" ')
  
  檢索ProductName中,即包含chai chang tofu之一的所有列
  
  SELECT *
  
  FROM Products
  
  WHERE FREETEXT(ProductName, 'chai chang tofu ')
  
  我們還可以使用CONTAINSTABLE、FREETEXTTABLE等
  
  4.我們可以用.Net創建WEB或Form客戶端,提供一個良好的全文檢索界面,使自己的應用程序得到擴展
  
  參考:
  全文查詢有關的系統存儲過程
  
  (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 企業管理器、向導或存儲過程創建、管理和除去。
  
  這些差異使大量管理任務變得不可缺少。全文管理是在幾個層次上實施的:
  


您正在看的SQLserver教程是:使用SQLSERVER2000的全文檢索功能。  服務器
  可以對服務器范圍的某些屬性(如 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 索引一樣,當在相關表中修改數據時,可自動更新全文索引。或者,也可以適當的間隔手工重新填充全文索引。這種重寫可能既耗時又大量占用資源,因此,在數據庫活動較少時,這通常是在後台運行的異步進程。
  
  應將具有相同更新特性的表(如更改少的與更改多的,或在一天的特定時段內頻繁更改的表)組合在一起,並分配給相同的全文目錄。通過以此方法設置全文目錄填充調度,使得全文索引和表保持同步,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved