| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
- <meta name="language" content="zh-cn" />
- <link rel="stylesheet" type="text/css" href="css/style.css" />
- <link rel="stylesheet" type="text/css" href="css/api.css" />
- <script type="text/javascript" src="js/jquery.js"></script>
- <title>XSIndex</title>
- </head>
- <body>
- <div id="apiPage">
- <div id="apiHeader">
- <a href="http://www.xunsearch.com" target="_blank">Xunsearch PHP-SDK</a> v1.3.2 API 参考文档
- </div><!-- end of header -->
- <div id="content" class="api-index">
- <h1>XSIndex</h1>
- <div id="nav">
- <a href="index.html">All Packages</a>
- | <a href="#properties">属性</a>
- | <a href="#methods">方法(函数)</a>
- </div>
- <table class="summaryTable docClass">
- <colgroup>
- <col class="col-name" />
- <col class="col-value" />
- </colgroup>
- <tr>
- <th>包</th>
- <td><a href="index.html#XS">XS</a></td>
- </tr>
- <tr>
- <th>继承关系</th>
- <td>class XSIndex »
- <a href="XSServer.html">XSServer</a> »
- <a href="XSComponent.html">XSComponent</a></td>
- </tr>
- <tr>
- <th>版本</th>
- <td>1.0.0</td>
- </tr>
- <tr>
- <th>源代码</th>
- <td><a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php">sdk/php/lib/XSIndex.class.php</a></td>
- </tr>
- </table>
- <div id="classDescription">
- XS 索引管理
- 添加/删除/修改索引数据</div>
- <a name="properties"></a>
- <div class="summary docProperty">
- <h2>Public 属性</h2>
- <p><a href="#" class="toggle">隐去继承来的属性</a></p>
- <table class="summaryTable">
- <colgroup>
- <col class="col-property" />
- <col class="col-type" />
- <col class="col-description" />
- <col class="col-defined" />
- </colgroup>
- <tr>
- <th>名称</th><th>类型</th><th>描述</th><th>定义于</th>
- </tr>
- <tr class="inherited" id="project">
- <td><a href="XSServer.html#project-detail">project</a></td>
- <td>string</td>
- <td>获取当前项目名称</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="respond">
- <td><a href="XSServer.html#respond-detail">respond</a></td>
- <td><a href="XSCommand.html">XSCommand</a></td>
- <td>从服务器读取响应指令</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="socket">
- <td><a href="XSServer.html#socket-detail">socket</a></td>
- <td>mixed</td>
- <td>获取连接资源描述符</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="xs">
- <td><a href="XSServer.html#xs-detail">xs</a></td>
- <td><a href="XS.html">XS</a></td>
- <td>服务端关联的 XS 对象</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- </table>
- </div>
- <a name="methods"></a>
- <div class="summary docMethod">
- <h2>Public 方法</h2>
- <p><a href="#" class="toggle">隐去继承来的方法</a></p>
- <table class="summaryTable">
- <colgroup>
- <col class="col-method" />
- <col class="col-description" />
- <col class="col-defined" />
- </colgroup>
- <tr>
- <th>名称</th><th>描述</th><th>定义于</th>
- </tr>
- <tr class="inherited" id="__construct">
- <td><a href="XSServer.html#__construct-detail">__construct()</a></td>
- <td>构造函数, 打开连接</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr id="__destruct">
- <td><a href="XSIndex.html#__destruct-detail">__destruct()</a></td>
- <td>析构函数</td>
- <td>XSIndex</td>
- </tr>
- <tr class="inherited" id="__get">
- <td><a href="XSComponent.html#__get-detail">__get()</a></td>
- <td>魔术方法 __get</td>
- <td><a href="XSComponent.html">XSComponent</a></td>
- </tr>
- <tr class="inherited" id="__isset">
- <td><a href="XSComponent.html#__isset-detail">__isset()</a></td>
- <td>魔术方法 __isset</td>
- <td><a href="XSComponent.html">XSComponent</a></td>
- </tr>
- <tr class="inherited" id="__set">
- <td><a href="XSComponent.html#__set-detail">__set()</a></td>
- <td>魔术方法 __set</td>
- <td><a href="XSComponent.html">XSComponent</a></td>
- </tr>
- <tr class="inherited" id="__unset">
- <td><a href="XSComponent.html#__unset-detail">__unset()</a></td>
- <td>魔术方法 __unset</td>
- <td><a href="XSComponent.html">XSComponent</a></td>
- </tr>
- <tr id="add">
- <td><a href="XSIndex.html#add-detail">add()</a></td>
- <td>添加文档到索引中</td>
- <td>XSIndex</td>
- </tr>
- <tr id="addExdata">
- <td><a href="XSIndex.html#addExdata-detail">addExdata()</a></td>
- <td>批量提交索引命令封包数据</td>
- <td>XSIndex</td>
- </tr>
- <tr id="addSynonym">
- <td><a href="XSIndex.html#addSynonym-detail">addSynonym()</a></td>
- <td>添加同义词</td>
- <td>XSIndex</td>
- </tr>
- <tr id="beginRebuild">
- <td><a href="XSIndex.html#beginRebuild-detail">beginRebuild()</a></td>
- <td>开始重建索引</td>
- <td>XSIndex</td>
- </tr>
- <tr id="clean">
- <td><a href="XSIndex.html#clean-detail">clean()</a></td>
- <td>完全清空索引数据</td>
- <td>XSIndex</td>
- </tr>
- <tr id="close">
- <td><a href="XSIndex.html#close-detail">close()</a></td>
- <td>关闭索引服务端连接</td>
- <td>XSIndex</td>
- </tr>
- <tr id="closeBuffer">
- <td><a href="XSIndex.html#closeBuffer-detail">closeBuffer()</a></td>
- <td>提交所有指令并关闭缓冲区</td>
- <td>XSIndex</td>
- </tr>
- <tr id="del">
- <td><a href="XSIndex.html#del-detail">del()</a></td>
- <td>删除索引中的数据</td>
- <td>XSIndex</td>
- </tr>
- <tr id="delSynonym">
- <td><a href="XSIndex.html#delSynonym-detail">delSynonym()</a></td>
- <td>删除某个同义词</td>
- <td>XSIndex</td>
- </tr>
- <tr id="endRebuild">
- <td><a href="XSIndex.html#endRebuild-detail">endRebuild()</a></td>
- <td>完成并关闭重建索引</td>
- <td>XSIndex</td>
- </tr>
- <tr class="inherited" id="execCommand">
- <td><a href="XSServer.html#execCommand-detail">execCommand()</a></td>
- <td>执行服务端指令并获取返回值</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr id="flushIndex">
- <td><a href="XSIndex.html#flushIndex-detail">flushIndex()</a></td>
- <td>强制刷新服务端的当前库的索引缓存</td>
- <td>XSIndex</td>
- </tr>
- <tr id="flushLogging">
- <td><a href="XSIndex.html#flushLogging-detail">flushLogging()</a></td>
- <td>强制刷新服务端当前项目的搜索日志</td>
- <td>XSIndex</td>
- </tr>
- <tr class="inherited" id="getProject">
- <td><a href="XSServer.html#getProject-detail">getProject()</a></td>
- <td>获取当前项目名称</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="getRespond">
- <td><a href="XSServer.html#getRespond-detail">getRespond()</a></td>
- <td>从服务器读取响应指令</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="getSocket">
- <td><a href="XSServer.html#getSocket-detail">getSocket()</a></td>
- <td>获取连接资源描述符</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="hasRespond">
- <td><a href="XSServer.html#hasRespond-detail">hasRespond()</a></td>
- <td>判断服务端是否有可读数据</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="open">
- <td><a href="XSServer.html#open-detail">open()</a></td>
- <td>打开服务端连接</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr id="openBuffer">
- <td><a href="XSIndex.html#openBuffer-detail">openBuffer()</a></td>
- <td>开启索引命令提交缓冲区</td>
- <td>XSIndex</td>
- </tr>
- <tr class="inherited" id="reopen">
- <td><a href="XSServer.html#reopen-detail">reopen()</a></td>
- <td>重新打开连接</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="sendCommand">
- <td><a href="XSServer.html#sendCommand-detail">sendCommand()</a></td>
- <td>往服务器直接发送指令 (无缓存)</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr id="setDb">
- <td><a href="XSIndex.html#setDb-detail">setDb()</a></td>
- <td>更改存放索引数据的目录</td>
- <td>XSIndex</td>
- </tr>
- <tr class="inherited" id="setProject">
- <td><a href="XSServer.html#setProject-detail">setProject()</a></td>
- <td>设置当前项目</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr class="inherited" id="setTimeout">
- <td><a href="XSServer.html#setTimeout-detail">setTimeout()</a></td>
- <td>设置服务端超时秒数</td>
- <td><a href="XSServer.html">XSServer</a></td>
- </tr>
- <tr id="update">
- <td><a href="XSIndex.html#update-detail">update()</a></td>
- <td>更新索引文档</td>
- <td>XSIndex</td>
- </tr>
- </table>
- </div>
- <a name="events"></a>
- <h2>方法明细</h2>
- <div class="detailHeader" id="__destruct-detail">
- __destruct()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public void <b>__destruct</b>()</div>
- </td></tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L437">sdk/php/lib/XSIndex.class.php#L437</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">__destruct</span><span style="color: #007700">()<br />{<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_rebuild </span><span style="color: #007700">=== </span><span style="color: #0000BB">true</span><span style="color: #007700">)<br /> {<br /> try<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">endRebuild</span><span style="color: #007700">();<br /> }<br /> catch (</span><span style="color: #0000BB">Exception $e</span><span style="color: #007700">)<br /> {<br /> <br /> }<br /> }<br /> </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">__destruct</span><span style="color: #007700">();<br />}</span>
- </span>
- </code></div>
- </div>
- <p>析构函数
- 在此自动关闭开启的 rebuild</p>
- <div class="detailHeader" id="add-detail">
- add()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>add</b>(<a href="XSDocument.html">XSDocument</a> $doc)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$doc</td>
- <td class="paramTypeCol"><a href="XSDocument.html">XSDocument</a></td>
- <td class="paramDescCol"></td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L45">sdk/php/lib/XSIndex.class.php#L45</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">add</span><span style="color: #007700">(</span><span style="color: #0000BB">XSDocument $doc</span><span style="color: #007700">)<br />{<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">update</span><span style="color: #007700">(</span><span style="color: #0000BB">$doc</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">);<br />}</span>
- </span>
- </code></div>
- </div>
- <p>添加文档到索引中
- 特别要注意的是: 系统不会自动检测主键是否冲突, 即便已存在相同主键也会添加进去</p>
- <div class="SeeAlso">
- <h4>参见</h4>
- <ul>
- <li><a href="XSIndex.html#update">update</a></li>
- </ul>
- </div>
- <div class="detailHeader" id="addExdata-detail">
- addExdata()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>addExdata</b>(string $data, bool $check_file=true)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$data</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">要提交的命令封包数据, 或存储命令封包的文件路径, 编码必须已经是 UTF-8</td>
- </tr>
- <tr>
- <td class="paramNameCol">$check_file</td>
- <td class="paramTypeCol">bool</td>
- <td class="paramDescCol">是否检测参数为文件的情况</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L233">sdk/php/lib/XSIndex.class.php#L233</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">addExdata</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">$check_file </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">)<br />{<br /> if (</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">) < </span><span style="color: #0000BB">255 </span><span style="color: #007700">&& </span><span style="color: #0000BB">$check_file </span><span style="color: #007700">&& </span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">) && (</span><span style="color: #0000BB">$data </span><span style="color: #007700">= </span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">)) === </span><span style="color: #0000BB">false</span><span style="color: #007700">)<br /> throw new </span><span style="color: #0000BB">XSException</span><span style="color: #007700">(</span><span style="color: #DD0000">'Failed to read exdata from file'</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">// try to check allowed (BUG: check the first cmd only): <br /> // CMD_IMPORT_HEADER, CMD_INDEX_REQUEST, CMD_INDEX_REMOVE, CMD_INDEX_EXDATA<br /> </span><span style="color: #0000BB">$first </span><span style="color: #007700">= </span><span style="color: #0000BB">ord</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /> if (</span><span style="color: #0000BB">$first </span><span style="color: #007700">!= </span><span style="color: #0000BB">CMD_IMPORT_HEADER </span><span style="color: #007700">&& </span><span style="color: #0000BB">$first </span><span style="color: #007700">!= </span><span style="color: #0000BB">CMD_INDEX_REQUEST<br /> </span><span style="color: #007700">&& </span><span style="color: #0000BB">$first </span><span style="color: #007700">!= </span><span style="color: #0000BB">CMD_INDEX_SYNONYMS<br /> </span><span style="color: #007700">&& </span><span style="color: #0000BB">$first </span><span style="color: #007700">!= </span><span style="color: #0000BB">CMD_INDEX_REMOVE </span><span style="color: #007700">&& </span><span style="color: #0000BB">$first </span><span style="color: #007700">!= </span><span style="color: #0000BB">CMD_INDEX_EXDATA</span><span style="color: #007700">)<br /> {<br /> throw new </span><span style="color: #0000BB">XSException</span><span style="color: #007700">(</span><span style="color: #DD0000">'Invalid start command of exdata (CMD:' </span><span style="color: #007700">. </span><span style="color: #0000BB">$first </span><span style="color: #007700">. </span><span style="color: #DD0000">')'</span><span style="color: #007700">);<br /> }<br /><br /> </span><span style="color: #FF8000">// create cmd & execute it<br /> </span><span style="color: #0000BB">$cmd </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'cmd' </span><span style="color: #007700">=> </span><span style="color: #0000BB">CMD_INDEX_EXDATA</span><span style="color: #007700">, </span><span style="color: #DD0000">'buf' </span><span style="color: #007700">=> </span><span style="color: #0000BB">$data</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>批量提交索引命令封包数据
- 把多个命令封包内容连续保存为文件或变量, 然后一次性提交以减少网络开销提升性能</p>
- <div class="detailHeader" id="addSynonym-detail">
- addSynonym()
- <span class="detailHeaderTag">
- 方法
- (自版本 v1.3.0 起可用)
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>addSynonym</b>(string $raw, string $synonym)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$raw</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">需要同义的原词, 英文词汇支持用空格分开多个单词并强制被转换为小写</td>
- </tr>
- <tr>
- <td class="paramNameCol">$synonym</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">同义词条, 最小语素, 勿带空格等分隔符</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L262">sdk/php/lib/XSIndex.class.php#L262</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">addSynonym</span><span style="color: #007700">(</span><span style="color: #0000BB">$raw</span><span style="color: #007700">, </span><span style="color: #0000BB">$synonym</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">$raw </span><span style="color: #007700">= </span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$raw</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$synonym </span><span style="color: #007700">= </span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$synonym</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$raw </span><span style="color: #007700">!== </span><span style="color: #DD0000">'' </span><span style="color: #007700">&& </span><span style="color: #0000BB">$synonym </span><span style="color: #007700">!== </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$cmd </span><span style="color: #007700">= new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_SYNONYMS</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_INDEX_SYNONYMS_ADD</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$raw</span><span style="color: #007700">, </span><span style="color: #0000BB">$synonym</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_bufSize </span><span style="color: #007700">> </span><span style="color: #0000BB">0</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">appendBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">));<br /> else<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> }<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>添加同义词</p>
- <div class="detailHeader" id="beginRebuild-detail">
- beginRebuild()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>beginRebuild</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L336">sdk/php/lib/XSIndex.class.php#L336</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">beginRebuild</span><span style="color: #007700">()<br />{<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'cmd' </span><span style="color: #007700">=> </span><span style="color: #0000BB">CMD_INDEX_REBUILD</span><span style="color: #007700">, </span><span style="color: #DD0000">'arg1' </span><span style="color: #007700">=> </span><span style="color: #0000BB">0</span><span style="color: #007700">), </span><span style="color: #0000BB">CMD_OK_DB_REBUILD</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_rebuild </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>开始重建索引
- 此后所有的索引更新指令将写到临时库, 而不是当前搜索库, 重建完成后调用
- <a href="XSIndex.html#endRebuild">endRebuild</a> 实现平滑重建索引, 重建过程仍可搜索旧的索引库,
- 如直接用 <a href="XSIndex.html#clean">clean</a> 清空数据, 则会导致重建过程搜索到不全的数据</p>
- <div class="SeeAlso">
- <h4>参见</h4>
- <ul>
- <li><a href="XSIndex.html#endRebuild">endRebuild</a></li>
- </ul>
- </div>
- <div class="detailHeader" id="clean-detail">
- clean()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>clean</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L32">sdk/php/lib/XSIndex.class.php#L32</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">clean</span><span style="color: #007700">()<br />{<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_CLEAN_DB</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_DB_CLEAN</span><span style="color: #007700">);<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>完全清空索引数据
- 如果当前数据库处于重建过程中将禁止清空</p>
- <div class="SeeAlso">
- <h4>参见</h4>
- <ul>
- <li><a href="XSIndex.html#beginRebuild">beginRebuild</a></li>
- </ul>
- </div>
- <div class="detailHeader" id="close-detail">
- close()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public void <b>close</b>($ioerr=false)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$ioerr</td>
- <td class="paramTypeCol"></td>
- <td class="paramDescCol"></td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L412">sdk/php/lib/XSIndex.class.php#L412</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ioerr </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">closeBuffer</span><span style="color: #007700">();<br /> </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ioerr</span><span style="color: #007700">);<br />}</span>
- </span>
- </code></div>
- </div>
- <p>关闭索引服务端连接</p>
- <div class="detailHeader" id="closeBuffer-detail">
- closeBuffer()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>closeBuffer</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L323">sdk/php/lib/XSIndex.class.php#L323</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">closeBuffer</span><span style="color: #007700">()<br />{<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">openBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />}</span>
- </span>
- </code></div>
- </div>
- <p>提交所有指令并关闭缓冲区
- 若未曾打开缓冲区, 调用本方法是无意义的</p>
- <div class="SeeAlso">
- <h4>参见</h4>
- <ul>
- <li><a href="XSIndex.html#openBuffer">openBuffer</a></li>
- </ul>
- </div>
- <div class="detailHeader" id="del-detail">
- del()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>del</b>(mixed $term, string $field=NULL)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$term</td>
- <td class="paramTypeCol">mixed</td>
- <td class="paramDescCol">单个主键或指定字段的索引词, 或多个组成的数组, 编码与 <a href="XSIndex.html#xs">xs</a> 默认字符集一致</td>
- </tr>
- <tr>
- <td class="paramNameCol">$field</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">索引词所属的字段名称, 默认不指定则为主键字段 (类型为ID)</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L198">sdk/php/lib/XSIndex.class.php#L198</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">del</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">, </span><span style="color: #0000BB">$field </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #FF8000">// get field<br /> </span><span style="color: #0000BB">$field </span><span style="color: #007700">= </span><span style="color: #0000BB">$field </span><span style="color: #007700">=== </span><span style="color: #0000BB">null </span><span style="color: #007700">? </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">xs</span><span style="color: #007700">-></span><span style="color: #0000BB">getFieldId</span><span style="color: #007700">() : </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">xs</span><span style="color: #007700">-></span><span style="color: #0000BB">getField</span><span style="color: #007700">(</span><span style="color: #0000BB">$field</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">// get commands <br /> </span><span style="color: #0000BB">$cmds </span><span style="color: #007700">= array();<br /> </span><span style="color: #0000BB">$terms </span><span style="color: #007700">= </span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">) ? </span><span style="color: #0000BB">array_unique</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">) : array(</span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$terms </span><span style="color: #007700">= </span><span style="color: #0000BB">XS</span><span style="color: #007700">::</span><span style="color: #0000BB">convert</span><span style="color: #007700">(</span><span style="color: #0000BB">$terms</span><span style="color: #007700">, </span><span style="color: #DD0000">'UTF-8'</span><span style="color: #007700">, </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">xs</span><span style="color: #007700">-></span><span style="color: #0000BB">getDefaultCharset</span><span style="color: #007700">());<br /> foreach (</span><span style="color: #0000BB">$terms </span><span style="color: #007700">as </span><span style="color: #0000BB">$term</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_REMOVE</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">));<br /> }<br /><br /> </span><span style="color: #FF8000">// combine multi commands into exdata<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_bufSize </span><span style="color: #007700">> </span><span style="color: #0000BB">0</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">appendBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">));<br /> else if (</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmds</span><span style="color: #007700">) == </span><span style="color: #0000BB">1</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">], </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> else<br /> {<br /> </span><span style="color: #0000BB">$cmd </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'cmd' </span><span style="color: #007700">=> </span><span style="color: #0000BB">CMD_INDEX_EXDATA</span><span style="color: #007700">, </span><span style="color: #DD0000">'buf' </span><span style="color: #007700">=> </span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">));<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> }<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>删除索引中的数据
- <pre>
- $index->del('123'); // 删除主键为 123 的记录
- $index->del(array('123', '789', '456')); // 删除主键为 123, 789, 456 的记录
- $index->del('abc', 'field'); // 删除字段 field 上带有索引词 abc 的所有记录
- $index->del(array('abc', 'def'), 'field'); // 删除字段 field 上带有索引词 abc 或 def 的所有记录
- </pre></p>
- <div class="detailHeader" id="delSynonym-detail">
- delSynonym()
- <span class="detailHeaderTag">
- 方法
- (自版本 v1.3.0 起可用)
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>delSynonym</b>(string $raw, string $synonym=NULL)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$raw</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">需要同义的原词, 英文词汇支持用空格分开多个单词并强制被转换为小写</td>
- </tr>
- <tr>
- <td class="paramNameCol">$synonym</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">要删除的同义词条, 默认 null 表示删除原词下的所有同义词</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L285">sdk/php/lib/XSIndex.class.php#L285</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">delSynonym</span><span style="color: #007700">(</span><span style="color: #0000BB">$raw</span><span style="color: #007700">, </span><span style="color: #0000BB">$synonym </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">$raw </span><span style="color: #007700">= </span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$raw</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$synonym </span><span style="color: #007700">= </span><span style="color: #0000BB">$synonym </span><span style="color: #007700">=== </span><span style="color: #0000BB">null </span><span style="color: #007700">? </span><span style="color: #DD0000">'' </span><span style="color: #007700">: </span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$synonym</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$raw </span><span style="color: #007700">!== </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$cmd </span><span style="color: #007700">= new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_SYNONYMS</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_INDEX_SYNONYMS_DEL</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">$raw</span><span style="color: #007700">, </span><span style="color: #0000BB">$synonym</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_bufSize </span><span style="color: #007700">> </span><span style="color: #0000BB">0</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">appendBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">));<br /> else<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> }<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>删除某个同义词</p>
- <div class="detailHeader" id="endRebuild-detail">
- endRebuild()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>endRebuild</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L349">sdk/php/lib/XSIndex.class.php#L349</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">endRebuild</span><span style="color: #007700">()<br />{<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_rebuild </span><span style="color: #007700">=== </span><span style="color: #0000BB">true</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_rebuild </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'cmd' </span><span style="color: #007700">=> </span><span style="color: #0000BB">CMD_INDEX_REBUILD</span><span style="color: #007700">, </span><span style="color: #DD0000">'arg1' </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">), </span><span style="color: #0000BB">CMD_OK_DB_REBUILD</span><span style="color: #007700">);<br /> }<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>完成并关闭重建索引
- 重建完成后调用, 用重建好的索引数据代替旧的索引数据</p>
- <div class="SeeAlso">
- <h4>参见</h4>
- <ul>
- <li><a href="XSIndex.html#beginRebuild">beginRebuild</a></li>
- </ul>
- </div>
- <div class="detailHeader" id="flushIndex-detail">
- flushIndex()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public bool <b>flushIndex</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">bool</td>
- <td class="paramDescCol">刷新成功返回 true, 失败则返回 false</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L394">sdk/php/lib/XSIndex.class.php#L394</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">flushIndex</span><span style="color: #007700">()<br />{<br /> try<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_COMMIT</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_DB_COMMITED</span><span style="color: #007700">);<br /> }<br /> catch (</span><span style="color: #0000BB">XSException $e</span><span style="color: #007700">)<br /> {<br /> if (</span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getCode</span><span style="color: #007700">() === </span><span style="color: #0000BB">CMD_ERR_BUSY </span><span style="color: #007700">|| </span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getCode</span><span style="color: #007700">() === </span><span style="color: #0000BB">CMD_ERR_RUNNING</span><span style="color: #007700">)<br /> return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /> throw </span><span style="color: #0000BB">$e</span><span style="color: #007700">;<br /> }<br /> return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>强制刷新服务端的当前库的索引缓存</p>
- <div class="detailHeader" id="flushLogging-detail">
- flushLogging()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public bool <b>flushLogging</b>()</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">bool</td>
- <td class="paramDescCol">刷新成功返回 true, 失败则返回 false</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L375">sdk/php/lib/XSIndex.class.php#L375</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">flushLogging</span><span style="color: #007700">()<br />{<br /> try<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_FLUSH_LOGGING</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_OK_LOG_FLUSHED</span><span style="color: #007700">);<br /> }<br /> catch (</span><span style="color: #0000BB">XSException $e</span><span style="color: #007700">)<br /> {<br /> if (</span><span style="color: #0000BB">$e</span><span style="color: #007700">-></span><span style="color: #0000BB">getCode</span><span style="color: #007700">() === </span><span style="color: #0000BB">CMD_ERR_BUSY</span><span style="color: #007700">)<br /> return </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /> throw </span><span style="color: #0000BB">$e</span><span style="color: #007700">;<br /> }<br /> return </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>强制刷新服务端当前项目的搜索日志</p>
- <div class="detailHeader" id="openBuffer-detail">
- openBuffer()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>openBuffer</b>(int $size=4)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$size</td>
- <td class="paramTypeCol">int</td>
- <td class="paramDescCol">缓冲区大小, 单位: MB 默认为 4MB</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L308">sdk/php/lib/XSIndex.class.php#L308</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">openBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">$size </span><span style="color: #007700">= </span><span style="color: #0000BB">4</span><span style="color: #007700">)<br />{<br /> if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_buf </span><span style="color: #007700">!== </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">addExdata</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_buf</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_bufSize </span><span style="color: #007700">= </span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">$size</span><span style="color: #007700">) << </span><span style="color: #0000BB">20</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_buf </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>开启索引命令提交缓冲区
- 为优化网络性能, 有必要先将本地提交的 add/update/del 等索引变动指令缓存下来,
- 当总大小达到参数指定的 size 时或调用 <a href="XSIndex.html#closeBuffer">closeBuffer</a> 时再真正提交到服务器
- 注意: 此举常用于需要大批量更新索引时, 此外重复调用本函数是无必要的</p>
- <div class="detailHeader" id="setDb-detail">
- setDb()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>setDb</b>(string $name)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$name</td>
- <td class="paramTypeCol">string</td>
- <td class="paramDescCol">数据库名称</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L365">sdk/php/lib/XSIndex.class.php#L365</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">setDb</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'cmd' </span><span style="color: #007700">=> </span><span style="color: #0000BB">CMD_INDEX_SET_DB</span><span style="color: #007700">, </span><span style="color: #DD0000">'buf' </span><span style="color: #007700">=> </span><span style="color: #0000BB">$name</span><span style="color: #007700">), </span><span style="color: #0000BB">CMD_OK_DB_CHANGED</span><span style="color: #007700">);<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>更改存放索引数据的目录
- 默认索引数据保存到服务器上的 db 目录, 通过此方法修改数据目录名</p>
- <div class="detailHeader" id="update-detail">
- update()
- <span class="detailHeaderTag">
- 方法
- </span>
- </div>
- <table class="summaryTable">
- <tr><td colspan="3">
- <div class="signature2">
- public XSIndex <b>update</b>(<a href="XSDocument.html">XSDocument</a> $doc, bool $add=false)</div>
- </td></tr>
- <tr>
- <td class="paramNameCol">$doc</td>
- <td class="paramTypeCol"><a href="XSDocument.html">XSDocument</a></td>
- <td class="paramDescCol"></td>
- </tr>
- <tr>
- <td class="paramNameCol">$add</td>
- <td class="paramTypeCol">bool</td>
- <td class="paramDescCol">是否为新增文档, 已有数据中不存在同一主键的其它数据</td>
- </tr>
- <tr>
- <td class="paramNameCol">{return}</td>
- <td class="paramTypeCol">XSIndex</td>
- <td class="paramDescCol">返回自身对象以支持串接操作</td>
- </tr>
- </table>
- <div class="sourceCode">
- <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSIndex.class.php#L58">sdk/php/lib/XSIndex.class.php#L58</a> (<b><a href="#" class="show">显示</a></b>)
- <div class="code"><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700">public function </span><span style="color: #0000BB">update</span><span style="color: #007700">(</span><span style="color: #0000BB">XSDocument $doc</span><span style="color: #007700">, </span><span style="color: #0000BB">$add </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">)<br />{<br /> </span><span style="color: #FF8000">// before submit<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">beforeSubmit</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">) === </span><span style="color: #0000BB">false</span><span style="color: #007700">)<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br /><br /> </span><span style="color: #FF8000">// check primary key of document<br /> </span><span style="color: #0000BB">$fid </span><span style="color: #007700">= </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">xs</span><span style="color: #007700">-></span><span style="color: #0000BB">getFieldId</span><span style="color: #007700">();<br /> </span><span style="color: #0000BB">$key </span><span style="color: #007700">= </span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">$fid</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$key </span><span style="color: #007700">=== </span><span style="color: #0000BB">null </span><span style="color: #007700">|| </span><span style="color: #0000BB">$key </span><span style="color: #007700">=== </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br /> throw new </span><span style="color: #0000BB">XSException</span><span style="color: #007700">(</span><span style="color: #DD0000">'Missing value of primarky key (FIELD:' </span><span style="color: #007700">. </span><span style="color: #0000BB">$fid </span><span style="color: #007700">. </span><span style="color: #DD0000">')'</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">// request cmd <br /> </span><span style="color: #0000BB">$cmd </span><span style="color: #007700">= new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_REQUEST</span><span style="color: #007700">, </span><span style="color: #0000BB">CMD_INDEX_REQUEST_ADD</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$add </span><span style="color: #007700">!== </span><span style="color: #0000BB">true</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$cmd</span><span style="color: #007700">-></span><span style="color: #0000BB">arg1 </span><span style="color: #007700">= </span><span style="color: #0000BB">CMD_INDEX_REQUEST_UPDATE</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$cmd</span><span style="color: #007700">-></span><span style="color: #0000BB">arg2 </span><span style="color: #007700">= </span><span style="color: #0000BB">$fid</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$cmd</span><span style="color: #007700">-></span><span style="color: #0000BB">buf </span><span style="color: #007700">= </span><span style="color: #0000BB">$key</span><span style="color: #007700">;<br /> }<br /> </span><span style="color: #0000BB">$cmds </span><span style="color: #007700">= array(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">// document cmds<br /> </span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">xs</span><span style="color: #007700">-></span><span style="color: #0000BB">getAllFields</span><span style="color: #007700">() as </span><span style="color: #0000BB">$field</span><span style="color: #007700">) </span><span style="color: #FF8000">/* @var $field XSFieldMeta */<br /> </span><span style="color: #007700">{<br /> </span><span style="color: #FF8000">// value<br /> </span><span style="color: #007700">if ((</span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">f</span><span style="color: #007700">(</span><span style="color: #0000BB">$field</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">null</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$varg </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isNumeric</span><span style="color: #007700">() ? </span><span style="color: #0000BB">CMD_VALUE_FLAG_NUMERIC </span><span style="color: #007700">: </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">val</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> if (!</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasCustomTokenizer</span><span style="color: #007700">())<br /> {<br /> </span><span style="color: #FF8000">// internal tokenizer<br /> </span><span style="color: #0000BB">$wdf </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">weight </span><span style="color: #007700">| (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">withPos</span><span style="color: #007700">() ? </span><span style="color: #0000BB">CMD_INDEX_FLAG_WITHPOS </span><span style="color: #007700">: </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndexMixed</span><span style="color: #007700">())<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_INDEX</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf</span><span style="color: #007700">, </span><span style="color: #0000BB">XSFieldScheme</span><span style="color: #007700">::</span><span style="color: #0000BB">MIXED_VNO</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> if (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndexSelf</span><span style="color: #007700">())<br /> {<br /> </span><span style="color: #0000BB">$wdf </span><span style="color: #007700">|= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isNumeric</span><span style="color: #007700">() ? </span><span style="color: #0000BB">0 </span><span style="color: #007700">: </span><span style="color: #0000BB">CMD_INDEX_FLAG_SAVEVALUE</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_INDEX</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> }<br /> </span><span style="color: #FF8000">// add value<br /> </span><span style="color: #007700">if (!</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndexSelf</span><span style="color: #007700">() || </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isNumeric</span><span style="color: #007700">())<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_VALUE</span><span style="color: #007700">, </span><span style="color: #0000BB">$varg</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> }<br /> else<br /> {<br /> </span><span style="color: #FF8000">// add index<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndex</span><span style="color: #007700">())<br /> {<br /> </span><span style="color: #0000BB">$terms </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">getCustomTokenizer</span><span style="color: #007700">()-></span><span style="color: #0000BB">getTokens</span><span style="color: #007700">(</span><span style="color: #0000BB">$value</span><span style="color: #007700">, </span><span style="color: #0000BB">$doc</span><span style="color: #007700">);<br /> </span><span style="color: #FF8000">// self: [bool term, NOT weight, NOT stem, NOT pos]<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndexSelf</span><span style="color: #007700">())<br /> {<br /> foreach (</span><span style="color: #0000BB">$terms </span><span style="color: #007700">as </span><span style="color: #0000BB">$term</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$term </span><span style="color: #007700">= </span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_TERM</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> }<br /> }<br /> </span><span style="color: #FF8000">// mixed: [use default tokenizer]<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasIndexMixed</span><span style="color: #007700">())<br /> {<br /> </span><span style="color: #0000BB">$mtext </span><span style="color: #007700">= </span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">' '</span><span style="color: #007700">, </span><span style="color: #0000BB">$terms</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_INDEX</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">weight</span><span style="color: #007700">, </span><span style="color: #0000BB">XSFieldScheme</span><span style="color: #007700">::</span><span style="color: #0000BB">MIXED_VNO</span><span style="color: #007700">, </span><span style="color: #0000BB">$mtext</span><span style="color: #007700">);<br /> }<br /> }<br /> </span><span style="color: #FF8000">// add value<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_VALUE</span><span style="color: #007700">, </span><span style="color: #0000BB">$varg</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> }<br /> }<br /> </span><span style="color: #FF8000">// process add terms<br /> </span><span style="color: #007700">if ((</span><span style="color: #0000BB">$terms </span><span style="color: #007700">= </span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">getAddTerms</span><span style="color: #007700">(</span><span style="color: #0000BB">$field</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">null</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #FF8000">// ignore weight for bool index<br /> </span><span style="color: #0000BB">$wdf1 </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isBoolIndex</span><span style="color: #007700">() ? </span><span style="color: #0000BB">0 </span><span style="color: #007700">: </span><span style="color: #0000BB">CMD_INDEX_FLAG_CHECKSTEM</span><span style="color: #007700">;<br /> foreach (</span><span style="color: #0000BB">$terms </span><span style="color: #007700">as </span><span style="color: #0000BB">$term </span><span style="color: #007700">=> </span><span style="color: #0000BB">$wdf</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$term </span><span style="color: #007700">= </span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$wdf2 </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isBoolIndex</span><span style="color: #007700">() ? </span><span style="color: #0000BB">1 </span><span style="color: #007700">: </span><span style="color: #0000BB">$wdf </span><span style="color: #007700">* </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">weight</span><span style="color: #007700">;<br /> while (</span><span style="color: #0000BB">$wdf2 </span><span style="color: #007700">> </span><span style="color: #0000BB">XSFieldMeta</span><span style="color: #007700">::</span><span style="color: #0000BB">MAX_WDF</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_TERM</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf1 </span><span style="color: #007700">| </span><span style="color: #0000BB">XSFieldMeta</span><span style="color: #007700">::</span><span style="color: #0000BB">MAX_WDF</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$wdf2 </span><span style="color: #007700">-= </span><span style="color: #0000BB">XSFieldMeta</span><span style="color: #007700">::</span><span style="color: #0000BB">MAX_WDF</span><span style="color: #007700">;<br /> }<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_TERM</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf1 </span><span style="color: #007700">| </span><span style="color: #0000BB">$wdf2</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> }<br /> }<br /> </span><span style="color: #FF8000">// process add text<br /> </span><span style="color: #007700">if ((</span><span style="color: #0000BB">$text </span><span style="color: #007700">= </span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">getAddIndex</span><span style="color: #007700">(</span><span style="color: #0000BB">$field</span><span style="color: #007700">)) !== </span><span style="color: #0000BB">null</span><span style="color: #007700">)<br /> {<br /> if (!</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">hasCustomTokenizer</span><span style="color: #007700">())<br /> {<br /> </span><span style="color: #0000BB">$wdf </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">weight </span><span style="color: #007700">| (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">withPos</span><span style="color: #007700">() ? </span><span style="color: #0000BB">CMD_INDEX_FLAG_WITHPOS </span><span style="color: #007700">: </span><span style="color: #0000BB">0</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_INDEX</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$text</span><span style="color: #007700">);<br /> }<br /> else<br /> {<br /> </span><span style="color: #FF8000">// NOT pos<br /> </span><span style="color: #0000BB">$wdf </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">isBoolIndex</span><span style="color: #007700">() ? </span><span style="color: #0000BB">1 </span><span style="color: #007700">: (</span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">weight </span><span style="color: #007700">| </span><span style="color: #0000BB">CMD_INDEX_FLAG_CHECKSTEM</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$terms </span><span style="color: #007700">= </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">getCustomTokenizer</span><span style="color: #007700">()-></span><span style="color: #0000BB">getTokens</span><span style="color: #007700">(</span><span style="color: #0000BB">$text</span><span style="color: #007700">, </span><span style="color: #0000BB">$doc</span><span style="color: #007700">);<br /> foreach (</span><span style="color: #0000BB">$terms </span><span style="color: #007700">as </span><span style="color: #0000BB">$term</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$term </span><span style="color: #007700">= </span><span style="color: #0000BB">strtolower</span><span style="color: #007700">(</span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_DOC_TERM</span><span style="color: #007700">, </span><span style="color: #0000BB">$wdf</span><span style="color: #007700">, </span><span style="color: #0000BB">$field</span><span style="color: #007700">-></span><span style="color: #0000BB">vno</span><span style="color: #007700">, </span><span style="color: #0000BB">$term</span><span style="color: #007700">);<br /> }<br /> }<br /> }<br /> }<br /><br /> </span><span style="color: #FF8000">// submit cmd<br /> </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[] = new </span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_INDEX_SUBMIT</span><span style="color: #007700">);<br /><br /> </span><span style="color: #FF8000">// execute cmd<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_bufSize </span><span style="color: #007700">> </span><span style="color: #0000BB">0</span><span style="color: #007700">)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">appendBuffer</span><span style="color: #007700">(</span><span style="color: #0000BB">implode</span><span style="color: #007700">(</span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$cmds</span><span style="color: #007700">));<br /> else<br /> {<br /> for (</span><span style="color: #0000BB">$i </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">; </span><span style="color: #0000BB">$i </span><span style="color: #007700">< </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmds</span><span style="color: #007700">) - </span><span style="color: #0000BB">1</span><span style="color: #007700">; </span><span style="color: #0000BB">$i</span><span style="color: #007700">++)<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">]);<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmds</span><span style="color: #007700">[</span><span style="color: #0000BB">$i</span><span style="color: #007700">], </span><span style="color: #0000BB">CMD_OK_RQST_FINISHED</span><span style="color: #007700">);<br /> }<br /><br /> </span><span style="color: #FF8000">// after submit<br /> </span><span style="color: #0000BB">$doc</span><span style="color: #007700">-></span><span style="color: #0000BB">afterSubmit</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">);<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
- </span>
- </code></div>
- </div>
- <p>更新索引文档
- 该方法相当于先根据主键删除已存在的旧文档, 然后添加该文档
- 如果你能明确认定是新文档, 则建议使用 <a href="XSIndex.html#add">add</a></p>
- </div><!-- end of content -->
- <div id="apiFooter">
- Copyright © 2008-2011 by <a href="http://www.xunsearch.com" target="_blank">杭州云圣网络科技有限公司</a><br/>
- All Rights Reserved.<br/>
- </div><!-- end of footer -->
- <script type="text/javascript">
- /*<![CDATA[*/
- $("a.toggle").toggle(function(){
- $(this).text($(this).text().replace(/Hide/,'Show'));
- $(this).parents(".summary").find(".inherited").hide();
- },function(){
- $(this).text($(this).text().replace(/Show/,'Hide'));
- $(this).parents(".summary").find(".inherited").show();
- });
- $(".sourceCode a.show").toggle(function(){
- $(this).text($(this).text().replace(/show/,'hide'));
- $(this).parents(".sourceCode").find("div.code").show();
- },function(){
- $(this).text($(this).text().replace(/hide/,'show'));
- $(this).parents(".sourceCode").find("div.code").hide();
- });
- $("a.sourceLink").click(function(){
- $(this).attr('target','_blank');
- });
- /*]]>*/
- </script>
- </div><!-- end of page -->
- </body>
- </html>
|