多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 权威指南 1. [使用重建](#) 1. [中止重建](#) # 平滑重建索引 前一章讲到有些情况不得不需要重建索引,可以用 [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 [杭州云圣网络科技有限公司](http://www.xunsearch.com) All Rights Reserved. ![](https://box.kancloud.cn/2015-09-10_55f11d039d2c9.gif) ![](https://box.kancloud.cn/2015-09-10_55f11d03afae3.gif) ![](https://box.kancloud.cn/2015-09-10_55f11d03b7692.gif)