借花献佛,6.0关键字自动提取插件提供下载
测试环境是6.0测试版本
1.对所有模型,只要数据表有newstext或者smalltext的字段,都进行关键字分析 2.去掉无效的“,”
使用: 1.上传/e/extend/ 后台发布修改自动获取标题关键字: 2.替换/e/admin/ecmsinfo.php(或者自己对照着修改)
前台投稿,修改自动获取标题关键字 3.替换/e/DoInfo/ecms.php,或者自己对照修改。
再详细的不说了,不会的覆盖就好,不要问我
说明:本人不愿盗取别人劳动成功,该插件非[水平凡]自己写的,我只是把代码拷贝了下让他能在6.0下使用。代码没做
任何修改。感谢提供该插件的朋友,我一直在用!!!!
原帖5.1:http://bbs.phome.net/ShowThread/?threadid=25182&forumid=13
http://bbs.phome.net/ShowThread/?threadid=59412&forumid=31
感谢2位
修改地方说明:
如果你想在添加信息时自动获取关键字 打开/e/DoInfo/ecms.php文件 找到 $navtheid=(int)$_POST['filepass']; AddNews($_POST,$logininid,$loginin); 替换成 //修改开始 /********************************************************************************************************** //织梦分词算法 www.dedecms.com //带词性标志的算法,使用方法: //普通分词 tryNumName,识别数量词及人名,$tryDiff 岐义处理 //$strok = $sp->SplitRMM(string $str,bool $tryNumName,bool $tryDiff) //在DedeCms内使用的词典是从热门词中选出来的词典,不适用于通用的分词算法 //本算法经过简化处理,取消了部份消岐规则 ********************************/ require_once(dirname(__FILE__)."./../extend/Keyword/pub_splitword_www.php"); //获得HTML里的文本 function SpHtml2Text($str){ $str = preg_replace("/<sty(.*)\\/style>|<scr(.*)\\/script>|<!--(.*)-->/isU","",$str); $alltext = ""; $start = 1; for($i=0;$i<strlen($str);$i++){ if($start==0 && $str[$i]==">") $start = 1; else if($start==1){ if($str[$i]=="<"){ $start = 0; $alltext .= " "; } else if(ord($str[$i])>31) $alltext .= $str[$i]; } } $alltext = str_replace(" "," ",$alltext); $alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext); $alltext = preg_replace("/[ ]+/s"," ",$alltext); return $alltext; } //获取关键词 function GetKeywords($title,$body){ $keywords = ""; $sp = new SplitWord(); $titleindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM($title)))); $allindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM(spHtml2Text($body)),200))); if(is_array($allindexs) && is_array($titleindexs)){ $i=0;$m=0; foreach($titleindexs as $k){ if(strlen($keywords)>=50) break; else{ if($i){ $keywords .= ",".$k;} else{$keywords .=$k;$i++;} } } foreach($allindexs as $k){ if(strlen($keywords)>=50) break; else if(!in_array($k,$titleindexs)) { if($m){$keywords .= ",".$k;}//帝国要用逗号 else{$keywords .= $k;$m++;}//删除空白","对后面的都有好处。2008-7-3,测试还行。 } } } $sp->Clear(); unset($sp); $keywords = preg_replace("/#p#|#e#/","",$keywords);//dede的分页,要改。 $keywords = addslashes($keywords); return $keywords; } if($_POST['newstext']){ $key1=GetKeywords($_POST['keyboard'],$_POST['newstext']); } elseif($_POST['smalltext']) { $key1=GetKeywords($_POST['keyboard'],$_POST['smalltext']); }//作部分修改,新闻则获取newstext字段,其他信息获取smalltext字段。2008-7-3,测试ok $a2=array(keyboard=>"$key1"); $post=$a2+$_POST;//这个格式可以增加到投稿。2008-7-3 $navtheid=(int)$_POST['filepass']; AddNews($post,$logininid,$loginin); //修改结束 //*************************************************************************************************** //$navtheid=(int)$_POST['filepass']; //AddNews($_POST,$logininid,$loginin);
如果你还想同时在修改信息时也重新获取关键字,在同一个文件
找到 $navtheid=(int)$_POST['id']; EditNews($_POST,$logininid,$loginin); 替换成 //修改开始 /********************************************************************************************************** //织梦分词算法 www.dedecms.com //带词性标志的算法,使用方法: //普通分词 tryNumName,识别数量词及人名,$tryDiff 岐义处理 //$strok = $sp->SplitRMM(string $str,bool $tryNumName,bool $tryDiff) //在DedeCms内使用的词典是从热门词中选出来的词典,不适用于通用的分词算法 //本算法经过简化处理,取消了部份消岐规则 ********************************/ require_once(dirname(__FILE__)."./../extend/Keyword/pub_splitword_www.php"); //获得HTML里的文本 function SpHtml2Text($str){ $str = preg_replace("/<sty(.*)\\/style>|<scr(.*)\\/script>|<!--(.*)-->/isU","",$str); $alltext = ""; $start = 1; for($i=0;$i<strlen($str);$i++){ if($start==0 && $str[$i]==">") $start = 1; else if($start==1){ if($str[$i]=="<"){ $start = 0; $alltext .= " "; } else if(ord($str[$i])>31) $alltext .= $str[$i]; } } $alltext = str_replace(" "," ",$alltext); $alltext = preg_replace("/&([^;&]*)(;|&)/","",$alltext); $alltext = preg_replace("/[ ]+/s"," ",$alltext); return $alltext; } //获取关键词 function GetKeywords($title,$body){ $keywords = ""; $sp = new SplitWord(); $titleindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM($title)))); $allindexs = explode(" ",trim($sp->GetIndexText($sp->SplitRMM(spHtml2Text($body)),200))); if(is_array($allindexs) && is_array($titleindexs)){ $i=0;$m=0; foreach($titleindexs as $k){ if(strlen($keywords)>=50) break; else{ if($i){ $keywords .= ",".$k;} else{$keywords .=$k;$i++;} } } foreach($allindexs as $k){ if(strlen($keywords)>=50) break; else if(!in_array($k,$titleindexs)) { if($m){$keywords .= ",".$k;}//帝国要用逗号 else{$keywords .= $k;$m++;}//删除空白","对后面的都有好处。2008-7-3,测试还行。 } } } $sp->Clear(); unset($sp); $keywords = preg_replace("/#p#|#e#/","",$keywords);//dede的分页,要改。 $keywords = addslashes($keywords); return $keywords; } if($_POST['newstext']){ $key1=GetKeywords($_POST['keyboard'],$_POST['newstext']); } elseif($_POST['smalltext']) { $key1=GetKeywords($_POST['keyboard'],$_POST['smalltext']); }//作部分修改,新闻则获取newstext字段,其他信息获取smalltext字段。2008-7-3,测试ok $a2=array(keyboard=>"$key1"); $post=$a2+$_POST;//这个格式可以增加到投稿。2008-7-3 $navtheid=(int)$_POST['filepass']; EditNews($post,$logininid,$loginin); //修改结束 //*************************************************************************************************** //$navtheid=(int)$_POST['filepass']; //EditNews($_POST,$logininid,$loginin);
首发地址:http://www.abc3210.cn/xz/ecms/2009-09-24/81.html
上传以下附件: [下载 *.rar](文件大小:187.35 KB,下载次数:465)
|
[该贴被修改 3 次,最后修改时间 2009-10-11 11:17:52 ]
失败注定是真理 ************************** 插件问题等请不要加我Q,论坛或我网站提问! QQ:442981383 插件、风格、问题求助尽在随意 问答、小说、SWFupload、发号抽奖、采集自动审核发布
|