使用Discuz关键词服务器实现PHP中文分词


Posted in PHP onMarch 11, 2014

不同于使用自己的服务器进行分词,Discuz!在线中文分词服务是基于API返回分词结果的。在项目中,我们只需要一个函数即可方便地进行分词、关键词提取。
以下是根据Discuz!在线分词服务API写的函数,测试可正常运行:

/**
 * DZ在线中文分词
 * @param $title string 进行分词的标题
 * @param $content string 进行分词的内容
 * @param $encode string API返回的数据编码
 * @return  array 得到的关键词数组
 */
 function dz_segment($title = '', $content = '', $encode = 'utf-8'){
    if($title == ''){
        return false;
    }
    $title = rawurlencode(strip_tags($title));
    $content = strip_tags($content);
    if(strlen($content)>2400){ //在线分词服务有长度限制
        $content =  mb_substr($content, 0, 800, $encode);
    }
    $content = rawurlencode($content);
    $url = 'http://keyword.discuz.com/related_kw.html?title='.$title.'&content='.$content.'&ics='.$encode.'&ocs='.$encode;
    $xml_array=simplexml_load_file($url);                        //将XML中的数据,读取到数组对象中  
    $result = $xml_array->keyword->result;
    $data = array();
    foreach ($result->item as $key => $value) {
            array_push($data, (string)$value->kw);
    }
    if(count($data) > 0){
        return $data;
    }else{
        return false;
    }
 }

分词示例,通过url访问:
http://keyword.discuz.com/related_kw.html?title=高三历史全程复习精品教程&content=&ics=utf-8&ocs=utf-8

返回的XML数据:

<?xml version="1.0" encoding="utf-8" ?>
<total_response>
 <svalid>36000</svalid>
 <keyword>
 <info>
  <count>1</count>
  <errno>0</errno>
  <nextuptime>1291287160</nextuptime>
  <keep>0</keep>
 </info>
 <result>
  <item>
   <kw><![CDATA[高三历史]]></kw>
  </item>
 </result>
 </keyword>
</total_response>
PHP 相关文章推荐
五个PHP程序员工具
May 26 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
php下利用curl判断远程文件是否存在的实现代码
Oct 08 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
php利用gd库为图片添加水印
Nov 09 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
php提高脚本性能的4个技巧
Aug 18 PHP
PHP输出缓存ob系列函数详解
Mar 11 #PHP
php初始化对象和析构函数的简单实例
Mar 11 #PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 #PHP
php调用c接口无错版介绍
Mar 11 #PHP
PHP goto语句简介和使用实例
Mar 11 #PHP
php调用C代码的实现方法
Mar 11 #PHP
PHP中isset()和unset()函数的用法小结
Mar 11 #PHP
You might like
PHP中Session的概念
2006/10/09 PHP
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
Js组件的一些写法
2010/09/10 Javascript
javascript工具库代码
2012/03/29 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python使用Matlab命令过程解析
2020/06/04 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
运动会广播稿20字
2014/02/18 职场文书
学习标兵获奖感言
2014/02/20 职场文书
高一学生期末评语
2014/04/25 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
2019 入党申请书范文
2019/07/10 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL