Xunsearch PHP-SDK v1.4.9 权威指南

# 平滑重建索引

前一章讲到有些情况不得不需要重建索引，可以用 XSIndex::clean 立即全部清空所有数据， 然后再把现有数据全部添加到索引数据库中。

但这种方式的缺点对于线上项目是难以容忍的，因此可以选择使用平滑重建方式。它的内部实现 相当于在一个临时区域开辟新库，把所有的添加操作全部更新到新库，直到您完成重建，完成后 再用新库替代旧库用于搜索。

## 1. 使用重建?

在编代码时，把所有的 XSIndex:add 操作都放进 XSIndex::beginRebuild 和 XSIndex::endRebuild 之间即可。写法参考如下：

    // 宣布开始重建索引
    $index->beginRebuild();

    // 然后在此开始添加数据
    ...
    $index->add($doc);
    ...

    // 告诉服务器重建完比
    $index->endRebuild();

> Note: 为确保重建的顺利完成，请在重建时不要对同一个项目开启多个进程、 连接同时交替重建以免发生错乱。

## 2. 中止重建?

虽然我们一再强调，但仍然会在某些意外情况下，导致重建工作意外终止。这时索引库进入一个崩溃状态， 出现 `DB has been rebuilding` 的错误。

这时您可以再次调用 XSIndex::beginRebuild 开始重建索引，但这会丢失之前的所有重建成果。 您还可以在重建前先调用 XSIndex::stopRebuild 直接清除这个错误状态。

> Note: 中止重建以及重复开启重建的功能自 `1.3.4` 版起可用。

$Id$
« 清空索引
使用索引缓冲区 »
Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.