thinkphp3.2搭配scws做中文分词案例

    之前项目里简单的搜索一般都是使用搜索词直接like查询,今天客户反馈搜索结果有点不理想,就是有两篇文章的标题分别是广东省领军人物balabala、东莞市领军人物balabala,用户搜索省领军的时候由于使用的是like去匹配,所以是搜索不出来这两篇文章的,而客户想要的是这两篇文章都要搜出来,前几天还跟同学讨论分词的我灵光一闪就想要不用下分词吧。。于是就开始度娘了。。。。然后就搜索到了scws,好了,废话不多说,开始上干货!!

    先上效果图



效果大概就是这样了,工具包我压缩好了https://download.csdn.net/download/asdlow/10525474到这里下载,上传资源的时候强制最少是一个积分下载,没有积分的加我qq867956984我给你发。下载解压后你会看到下面的目录结构



将Pscws.class.php与Xdb_r.class.php放到ThinkPHP\Library\Org\Util下



然后在与ThinkPHP同目录下的Public(自己放到喜欢的地方也行)下新建一个dist文件夹,将dict.utf8.xdb词典文件放到里面,pscws4下面etc文件夹里的rules.utf8.ini也放到这里,然后去入口文件里配置一下路径

define('LIN_CONF_PATH',dirname(__FILE__) . '/../Public/dict/');

然后就开始愉快的写demo测试吧~~~

public function test()
{
    $rzt=$this->get_tags("省领军搜索词效果");
    p($rzt,1);
}

private function get_tags($title,$num=null){
    $pscws = new \Org\Util\Pscws('utf8');
    $pscws->set_dict(LIN_CONF_PATH . 'dict.utf8.xdb');
    $pscws->set_rule(LIN_CONF_PATH . 'rules.utf8.ini');
    $pscws->set_charset('utf-8');
    $pscws->set_ignore(true);
    $pscws->send_text($title);
    $words = $pscws->get_tops($num);
    $pscws->close();
    $tags = array();
    foreach ($words as $val) {
        $tags[] = $val['word'];
    }
    return $tags;
}

要记得设置,不然出来的结果会乱码

$pscws->set_charset('utf-8');

好了到这里就结束啦~~~~~~~

参考文章http://www.thinkphp.cn/topic/31302.html

猜你喜欢

转载自blog.csdn.net/asdlow/article/details/80944097