ThinkPHP3.2.3扩展之自动分词获取关键字

ThinkPHP自动获取关键词调用在线discuz词库

先按照下图路径放好插件

        /**
     * 自动获取关键词(调用第三方插件)
     * @return [type] [description]
     * www.shouce.ren
     */
    public function keyword()
    {
        Vendor('autokeyword.AutoKeyword');
        $keyword = new \AutoKeyword();
        $str='自动获取关键词并发大数据我们大家好吃饭啦调用第三方插件';
        $title = trim($str);
        $keys=$keyword::discuz($title);
        var_dump($keys);
    }

插件源码:

AutoKeyword.php

<?php
 
/**
 * 分词
 * @author zhao jinhan <326196998@qq.com>
 * 
 */
class AutoKeyword
{
 
    /**
     * 使用discuz词库
     * @param unknown_type $title
     * @param unknown_type $content
     */
    public static function discuz ($title = '', $content = '')
    {
        $subjectenc = rawurlencode(strip_tags($title));
        $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $content)));
        $data = @implode('', file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics=utf-8&ocs=utf-8"));
 
        if ($data) {
            $parser = xml_parser_create();
            xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
            xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
            xml_parse_into_struct($parser, $data, $values, $index);
            xml_parser_free($parser);
            $kws = array ();
            foreach ($values as $valuearray) {
                if ($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw')
                    $kws[] = trim($valuearray['value']);
            }
//             $return = '';
//             $dot='';
//             if ($kws) {
//                 foreach ($kws as $kw) {
//                     $kw = CHtml::encode(strip_tags($kw));
//                     $return .= $dot.$kw ;
//                     $dot = ',';
//                 }
//                 $return = trim($return);
//             }
 
            return $kws;
        }
 
    }

 

/**
     * 简易自定义获取关键词
     * @param string $title
     * @param string $content
     * @return JSON
     */
    public static function simple($title = '', $content=''){
        $words = include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'words.php';
        $data = array();
        $max = 10; //最多匹配10个
        if($words){
            foreach((array)$words as $word){
                if(count($data) > $max){
                    break;
                }else{
                    if($title && preg_match('/'.$word.'/is', $title)){
                        array_push($data, $word);
                    }
                    if($content && preg_match('/'.$word.'/is', $content)){
                        if(!in_array($word, $data)){
                            array_push($data, $word);
                        }
                    }
                }
            }
        }
        return array_unique($data);
    }
 
 
}

word.php

<?php
/**
 * 词库(权重越高越靠前)
 */
return array(
    'php',
    'mysql',
    'web',
    'html',
    'js',
    'jquery',
    'sql',
    'myisam',
    'innodb',
    'apache',
    'nginx',
    'yii',
    'linux',
    'cms',
    'yiifcms',
    'redis',
    'memcache',
    'explain',
    'ueditor',
    'kindeditor',
    'api',
    'w3c',
    '高性能',
    '大数据',
    '存储过程',
    '事物',
    '触发器',
    '索引',
    '并发',
    '编程',
    '算法',
    '排序',
    '安装包',
    '下载',
    '服务器',
    '手册',
    '指南',
    '文章',
    '图集',
);

 

转载于:https://www.cnblogs.com/xqschool/p/6396932.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值