W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
前一章講到有些情況不得不需要重建索引,可以用 XSIndex::clean 立即全部清空所有數(shù)據(jù), 然后再把現(xiàn)有數(shù)據(jù)全部添加到索引數(shù)據(jù)庫中。
但這種方式的缺點(diǎn)對于線上項(xiàng)目是難以容忍的,因此可以選擇使用平滑重建方式。它的內(nèi)部實(shí)現(xiàn) 相當(dāng)于在一個臨時區(qū)域開辟新庫,把所有的添加操作全部更新到新庫,直到您完成重建,完成后 再用新庫替代舊庫用于搜索。
在編代碼時,把所有的 XSIndex:add 操作都放進(jìn) XSIndex::beginRebuild 和 XSIndex::endRebuild 之間即可。寫法參考如下:
// 宣布開始重建索引
$index->beginRebuild();
// 然后在此開始添加數(shù)據(jù)...
$index->add($doc);
...
// 告訴服務(wù)器重建完比
$index->endRebuild();
Note: 為確保重建的順利完成,請在重建時不要對同一個項(xiàng)目開啟多個進(jìn)程、 連接同時交替重建以免發(fā)生錯亂。
雖然我們一再強(qiáng)調(diào),但仍然會在某些意外情況下,導(dǎo)致重建工作意外終止。這時索引庫進(jìn)入一個崩潰狀態(tài), 出現(xiàn)DB has been rebuilding
的錯誤。
這時您可以再次調(diào)用 XSIndex::beginRebuild 開始重建索引,但這會丟失之前的所有重建成果。 您還可以在重建前先調(diào)用 XSIndex::stopRebuild 直接清除這個錯誤狀態(tài)。
Note: 中止重建以及重復(fù)開啟重建的功能自
1.3.4
版起可用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: