之前项目里简单的搜索一般都是使用搜索词直接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