使用织梦开源的分词算法库编写的YII获取分词扩展
在编辑文章中,很多时候都需要自动根据文章内容获取关键字的功能,因此,本文主要是说明如何在yii中使用织梦开源的分词算法编写一个独立的扩展,可以在不同的模块中使用,步骤如下:
1 到这里下载其他朋友整理的织梦分词算法库;
2 解压下载的分词库并放到yii extensions/fenci目录下面;
3 在extensions/fenci添加FenciConnectorAction.php和GetTagsInput.php;
4 在对应的module中添加ConnectorController.php,用于实现在类中调用外部action,即是用于调用extensions/fenci中的FenciConnectorAction.php;
下面说明如何编写需要添加的文件的代码:
1 FenciConnectorAction.php 提供给需要调用的模块调用的外部action,用于根据内容获取分词
<?php
class FenciConnectorAction extends CAction
{
public $contents = ''; public function run(){ require_once(dirname(__FILE__) . '/SplitWord.class.php'); $cfg_soft_lang='utf-8';
$sp = new SplitWord($cfg_soft_lang, $cfg_soft_lang);
$sp->SetSource($this->contents, $cfg_soft_lang, $cfg_soft_lang);
$sp->SetResultType(3);
$sp->StartAnalysis(TRUE);
$keywords = $sp->GetFinallyResult(' ');
$keywords = preg_replace("/[ ]{1,}/", ",", trim($keywords));
echo $keywords;
}
}
?>
2 GetTagsInput.php 用于在form表单中调用自动生成表单元素和绑定ajax调用分词action的js
<?php class GetTagsInput extends CInputWidget
{
public $url = '';
public $connectorRoute = false;
public $contentAttribute = ''; public function init()
{
if (empty($this->connectorRoute))
throw new CException('$connectorRoute must be set!'); $this->url = Yii::app()->createUrl($this->connectorRoute); } public function run()
{
list($name, $id) = $this->resolveNameID();
if (isset($this->htmlOptions['id']))
$id = $this->htmlOptions['id'];
else
$this->htmlOptions['id'] = $id;
if (isset($this->htmlOptions['name']))
$name = $this->htmlOptions['name'];
else
$this->htmlOptions['name'] = $name; $contHtmlOptions = $this->htmlOptions;
$contHtmlOptions['id'] = $id . 'container';
echo CHtml::openTag('div', $contHtmlOptions); $inputOptions = array('id' => $id, 'style' => 'float:left;', 'size' => '80');
if ($this->hasModel())
echo CHtml::activeTextField($this->model, $this->attribute, $inputOptions);
else
echo CHtml::textField($name, $this->value, $inputOptions); echo CHtml::button('自动获取', array('id' => $id . 'autoGenerate', 'class' => 'btn'));
echo CHtml::closeTag('div'); $content_id = $this->model->getModelClass().'_'.$this->contentAttribute;
$object_id = $this->model->getModelClass().'_'.$this->attribute;
$script = <<<EOD
window.autoGetTags = function(){
var content_id = '$content_id';
var object_id = '$object_id'; $.ajax({
url: '$this->url',
type:'post',
cache:false,
data:{
contents : $("#"+content_id).val()
},
success: function(datas, textStatus, xhr){
$("#"+object_id).val(datas)
}
});
}
EOD; $cs = Yii::app()->getClientScript();
$cs->registerScript('GetTagsInput#global', $script);
$js = '$("#' . $id . 'autoGenerate").click(function(){window.autoGetTags()});';
$cs->registerScript('GetTagsInput#' . $id, $js);
}
}
?>
3 ConnectorController.php 用于实现外部调用扩展中的FenciConnectorAction.php
<?php
class ConnectorController extends CController
{
public function actions()
{
return array( 'fenci' => array(
'class' => 'ext.fenci.FenciConnectorAction',
'contents' => isset($_POST['contents'])?$_POST['contents']:''
)
);
}
}
?>
4 最终在表单中的调用方式:
<tr>
<td width="150"><?php echo $form->labelEx($model,'tags'); ?></td>
<td>
<?php
$this->widget('ext.fenci.GetTagsInput', array(
'model' => $model,
'attribute' => 'tags',//分词对应的字段
'contentAttribute' => 'title',//指定从哪个字段值获取分词
'connectorRoute' => 'admin/connector/fenci',//设置调用外部action 即是扩展获取分词的action
));
?>
</td>
</tr>
5 效果图:

分词扩展的目录结构如下:

