首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 全文搜尋完整實作:從目錄建立到 CONTAINS/FREETEXT 查詢

     編輯:關於SqlServer

圖形化建立流程 (Enterprise Manager)

  1. 展開 Northwind 資料庫 → 資料表 → 右鍵 Products → 全文索引 → 在資料表上定義全文索引。
  2. 精靈:選擇唯一索引鍵 (PK: ProductID)。
  3. 勾選全文索引欄位:ProductName, QuantityPerUnit。
  4. 建立/選擇全文目錄:proCatalog。
  5. 填充排程:暫不設定,稍後手動啟動。
  6. 完成。在「全文目錄」節點可見 proCatalog。

啟動填充

右鍵 proCatalog → 啟動完整填充 → 系統提示「全文目錄填充成功啟動」。填充完成後方可查詢。

全文查詢語法實戰

查詢類型T-SQL 範例說明
CONTAINS 精確/前綴/邏輯SELECT * FROM Products WHERE CONTAINS(ProductName, '"C*" AND "B*"')雙引號包字詞,* 前綴萬用字元,AND/OR/NOT/NEAR 邏輯
FREETEXT 自由文字SELECT * FROM Products WHERE FREETEXT(ProductName, 'Chai Chang Tofu')自動詞幹擴展、同義詞、語言感知,適合使用者自然語言輸入
CONTAINSTABLE 排名分數SELECT p.*, ft.RANK FROM Products p JOIN CONTAINSTABLE(Products, ProductName, 'Chai') ft ON p.ProductID = ft.[KEY] ORDER BY ft.RANK DESC回傳 KEY + RANK (0-1000),可依相關性排序
FREETEXTTABLE 同理SELECT p.*, ft.RANK FROM Products p JOIN FREETEXTTABLE(Products, ProductName, 'chinese tea') ft ON p.ProductID = ft.[KEY]自由文字查詢的資料表值函數版本

全文搜尋架構運作原理

  1. 應用程式送出含全文述詞的 T-SQL。
  2. 關係引擎驗證全文索引覆蓋欄位,將全文述詞轉換為對全文提供者的 Rowset 請求 (含搜尋條件)。
  3. 全文提供者驗證請求,轉換為 Microsoft Search Service 查詢格式。
  4. Search Service 使用搜尋引擎從全文索引擷取符合條件的鍵值與排名。
  5. 結果以 Rowset 回傳給全文提供者 → 關係引擎 → 與其他 Rowset (如一般欄位篩選) 合併 → 最終結果集回客戶端。

全文目錄與索引特性

  • 全文索引儲存重要詞彙與其在欄位中的位置資訊,支援快速詞彙查找。
  • 一個資料庫可含多個全文目錄;一目錄屬於單一資料庫,可包含多張表的全文索引。
  • 系統預存程序對照 (腳本化部署):sp_fulltext_database、sp_fulltext_catalog、sp_fulltext_table、sp_fulltext_column。

.NET 整合應用

使用 SqlCommand 執行上述 CONTAINS/FREETEXT 查詢,綁定至 GridView/Repeater,快速構建企業級全文搜尋頁面。注意參數化:WHERE CONTAINS(ProductName, @Term),@Term 需包含雙引號與萬用字元 (如 @Term = "\"Chai*\"")。

結語

SQL Server 2000 全文搜尋雖為舊世代功能,但架構清晰、語法強大,至今仍支援至 SQL Server 2019。掌握目錄建立、填充策略與四大查詢述詞,即可為應用加入專業級文字搜尋能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved