相关文章推荐阅读(标签)

  最近在写文章的管理, 发现网上关于 "相关文章推荐" 的资料比较少, 于是自己写了一个, 初稿, 代码未经优化, 实现搜索相同(相似)标签的文章,   比如搜索 "深入" 也是可以搜到"深入浅出"的.

  如果是多个标签, 本文会(遍历标签)每次只对一个标签进行搜索, 达到两条数据即返回.

  如有更好的搜索方法, 欢迎共同讨论

 相关文章  标签相关, 剔除本身的id 

  本人比较随意,  写的文章比较丑, 大家别太在意

    /**
     *
     * @param 标签 $label
     * @param 文章ID $article_id
     * @return 文章相关字段
     */
    public function getRelated($label,$article_id)
    {
        //传入的标签数量
        $num = count($label);
        //多个标签 开始
        if($num>1)
        {
            $Article = array();
            for($i=0;$i<$num;$i++)
            {
                $arr = Article::find()
                ->select([‘article_id‘,‘title‘,‘summary‘,‘create_time‘])
                ->where([‘status‘=>1])
                ->andwhere([‘<>‘,‘article_id‘,$article_id])
                ->andwhere([
                ‘or‘,
                [‘like‘,‘label‘,$label[$i]],
                ])
                ->asArray(true)
                ->orderBy(‘create_time desc‘)
                ->limit(2)
                ->all();
                $Article = array_merge($Article,$arr);
                $num1 = count($Article);
                if($num1 > 1)
                {
                    return $Article;
                }
            }
            //如果查到的文章不足两篇, 就随便去一篇最新的补上,
            if(count($Article)<2)
            {
                $Article2 = Article::find()
                ->select([‘article_id‘,‘title‘,‘summary‘,‘create_time‘])
                ->where([‘status‘=>1])
                ->andwhere([‘<>‘,‘article_id‘,$article_id])
                ->asArray(true)
                ->orderBy(‘create_time desc‘)
                ->limit(2)
                ->all();
                $Article = array_merge($Article,$Article2);
                $Article = array_slice($Article,0,2);
                return $Article;
            }
            return $Article;

        }
        //多个标签  结束

        //如果只有一个标签, 从这里开始,到最后结束
        $Article1 = Article::find()
        ->select([‘article_id‘,‘title‘,‘summary‘,‘create_time‘])
        ->where([‘status‘=>1])
        ->andwhere([‘<>‘,‘article_id‘,$article_id])
        ->andwhere([
                ‘or‘,
                [‘like‘,‘label‘,$label],
                ])
        ->asArray(true)
        ->orderBy(‘create_time desc‘)
        ->limit(2)
        ->all();
        //如果查到的文章不足两篇, 就随便去一篇最新的补上,
        //这里重复了, 可以自己优化一下
        if(count($Article1)<2)
        {
            $Article2 = Article::find()
            ->select([‘article_id‘,‘title‘,‘summary‘,‘create_time‘])
            ->where([‘status‘=>1])
            ->andwhere([‘<>‘,‘article_id‘,$article_id])
            ->asArray(true)
            ->orderBy(‘create_time desc‘)
            ->limit(2)
            ->all();
            $Article = array_merge($Article1,$Article2);
            $Article = array_slice($Article,0,2);
            return $Article;
        }
        return $Article1;
    }
时间: 2024-10-13 11:58:39

相关文章推荐阅读(标签)的相关文章

微信公众号相关文章推荐

1. Java 微信开发: http://wiki.jikexueyuan.com/project/java-wechat/ 2. 一小时玩转微信公众号:公司内网 - 学习技能 - 通用技能 - 一小时玩转微信公众号

IOMMU相关文章推荐

http://pages.cs.wisc.edu/~basu/isca_iommu_tutorial/index.htm http://www.infradead.org/~mchehab/kernel_docs/unsorted/Intel-IOMMU.html http://linuxperf.com/?p=67 原文地址:https://www.cnblogs.com/Daisy123/p/8616086.html

织梦模板调用最新文章标签、推荐内容标签、热门文章标签、栏目标签

织梦模板调用最新文章标签.推荐内容标签.热门文章标签.栏目标签 <div> <!--最新文档-->    {dede:arclist row=10 titlelen=42}    <li><a href="[field:arcurl/]">[field:title/]</a></li>    {/dede:arclist}    <!--//最新文档--></div> 推荐内容标签调用:&l

