首页 > 技术文章 > scws简单中文分词

cqingt 2017-07-28 16:11 原文

demo如下:

/**
     * 中文分词
     * @param $keyword
     * @param $getTop
     * @param $limit
     * @return array
     */
   function splitWords($keyword, $getTop = false, $limit = 5): array
    {
        if (! $keyword) {
            return [];
        }

        $filePath = ini_get('scws.default.fpath');
        $handle = scws_new();
        $handle->set_charset('utf-8');

        // 添加分词字典
        $handle->add_dict($filePath . '/dict.utf8.xdb');

        // 设置分词规则
        $handle->set_rule($filePath . '/rules.utf8.ini');

        // 是否复式分割
        $handle->set_duality(false);

        // 忽略标点符号
        $handle->set_ignore(true);

        // 是否将闲散文字自动以二字分词法聚合
        $handle->set_multi(SCWS_MULTI_SHORT);
        $handle->send_text($keyword);

        if ($getTop) {
            $words = $handle->get_tops($limit);
        } else {
            $words = $handle->get_result();

            // 根据词频降序排列
            if ($words) {
                $sortIdf = array_map(function($item){
                    return $item['idf'];
                }, $words);
                array_multisort($sortIdf, SORT_DESC, $words);
                $words = array_slice($words, 0, $limit);
            }
        }

        return $words ? $words : [];
    }

 附官网文档:http://www.xunsearch.com/scws/docs.php

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索:http://blog.csdn.net/nuli888/article/details/51892776

推荐阅读