Margaret Li(程序經理,數據訪問組)和 Frank Pellow(程序經理,SQL Server 關系引擎)著
摘要
Microsoft SQL Server 7.0 版引入了各種功能,支持對駐留在 SQL Server 本身中的數據以及對文件系統中的數據進行文本查詢。
本白皮書介紹這些功能中的第一個功能,即支持對 SQL Server 表內的數據進行文本查詢。我們從介紹全文檢索的概念開始,講述全文檢索查詢將采取的形式和通過這樣的查詢所能檢索信息的類型。然後向讀者提供有關全文檢索系統的內部設計和體系結構的相當清楚的技術表述,接著介紹如何通過存儲過程和/或 SQL Server Enterprise Manager 所提供的圖形用戶界面來管理本系統。
閱讀本白皮書可以對 SQL Server 7.0 全文支持的功能有一個總的認識,並能很好地把握各種子組件如何交互作用以便提供這種支持。
有關對文件系統中的數據進行文本查詢的支持是另一本書的主題。
引言
當今,以數字形式儲存的信息的很大一部分仍然采取非結構化數據的形式(主要是文本)。雖然大部分文本數據儲存在文件系統中,但一些公司已經開始通過將數據儲存在關系數據庫中,以基於字符的列(如 VARCHAR 和 TEXT)來管理這些數據。這就意味著關系數據庫用戶現在需要一個能從數據庫本身有效檢索文本數據的機制。傳統的 RDBMS(如 Microsoft SQL Server 6.5)不是為進行有效的全文檢索而設計的。例如,雖然 SQL Server 6.5 有一些基於模式匹配來檢索文本的功能,但它不能處理相互接近單詞和短語的搜索。
文本查詢有兩種主要類型:
屬性搜索:對文檔應用篩選以便提取如作者、主題、類型、字數、打印的頁數之類的屬性。
全文檢索:創建文檔的所有非干擾詞的索引,然後使用這些索引來支持語言搜索和近似搜索。
由於不能將文本查詢功能與關系數據庫集成,許多用戶不得不使用第三方產品來滿足這些需要。這些解決方案通常包括通過網橋或網關將數據從數據庫中提出,然後將其作為文件存儲在文件系統中以便能夠應用全文索引。這並不能向用戶提供將全文查詢與常規的結構關系查詢進行無縫結合的方法。
一些關系數據庫產品目前向用戶提供一種功能,允許用戶將關系檢索條件和全文檢索條件無縫集成到相同查詢中。我們將介紹如何來指定這類查詢。假定一組純文本文檔的內容駐留在名為“doc_collection”的表的 DocText 列中,並且表還包含 StorName、Size 和 DocAuthor 列,那麼可以發出下列查詢:
SELECT Q.StorName, Q.Size, Q.DocAuthor, W.Citizenship
FROM doc_collection as Q,
writers as W
WHERE CONTAINS(DocText, ' "SQL Server" NEAR() text')
AND Q.DocAuthor = W.writer_name
以便獲取:
所有文檔的名稱、大小和作者
條件是文檔中包含與“text”接近的短語“SQL Server”
並與“writers”表聯接以獲取作者的國籍。