2018年04月6日网站服务器迁移完成……

php composer 实践scws分词搜索组件

php 苏 demo 2102℃ 0评论

SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)。github介绍:https://github.com/hightman/scws/tree/master/web/demo/pscws4

在项目实践中,经常会用到分词搜索。这里我们实践php 调用scws 实现分词;

环境介绍:

php开发框架 thinkphp 3.2

操作步骤

1.composer 引入scws组件支持;

查找scws包支持,搜索地址 https://packagist.org/search/?q=scws

20170217130040

在项目目录下 运行composer

composer require scws/pscws4
composer update -vvv

备注:如果不习惯使用composer命令的 ,可以自行下载组件包。

scws官方提供的类(这里使用的是pscws第四版的)
http://www.xunsearch.com/scws/down/pscws4-20081221.tar.bz2
XDB 词典文件 (这里使用的是utf8简体中文词典包)
http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2

2.编写调用函数支持

这里,我是放到一个静态帮助函数类里了。注意 dict.utf8.xdb 以及 rules.ini的路径问题,要确保路径可以引用到文件。

/**
 * 获取分词结果标签
 * @param $title
 * @param null $num
 *
 * @return bool
 */
public static function get_tag($title, $num = null)
{
    if (empty($title)) {
        return false;
    }
    $pscws = new PSCWS4('utf8');

    $pscws->set_dict(CONF_PATH . '/scws/dict/dict.utf8.xdb');
    $pscws->set_rule(CONF_PATH . '/scws/etc/rules.utf8.ini');
    $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 implode(',', $tags);
}

3.调用实现

<?php namespace Api\Controller;

use Api\Common\Core\LmEmail;
use Api\Common\Core\LmUtil;

class TestController extends BaseController
{
  
    public function scws()
    {
        $text = "中国航天官员应邀到美国与太空总署官员开会发展中国家上海大学城书店表面的东西今天我买了一辆面的,于是我坐着面的去上班化妆和服装这个门把手坏了,请把手拿开将军任命了一名中将,产量三年中将增长两倍王军虎去广州了,王军虎头虎脑的欧阳明练功很厉害可是马明练不厉害毛泽东北京华烟云人中出吕布 马中出赤兔Q1,中我要买Q币充值";
        $result = LmUtil::get_tag($text,10);
        LmUtil::sys_debug($result);
    }
}

4.显示结果

20170217130040

 

打赏

转载请注明:苏demo的别样人生 » php composer 实践scws分词搜索组件

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情