点击自动获取之后就可以自动根据绑定的关键字数据源得到最终的分词结果并显示在目标字段上面,不过这里对于返回的非词语需要再处理一下。
这里附上如何在yii的controller中调用外部action的说明供作参考
如果需要转载,请注明来源,支持原创,多谢合作!
使用织梦开源的分词算法库编写的YII获取分词扩展的更多相关文章
- 织梦移动版页面点击下一篇获取不到id
1.首先找到网站目录下面的/include/arc.archives.class.php文件 2.找到837行的如下内容 if ( defined('DEDEMOB') ) { $mlink = 'v ...
- C#分词算法
本文用到的库下载:点此下载 词库下载:点此下载 将词库直接放到项目根目录 词库设置如下: 类库说明 词库查看程序:点此下载 可以在上面的程序中添加常用行业词库 还可以通过下面的类在程序中实现 完整的盘 ...
- js javascirpt 数学库、 算法库 (转载)
提示:国外官网,谷歌浏览器右键可以翻译成中文. 1.math.js 官网:https://mathjs.org/index.html 其它简介:https://www.jianshu.com/p/4f ...
- 关于织梦系统不支持php中GD库的问题
大多数人在显成的PHP的CMS时,如织梦CMS,安装的时候不支持GD库,就导致整个网站的验证码不显示,以下是个人对此类问题的解决办法: 1.首先找到wamp的安装目录,找到PHP的文件夹,打开php. ...
- graph isomorphism 开源算法库VFlib, Nauty
VFlib 开源算法库网站:http://www.cs.sunysb.edu/~algorith/implement/vflib/implement.shtml Nauty 开源算法库网站:http: ...
- 开源织梦(dedecms)快速搬家图文教程
前段时间在seowhy班级群里,一个同学问织梦程序怎么搬家,好多人都遇到过这样的问题,不知道怎么去处理,今天小编分享一个简单的方法,帮大家快速搬家织梦. 好了,废话留到最后再说,看下面方法: 1. 登 ...
- 织梦Dedecms文件目录结构
Dedecms文件目录结构 /根目录 ../a 默认生成文件存放目录 ../data 系统缓存或其他可写入数据存放目录 ../dede 默认后台登录管理(可任意改名) ../images 系统默认的部 ...
- 织梦dedecms dede plus文件作用介绍及安全设置
一.安装设置 1.默认的后台模块中心有很多模块. 这里除了"友情链接"模块其他都可以删掉.在后台可以先卸载再删除. 2.如果是一开始就不想要的话,安装版plus目录下进行如下操作. ...
- 织梦Dedecms主要文件夹目录及模板文件说明
虽然织梦DedeCMS因为安全问题被人所诟病,但瑕不掩瑜,无论从用户群数量还是时间等各方面,织梦DedeCMS都是国内排名前几的CMS建站程序.如果你想学习CMS的二次开发,织梦DedeCMS是必须需 ...
随机推荐
- 2018DDCTF Misc部分WP
题目给出了这样一串字符:d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b9e4b3b7b7 ...
- make command explaination 編譯命令解釋
Creating .config file make ARCH=arm CROSS_COMPILE=arm-none-eabi- stm32_defconfig 以上命令是 將變數 ARCH=arm, ...
- monkey测试===ios-monkey测试工具
iOSmonkey测试工具: crashmonkey 特点: 支持**真机测试.模拟器测试** 支持收集**系统日志(Systemlog)**.**崩溃日志(Crashlog)**.***instru ...
- [hadoop][基本原理]zookeeper场景使用
代码:https://github.com/xufeng79x/ZkClientTest 1. 简介 zookeeper的特性决定他适用到某些场景非常合适,比如典型的应用场景: 1.集群管理(Grou ...
- vue 同页面不同参数
项目:详情页中有一个模块为更多产品,点击也是跳转到详情页,也就是相同路由,不同参数. 试过的方法:用this.$router.push,并没有任何反应,没有任何请求,页面也未重新加载,用this.$e ...
- http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤
http通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1) 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成 ...
- ZOJ-3314
CAPTCHA Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %lld , %llu Java class ...
- Restful Framework (三)
目录 一.版本 二.解析器 三.序列化 四.请求数据验证 一.版本 回到顶部 程序也来越大时,可能通过版本不同做不同的处理 没用rest_framework之前,我们可以通过以下这样的方式去获取. c ...
- mysql数据库设置远程连接权限
原文 问题现象 mysql 安装完毕,本机登录正常,在远程输入正确账号密码登录连接时报错如下 问题原因 远程IP没有登录权限,root用户默认只能在localhost也就是只能在本机登录,需要设置允许 ...
- hdu5728
详细题解: http://blog.csdn.net/wust_zzwh/article/details/51966450 ……化简公式的能力还不够啊…… #include<bits/stdc+ ...