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

SQL Server 7.0 全文檢索服務完整指南:CONTAINS、FREETEXT、NEAR、權重、前綴、詞幹變化

     編輯:關於SqlServer

SQL Server 7.0 全文檢索功能與 Index Server 相似,提供強大的自然語言查詢能力。本文詳細說明核心謂詞 CONTAINS、FREETEXT 及其進階語法:邏輯運算、鄰近搜尋、詞幹變化、前綴比對、加權排序,並對中文支援現況說明。

核心謂詞:CONTAINS

精確詞彙/片語比對,支援布林邏輯:

-- AND 邏輯
SELECT username FROM member WHERE CONTAINS(userinfo, '"作家" AND "木匠"')

-- OR 邏輯
SELECT username FROM member WHERE CONTAINS(userinfo, '"作家" OR "木匠"')

-- NOT 邏輯
SELECT username FROM member WHERE CONTAINS(userinfo, '"作家" AND NOT "木匠"')

鄰近搜尋:NEAR

找出兩詞距離較近的文件:

SELECT Content FROM MicrosoftRecord
WHERE CONTAINS(Content, '"比爾·蓋茨" NEAR "保羅·艾倫"')

表示文件同時包含兩詞且距離不遠 (預設約 50 個詞內)。

詞幹變化:FORMSOF INFLECTIONAL

自動比對動詞時態、名詞單複數等變化 (主要適用英文):

SELECT ProductName FROM Products
WHERE CONTAINS(ProductName, 'FORMSOF (INFLECTIONAL, dry)')

可比中 dry、dried、dries、drying 等。中文無詞幹變化,此功能對中文無效。

前綴比對:*

比對詞首開頭相同的詞 (適用英文字母語言):

SELECT ProductName FROM Products
WHERE CONTAINS(ProductName, '"dis*"')

可比中 display、distance、disk 等。中文無前綴概念,此功能對中文無效。

加權排序:ISABOUT WEIGHT

為不同搜尋條件指定權重 (0.0~1.0),影響回傳順序:

SELECT CategoryName, Description FROM Categories
WHERE CONTAINS(Description, 'ISABOUT (spread WEIGHT(.8), sauces WEIGHT(.4), relishes WEIGHT(.2))')

資料表值函數:CONTAINSTABLE / FREETEXTTABLE

回傳資料表 (含 KEY、RANK 欄位),可進一步 JOIN 排序:

SELECT ft.TITLE, ft.RANK
FROM FREETEXTTABLE(Products, Description, 'sweet bread') ft
JOIN Products p ON p.ProductID = ft.[KEY]
ORDER BY ft.RANK DESC

自然語言查詢:FREETEXT

自動斷詞、濾除停用詞、套用詞幹變化,進行模糊比對 (類似搜尋引擎):

SELECT CategoryName FROM Categories
WHERE FREETEXT(Description, 'sweetest candy bread and dry meat')

中文支援: SQL Server 7.0 內建斷詞器僅支援英文/歐洲語系,中文全文檢索需安裝第三方中文斷詞器 (如微軟後續版本內建的中文斷詞器) 才能正確運作。

中文全文檢索實務建議

  • SQL Server 2000/2005+ 內建中文斷詞器,支援簡體/繁體中文。
  • 建立全文索引時指定 LANGUAGE 'CHINESE' 或 LANGUAGE 'TRADITIONAL CHINESE'。
  • 噪音詞檔 (noise.cht/noise.chs) 可自訂停用詞。
  • 大量中文資料建議使用 CONTAINS 精確比較,FREETEXT 召回率較高但精確度較低。

掌握全文檢索語法與中文支援現況,能為應用系統建立強大的文件搜尋能力。

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