首先,一些不熟悉 全文 檢索 背景的人。一般來說,計算機科學術語 全文 檢索 只是意味著你在文檔中搜索所有的文本。對付 全文 檢索 的另一種選擇是查找元數據,例如標題和關鍵字。 對SQL Server而言, 全文 檢索 提供了存儲在關系數據庫或者是文件系統(tǒng)上的文
首先,一些不熟悉全文檢索背景的人。一般來說,計算機科學術語全文檢索只是意味著你在文檔中搜索所有的文本。對付全文檢索的另一種選擇是查找元數據,例如標題和關鍵字。
對SQL Server而言,全文檢索提供了存儲在關系數據庫或者是文件系統(tǒng)上的文本的高級搜索能力。搜索并不局限于字符串,應用程序所能理解的例如詞干分析。這使得搜索“swim”,也返回“swims”, “swimming”,和“swam”。 它也可以支持權重搜索,即某些詞比其他的詞更重要,并可以搜索兩個彼此相鄰的詞語。根據搜索條件的結果可以進行一個排名。
之前版本的全文檢索是一個外部服務,和SQL Server并排運行的服務。這樣設計,參與索引的表和列的數據不得不從SQL Server運送到全文檢索服務。全文檢索編目不能與其他的數據庫一起備份,而且兩個服務不能輕松的共享內存和CPU資源。
為了處理這些和其他的問題,SQL Server 2008把全文檢索移到數據庫中。現(xiàn)在SQL Server自身可以動態(tài)管理服務器資源,為服務自動管理改變內存和CPU資源配額。不幸的是,開發(fā)人員遇到了這種設計的一些意外結果。
他們依然會碰到的特定問題是事務。在一個事務性的數據庫中,SQL Server要時刻遵守ACID的規(guī)則。這意味著在搜索的時候行、頁或甚至整個表都被鎖定。通常情況下不會太壞,但是Brent Ozar解釋說,錯誤的搜索會讓事情變得復雜。
如果你在修正版(Revisions)上進行全文檢索并且包含一些常見的關鍵字,像SQL滯留,則需要匹配數以萬計的記錄。當我們查看一下查詢計劃的時候,我們看到有50-100k的讀操作。在表里面做這樣的事情,也會獲得沉重的表插入,事務性的災難。
Jeff Attwodd繼續(xù)說道,
我們的stackoverflow.com很大程度上依賴于全文檢索, 在SQL Server 2005下面工作得很好。不幸的是在SQL Server 2008下的情況則不同。
Brent正在和SQL Server團隊跟進這件事,他們用我們的數據庫拷貝進行測試。[…] 根據目前為止出奇的差的SQL Server 2008全文檢索和明顯的體系結構更改,我對SQL團隊能夠為我們做些什么感到悲觀。
他們所指的網站StackOverflow將計劃不再長期使用全文索引。他們已經規(guī)劃出遷移到競爭的搜索引擎Lucene.Net上。但是那些計劃繼續(xù)使用全文檢索的人,在 SQL Server 2005升級到2008以后需要在這方面進行徹底的測試。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com