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

SQL Server 7.0 全文檢索與 Web 搜尋實作指南

     編輯:關於SqlServer

SQL Server 7.0 引入全文檢索服務,支援中文斷詞與多種文件格式索引,大幅優於傳統 LIKE 查詢。本文涵蓋架構概念、安裝設定、ASP 整合與進階查詢語法。

搜尋方案對比

方案適用場景優點缺點
LIKE '%關鍵字%'小資料量、精確比對語法簡單、無額外設定全表掃描、不支援 Text/NText 欄位、效能差
Microsoft Index Server靜態文件搜尋支援 Office/HTML/PDF 等格式非關係資料、難與資料庫即時同步
SQL Server Full-Text Search資料庫欄位全文檢索支援 Char/Varchar/Text/NText、中文斷詞、排名相關性需額外安裝、索引維護成本

全文檢索安裝與設定步驟

  1. 安裝元件:SQL Server 7.0 安裝媒體中選擇「Full-Text Search」元件(非預設安裝)
  2. 啟用資料表:
    • 企業管理員 → 右鍵資料表 → Full-Text Index Table → Define Full-Text Indexing on a Table
    • 選擇唯一索引鍵(必須為單欄位、非 NULL、最好為整數)
    • 選擇要索引的文字欄位
    • 建立/選擇 Full-Text Catalog(儲存索引的容器)
  3. 排程索引更新:
    • Full:完整重建索引(適合初始化或結構變更)
    • Incremental:僅索引變更資料(適合定期排程,如每日午夜)
  4. 啟動填入:Catalog 右鍵 → Start Population → Full Population

CONTAINS 與 FREETEXT 查詢語法

CONTAINS - 精確/邏輯搜尋

-- 基本詞彙
SELECT * FROM Customers WHERE CONTAINS(Address, '台北市')

-- AND/OR/NOT 邏輯
SELECT * FROM Products WHERE CONTAINS(Description, '筆記型 AND 電腦 NOT 二手')

-- 近接搜尋
SELECT * FROM Docs WHERE CONTAINS(Content, 'SQL NEAR Server')

-- 前綴匹配
SELECT * FROM Docs WHERE CONTAINS(Title, '資料*')

FREETEXT - 自然語言搜尋

-- 以語意匹配,自動展開同義詞、字幹
SELECT * FROM Customers WHERE FREETEXT(Address, '台北市的客戶地址')

ASP 整合範例

ODBC 連線

<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={SQL Server};Database=Northwind;Server=(Local);UID=sa;PWD=;"
%>

OLE DB 連線(效能較佳)

<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Provider = "sqloledb"
cn.Open "server=(Local);uid=sa;pwd=;database=Northwind"
%>

執行全文檢索查詢

<%
keyword = Request("keyword")
sql = "SELECT CustomerID, CompanyName, Address FROM Customers WHERE CONTAINS(Address, '" & keyword & "')"
Set rs = cn.Execute(sql)

Do While Not rs.EOF
    Response.Write rs("CustomerID") & " - " & rs("CompanyName") & " - " & rs("Address") & "<br>"
    rs.MoveNext
Loop
%>

效能調優關鍵點

  • 全文索引儲存於獨立 Catalog,建議置於與資料檔不同磁碟
  • 大量異動時使用 Incremental 配合 CHANGE_TRACKING AUTO
  • 查詢加入 TOP N 限制回傳筆數,避免大量結果集傳輸
  • 定期執行 DBCC CHECKDB 並監控 sys.fulltext_catalogs 狀態

版本提醒:SQL Server 2005+ 將全文檢索整合至資料庫引擎,語法擴充(如 CONTAINSTABLE、FREETEXTTABLE 回傳排名分數),建議新專案直接採用新版本。

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