<p >为了便于用户在安装完<code >Xunsearch</code>后可以通过服务端内置的 scws[1] 实现分词, 而不需要另外再安装 scws 的 php 扩展。从<code >1.3.1</code>版本起,<code >Xunsearch</code>的 PHP-SDK 中加入<a href="http://www.xunsearch.com/doc/php/api/XSTokenizerScws" >XSTokenizerScws</a>类,可通过搜索服务端执行分词功能。</p><p><a class="ch" >1. 用法简单说明</a><a class="anchor" ></a><span ></span></p><p >这儿只做简单介绍和示范,更多详细的用法请点击阅读类参考手册<a href="http://www.xunsearch.com/doc/php/api/XSTokenizerScws" >XSTokenizerScws</a>。</p><h4 >创建分词对象</h4><pre >$xs=newXS(...);//必须先创建一个xs实例,否则会抛出异常$tokenizer=newXSTokenizerScws;//直接创建实例</pre><h3 >获取分词结果</h3><p >调用<a href="http://www.xunsearch.com/doc/php/api/XSTokenizerScws#getResult" >XSTokenizerScws::getResult</a>对参数指定的文本字符串执行分词, 并返回词汇数组,每个词汇包含 3 个元素,其中:</p><ul class=" list-paddingleft-2"><li><p><em >off</em>表示这个词汇在源参数文本<em >$text</em>中的起始偏移位置</p></li><li><p><em >attr</em>这个词汇的词性,使用北大标注</p></li><li><p><em >word</em>分好的词条</p></li></ul><pre >$text=&#39;迅搜(xunsearch)是优秀的开源全文检索解决方案&#39;;$words=$tokenizer-&gt;getResult($text);print_r($words);</pre><h3 >提取重要词汇</h3><p >调用<a href="http://www.xunsearch.com/doc/php/api/XSToenizerScws#getTops" >XSToenizerScws::getTops</a>可以简单提取重要词汇,它支持三个参数, 返回的词汇数组元素和分词结果类似,只是把<em >off</em>替换为<em >times</em>表示这个词在文本中出现的总次数。</p><pre >$text=&#39;迅搜(xunsearch)是优秀的开源全文检索解决方案&#39;;//提取前5个重要词,要求词性必须是n或v或vn$tops=$tokenizer-&gt;getTops($text,5,&#39;n,v,vn&#39;);print_r($tops);</pre><h3 >判断是否包含指定词性的词汇</h3><p >这项功能通过<a href="http://www.xunsearch.com/doc/php/api/XSTokenizerScws#hasWord" >XSTokenizerScws::hasWord</a>完成,主要目的是用于类似黑词判断。 您可以自制一个词典,并将黑词统一设置为一个独特的属性,比如 &quot;@&quot;, 那么就可以用该功能判断一段文本是否包含黑词。</p><pre >$text=&#39;...&#39;;if($tokenizer-&gt;hasWord($text,&#39;@&#39;)){ //包含词性为&#39;@&#39;的词}else{ //为包含词性为&#39;@&#39;的词}</pre><p><a class="ch" >2. 使用注意事项</a><a class="anchor" ></a><span ></span></p><ul class=" list-paddingleft-2"><li><p >这个分词类底层实现是与搜索服务端通讯完成的,因此在使用前必须先初始化一个<a href="http://www.xunsearch.com/doc/php/api/XS" >XS</a>对象</p></li><li><p >这个分词器虽然实现了<a href="http://www.xunsearch.com/doc/php/api/XSTokenizer#getTokens" >XSTokenizer::getTokens</a>,但不推荐直接指定到配置文件的 tokenizer 选项中,因为这样做只会让性能更低。</p></li></ul>
返回顶部 留言