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