文檔說明

平滑重建索引

前一章講到有些情況不得不需要重建索引,可以用 XSIndex::clean 立即全部清空所有數據, 然后再把現有數據全部添加到索引數據庫中。

但這種方式的缺點對于線上項目是難以容忍的,因此可以選擇使用平滑重建方式。它的內部實現 相當于在一個臨時區域開辟新庫,把所有的添加操作全部更新到新庫,直到您完成重建,完成后 再用新庫替代舊庫用于搜索。

1. 使用重建

在編代碼時,把所有的 XSIndex:add 操作都放進 XSIndex::beginRebuildXSIndex::endRebuild 之間即可。寫法參考如下:

// 宣布開始重建索引
$index->beginRebuild();
 
// 然后在此開始添加數據
...
$index->add($doc);
...
 
// 告訴服務器重建完比
$index->endRebuild();

Note: 為確保重建的順利完成,請在重建時不要對同一個項目開啟多個進程、 連接同時交替重建以免發生錯亂。

2. 中止重建

雖然我們一再強調,但仍然會在某些意外情況下,導致重建工作意外終止。這時索引庫進入一個崩潰狀態, 出現 DB has been rebuilding 的錯誤。

這時您可以再次調用 XSIndex::beginRebuild 開始重建索引,但這會丟失之前的所有重建成果。 您還可以在重建前先調用 XSIndex::stopRebuild 直接清除這個錯誤狀態。

Note: 中止重建以及重復開啟重建的功能自 1.3.4 版起可用。

$Id$

一條評論!

#49 報告
huye at 2014-12-24 20:26:34
如何在多個會話中平滑重建索引

因為數據量大,想通過多進程進行重建來加快速度,但是使用中發現不能這樣做,只能在一個會話中處理,求解

請到論壇 登錄 后刷新本頁面!

青海快三开奖走势图_