- 新手上路
- 了解基础对象
- 编写项目配置文件
- 管理索引
- 使用搜索
- 使用辅助工具
- 专题
平滑重建索引
前一章讲到有些情况不得不需要重建索引,可以用 XSIndex::clean 立即全部清空所有数据, 然后再把现有数据全部添加到索引数据库中。
但这种方式的缺点对于线上项目是难以容忍的,因此可以选择使用平滑重建方式。它的内部实现 相当于在一个临时区域开辟新库,把所有的添加操作全部更新到新库,直到您完成重建,完成后 再用新库替代旧库用于搜索。
1. 使用重建在编代码时,把所有的 XSIndex:add 操作都放进 XSIndex::beginRebuild 和 XSIndex::endRebuild 之间即可。写法参考如下:
// 宣布开始重建索引 $index->beginRebuild(); // 然后在此开始添加数据 ... $index->add($doc); ... // 告诉服务器重建完比 $index->endRebuild();
2. 中止重建Note: 为确保重建的顺利完成,请在重建时不要对同一个项目开启多个进程、 连接同时交替重建以免发生错乱。
虽然我们一再强调,但仍然会在某些意外情况下,导致重建工作意外终止。这时索引库进入一个崩溃状态,
出现 DB has been rebuilding
的错误。
这时您可以再次调用 XSIndex::beginRebuild 开始重建索引,但这会丢失之前的所有重建成果。 您还可以在重建前先调用 XSIndex::stopRebuild 直接清除这个错误状态。
Note: 中止重建以及重复开启重建的功能自
1.3.4
版起可用。
$Id$
一条评论!
因为数据量大,想通过多进程进行重建来加快速度,但是使用中发现不能这样做,只能在一个会话中处理,求解
请到论坛 登录 后刷新本页面!