dedecms自己自带tag(keywords)提取功能,但分词总是不敷切确。当然,对日更新十数篇且对搜索引擎优化切确执行的用户来讲,手工输入能更好的节制。但对主题比较宽泛、内容更新量年夜的用户来讲,dede split是不年夜完美的。
discuz在线分词是一个在线免费的提词接口。后有数十万中文论坛、supsite用户,对语境、细胞词库的完善有更多的数据。这个小法度是基于discuz在线分词批量更新已发内容的keywords(tag),如果数据量年夜(年夜于5万)的或虚拟主机用户的话,最好情况搭到本地。速度会快一点。
使用体例,cms安装目录,新建c.php,拷入以下内容,自己对应编码用notepad设置相应gbk或utf8。运行 yourwebsite/c.php?id=1
<?phprequire_once(dirname(__FILE__).”/include/common.inc.php”);
$id = isset($id) && is_numeric($id) ? $id : 0;
for ($a=$id; $a<$id+10; $a++){
$row = $dsql->GetOne(” SELECT arc.title,tp.body FROM `@__archives` arc LEFT JOIN `@__addonarticle` tp ON arc.id=tp.aid where arc.id=’$a’ “);if(is_array($row)){$title = $row['title'];$body = $row['body'];$keywords=zhgetkey($title.$body);$dsql->ExecuteNoneQuery(” Update `@__archives` set keywords=’$keywords’ where id=’$a’ “);echo $a.’:’.$keywords.’<br />’;}}if ($a>80000){break;}
echo “<script>”;echo “setTimeout(”location.replace(‘c.php?id=$a’)”,0)”;echo “</script>”;
function zhgetkey($contents){$rows = strip_tags($contents);$arr = array(‘ ‘,’ ‘,”s”, “rn”, “n”, “r”, “t”, “>”, ““”, “””,”<br />”);$qc_rows = str_replace($arr, ”, $rows);if(strlen($qc_rows)>2400){$qc_rows = substr($qc_rows, ’0′, ’2400′);}$data = @implode(”, file(“http://keyword.discuz/related_kw.html?title=$qc_rows&ics=gbk&ocs=gbk”));preg_match_all(“/<kw>(.*)A[(.*)]](.*)></kw>/”,$data, $out, PREG_SET_ORDER);$key=”";for($i=0;$i<5;$i++){$key=$key.$out[$i][2];if($out[$i][2])$key=$key.”,”;}return $key;}
function cutstr_html($string, $sublen)
{
$string = strip_tags($string);
$string = preg_replace (‘/n/is’, ”, $string);
$string = preg_replace (‘/ |/is’, ”, $string);
$string = preg_replace (‘/ /is’, ”, $string);
preg_match_all(“/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/”, $string, $t_string);
if(count($t_string[0]) – 0 > $sublen) $string = join(”, array_slice($t_string[0], 0, $sublen)).”…”;
else $string = join(”, array_slice($t_string[0], 0, $sublen));
return $string;
}
?>