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

sql2000全文搜索

編輯:關於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 全文索引為在字符串數據中進行復雜的詞搜索提供有效支持。全文索引存儲關於重要詞和這些詞在特定列中的位置的信息。全文查詢利用這些信息,可快速搜索包含具體某個詞或一組詞的行。
  
  全文索引包含在全文目錄中。每個數據庫可以包含一個或多個全文目錄。一個目錄不能屬於多個數據庫,而每個目錄可以包含一個或多個表的全文索引。

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