WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
Sphinx/索引合并
合并兩個(gè)已有的索引比重新對(duì)所有數(shù)據(jù)做索引更有效率,而且有時(shí)候必須這樣做(例如在“主索引+增量索引”分區(qū)模式中應(yīng)合并主索引和增量索引,而不是簡(jiǎn)單地重新索引“主索引對(duì)應(yīng)的數(shù)據(jù))。因此indexer有這個(gè)選項(xiàng)。合并索引一般比重新索引快,但在大型索引上仍然不是一蹴而就?;旧?,待合并的兩個(gè)索引都會(huì)被讀入內(nèi)存一次,而合并后的內(nèi)容需要寫入磁盤一次。例如,合并100GB和1GB的兩個(gè)索引將導(dǎo)致202GB的IO操作(但很可能還是比重新索引少)
基本的命令語(yǔ)法如下:
indexer --merge DSTINDEX SRCINDEX [--rotate]
SRCINDEX的內(nèi)容被合并到DSTINDEX中,因此只有DSTINDEX索引會(huì)被改變。若DSTINDEX已經(jīng)被searchd于提供服務(wù),則--rotate參數(shù)是必須的。最初設(shè)計(jì)的使用模式是,將小量的更新從SRCINDEX合并到DSTINDEX中。因此,當(dāng)屬性被合并時(shí),一旦出現(xiàn)了重復(fù)的文檔ID,SRCINDEX中的屬性值更優(yōu)先(會(huì)覆蓋DSTINDEX中的值)。不過(guò)要注意,“舊的”關(guān)鍵字在這個(gè)過(guò)程中并不會(huì)被自動(dòng)刪除。例如,在DSTINDEX中有一個(gè)叫做“old”的關(guān)鍵字與文檔123相關(guān)聯(lián),而在SRCINDEX中則有關(guān)鍵字“new”與同一個(gè)文檔相關(guān),那么在合并后用這兩個(gè)關(guān)鍵字都能找到文檔123。您可以給出一個(gè)顯式條件來(lái)將文檔從DSTINDEX中移除,以便應(yīng)對(duì)這種情況,相關(guān)的開關(guān)是--merge-dst-range:
indexer --merge main delta --merge-dst-range deleted 0 0
這個(gè)開關(guān)允許您在合并過(guò)程中對(duì)目標(biāo)索引實(shí)施過(guò)濾。過(guò)濾器可以有多個(gè),只有滿足全部過(guò)濾條件的文檔才會(huì)在最終合并后的索引中出現(xiàn)。在上述例子中,過(guò)濾器只允許“deleted”為0的那些條件通過(guò),而去除所有標(biāo)記為已刪除(“deleted”)的記錄(可以通過(guò)調(diào)用UpdateAttributes()設(shè)置文檔的屬性)。