码迷,mamicode.com
首页 > 其他好文 > 详细

根据文章标签相似度获取推荐文章

时间:2019-04-24 23:44:18      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:组合   排序   sre   oar   sel   hal   ali   article   soar   

主要是使用similar_text函数判断两个字符串的相似度,排序后选出相似度排名前5为的数据

similar_text虽然对中文的相似度检测不是太准确,但是可以作为一个参考,挑选出相似文章

也可以直接对文章标题进行相似度检测获取推荐文章,通过文章标题的实现起来更简单一些

我这里给出的案例是根据标签相似度获取推荐文章的代码

技术图片

 

//相关文章获取,使用similar_text函数
        $key=‘‘;
       //将本文的标签组合成字符串,因为每个标签在数据表是一条数据
        foreach ($tagsres as $v){
            $key=$key.‘,‘.$v[‘tags_name‘];
        }
        //halt($key);
//根据文章id分组获得各个文章的标签字符串
        $alltags=Db::query("select at_id,group_concat(tags_name) from blog_tags group by at_id");
        //$alltags=Db::table(‘blog_tags‘)->field(‘concat(tags_name),at_id‘)->select();
        //halt($alltags);
//获取所有文章标签与该文章标签的相似度
        $percent=array();
        foreach ($alltags as $v){
            $percent[$v[‘at_id‘]]=similar_text($key,$v[‘group_concat(tags_name)‘]);
        }
//去掉本文
        unset($percent[$at_id]);
//对相似度从大到小排序,arsort可以保留key,rsort不行
        arsort($percent);
//选取排名前五个 
        $percent=array_slice($percent,0,5,true);
        //halt($percent);
        $arr=array();
        foreach ($percent as $k=>$v){
            $arr[]=$k;
        }
        //halt($arr);
//查询排名前5的文章
        $alsoarticle=Db::table(‘blog_article‘)->alias(‘a‘)->join(‘blog_cate b‘,‘a.cate_id=b.cate_id‘)->where([‘a.at_id‘=>$arr])->select();
        //halt($alsoarticle);    
$this->assign(‘alsoarticle‘,$alsoarticle);

 

根据文章标签相似度获取推荐文章

标签:组合   排序   sre   oar   sel   hal   ali   article   soar   

原文地址:https://www.cnblogs.com/jcydd/p/10765672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!