index.rebuild.html 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
  5. <meta name="language" content="zh-cn" />
  6. <link rel="stylesheet" type="text/css" href="../api/css/style.css" />
  7. <link rel="stylesheet" type="text/css" href="../api/css/guide.css" />
  8. <link rel="stylesheet" type="text/css" href="../api/css/highlight.css" />
  9. <title>平滑重建索引</title>
  10. </head>
  11. <body>
  12. <div id="apiPage">
  13. <div id="apiHeader">
  14. <a href="http://www.xunsearch.com" target="_blank">Xunsearch PHP-SDK</a> v1.3.2 权威指南
  15. </div><!-- end of header -->
  16. <div id="content" class="markdown">
  17. <h1 id="-">平滑重建索引</h1>
  18. <p>前一章讲到有些情况不得不需要重建索引,可以用 <a href="../api/XSIndex.html#clean">XSIndex::clean</a> 立即全部清空所有数据,
  19. 然后再把现有数据全部添加到索引数据库中。</p>
  20. <p>但这种方式的缺点对于线上项目是难以容忍的,因此可以选择使用平滑重建方式。它的内部实现
  21. 相当于在一个临时区域开辟新库,把所有的添加操作全部更新到新库,直到您完成重建,完成后
  22. 再用新库替代旧库用于搜索。</p>
  23. <p>在编代码时,把所有的 <a href="../api/XSIndex:add.html">XSIndex:add</a> 操作都放进 <a href="../api/XSIndex.html#beginRebuild">XSIndex::beginRebuild</a> 和
  24. <a href="../api/XSIndex.html#endRebuild">XSIndex::endRebuild</a> 之间即可。写法参考如下:</p>
  25. <div class="hl-code"><div class="php-hl-main"><pre><span class="php-hl-comment">//</span><span class="php-hl-comment"> 宣布开始重建索引</span>
  26. <span class="php-hl-var">$index</span><span class="php-hl-code">-&gt;</span><span class="php-hl-identifier">beginRebuild</span><span class="php-hl-brackets">(</span><span class="php-hl-brackets">)</span><span class="php-hl-code">;
  27. </span><span class="php-hl-comment">//</span><span class="php-hl-comment"> 然后在此开始添加数据</span><span class="php-hl-code">
  28. ...
  29. </span><span class="php-hl-var">$index</span><span class="php-hl-code">-&gt;</span><span class="php-hl-identifier">add</span><span class="php-hl-brackets">(</span><span class="php-hl-var">$doc</span><span class="php-hl-brackets">)</span><span class="php-hl-code">;
  30. ...
  31. </span><span class="php-hl-comment">//</span><span class="php-hl-comment"> 告诉服务器重建完比</span>
  32. <span class="php-hl-var">$index</span><span class="php-hl-code">-&gt;</span><span class="php-hl-identifier">endRebuild</span><span class="php-hl-brackets">(</span><span class="php-hl-brackets">)</span><span class="php-hl-code">;</span></pre></div></div>
  33. <blockquote class="note">
  34. <p><strong>Note:</strong> 为确保重建的顺利完成,请在重建时不要对同一个项目开启多个进程、
  35. 连接同时交替重建以免发生错乱。</p>
  36. </blockquote>
  37. <div class="revision">$Id$</div>
  38. <div class="clear"></div>
  39. </div><!-- end of content -->
  40. <div id="guideNav">
  41. <div class="prev"><a href="index.clean.html">&laquo; 清空索引</a></div>
  42. <div class="next"><a href="index.buffer.html">使用索引缓冲区 &raquo;</a></div>
  43. <div class="clear"></div>
  44. </div><!-- end of nav -->
  45. <div id="apiFooter">
  46. Copyright &copy; 2008-2011 by <a href="http://www.xunsearch.com" target="_blank">杭州云圣网络科技有限公司</a><br/>
  47. All Rights Reserved.<br/>
  48. </div><!-- end of footer -->
  49. </div><!-- end of page -->
  50. <div style="display:none;">
  51. <img src="../api/css/info.gif" />
  52. <img src="../api/css/tip.gif" />
  53. <img src="../api/css/note.gif" />
  54. </div>
  55. </body>
  56. </html>