图书馆推荐阅读:香港大学推荐的44本经典书籍

如果你半夜醒来发现自己已经好长时间没读书,而且没有任何负罪感的时候,你就必须知道,你已经堕落了.好书分享,值得收藏! 1.<拖延心理学> 作者: [美]简·博克/ [美]莱诺拉·袁 你想要向拖延的恶习开刀吗?这两位加利福尼亚心理学家在她们治疗拖延者的实践中精准地捕捉到了拖延的根本原因.这本书可以帮助读者减轻拖延,更好地享受生活. 2.<梦的解析> 作者: [奥地利]弗洛伊德 弗洛伊德的<梦的解析>被誉为精神分析的第一名著.它通过对梦境的科学探索和解释,找破了几千年来人类

技术文章的阅读姿势

阅读技术文章可以说是我们程序员的日常之一,Peak 君每天也会进行定量的阅读.特写一篇小文分享下心得,介绍下过去几年,在纠正阅读习惯上所做的一些努力和取得的成果,或许可以帮助一些朋友,节省少许阅读时间,提升一点学习效率. 差不多两年前,我开始搭建 Android 相关的知识体系.最开始的想法是从基础知识的积累开始,正好这几年社区的技术分享盛行,「掘金」.「开发者头条」.「简书」等渠道上每天都有大量的新文章发布,文章主题五花八门,内容深浅不一,看上去都很不错.可坚持读了几天之后,深感自己踏进了错误

基于KNN的相关内容推荐

如果做网站的内容运营,相关内容推荐可以帮助用户更快地寻找和发现感兴趣的信息,从而提升网站内容浏览的流畅性,进而提升网站的价值转化.相关内容 推荐最常见的两块就是“关联推荐”和“相关内容推荐”,关联推荐就是我们常说的购物篮分析,即使用购买了某商品的用户同时购买了什么这个规则来发现商品间 的潜在联系,之前有相关的文章介绍——向上营销.交叉营销与关联推荐:关联推荐是基于用户行为分析的推荐,而相关内容推荐是基于内容固有特征的推荐,只与内容本身有关,与用户的行为完全无关,所以相关内容推荐的模型是一种“冷启

相关文章、关联文章、产品功能开发方案

内容管理系统,如文章管理.产品管理的时候,经常会出现这样的场景:某篇文章为系列文章,或者为系列产品,然后需要这个系列的文章/产品在展示的时候,展示出同系列的文章或者产品.同时,在后台管理的时候,需要在有关联关系后,能对关联关系进行管理(增删改查). 这样的需求,因为考虑到信息维护的唯一性,原计划是新增数据表,用中间数据表对关键结构进行存储管理,这样更规范,也不用对原来的文章数据进行破坏,不增加大数据量的文章表字段.不过后来考虑到后期在管理的时候,工程量开发更大,就抛弃了这个方案. 还是用最简单的

dedecms如何利用tag来调取相关文章

DEDE文章里,很多人都是只填了TAG,而没有填写关键字,更不要说手动去设置其相关文章了. 所以,就希望有一个功能,可以列出当前文章的按TAG进行相关匹配的文章,作为其相关文章. 例如:A文章的tag是"证券 金融 次贷",B文的TAG是"美女 时尚",C文的TAG是"美女 次贷",D文的tag是"证券 贬值",那么A文章用次此修改后得到的相关文章就是C和D,B文的相关文章是C,C文的相关文章是A和B,D文相关文章是A 修改方

Web前端开发人员和设计师必读文章推荐【系列十】

<Web前端开发人员和设计师必读文章推荐系列十>给大家带来最近两个月发布在<梦想天空>的优秀文章,特别推荐给 Web 开发人员和设计师阅读.梦天空博客关注 前端开发 技术,展示最新 HTML5 和 CSS3 技术应用,分享实用的 jQuery 插件,推荐优秀的 网页设计 案例,共享精美的设计素材和优秀的 Web 开发工具.希望这些文章能帮助到您. HTML5 & CSS3 应用 2012五大主流浏览器 HTML5 和 CSS3 兼容性大比拼 不可思议!23个纯 CSS3 打