基于Tags实现内容推荐的方法(代码)


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

/**

     * [更据指定文章返回相似的文章推荐]

     * @param  $articleid 指定的文章ID

     * @param  $top       要返回的推荐条数

     * @return Array      推荐条目数组

     */

function getArticleRecommend($articleid, $top = 5){

        if($cache = CacheHelper::getCache()){

            return $cache;

        }

        try{

            $articleid = intval($articleid);

            $m = new TagMapModel();

            $all_tags = $m->getAllGroupByArticleId();//调用上面的函数返回所有文章的tags

            $finded = $all_tags[$articleid];//因为上面是包含所有文章了,所以肯定包含了当前文章。

 

            unset($all_tags[$articleid]);//把当前文章从数组中删除,不然自己和自己肯定是相似度最高了。

 

            $jaccard_arr = []; //用于存相似度

            foreach ($all_tags as $key => $value) {

                $intersect =array_intersect($finded, $value); //计算交集

                $union = array_unique(array_merge($finded, $value)); //计算并集

 

                $jaccard_arr[$key] = (float)(count($intersect) / count($union));

            }

 

            arsort($jaccard_arr); //按相似度排序,最相似的排最前面

 

            $jaccard_keys = array_keys($jaccard_arr);//由于数组的key就是文章id,所以这里把key取出来就可以了

            array_splice($jaccard_keys, $top);//获取前N条推荐

 

            //到这里我们就已经得到了,最相似N篇文章的ID了,接下去的工作就是通过这几个ID,从数据库里把相关信息,查询出来就可以了

     

            $articleModels = new \Api\Model\ArticleModel();

            $recommendArticles = $articleModels->getRecommendByTag($jaccard_keys);

            CacheHelper::setCache($recommendArticles, 604800); //缓存7天

            return $recommendArticles;

        } catch (\Exception $e) {

            throw new \Exception("获取推荐文章错误");

        }

    }

相关推荐:

PHP简单实现“相关文章推荐”功能的方法

以上就是基于Tags实现内容推荐的方法(代码)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

mysql中的人生见证

如何查看mysql的日志文件

mysql二级考试怎么考

ubuntu安装mysql的方法

mysql中使用group by 是总是出现1055的错误(推荐)

decimal是什么类型

mysql 教程之列类型中的字符串型

如何进入mysql数据库

添加mysql的用户名和密码是什么语句?

mysql怎么删除数据表中的行数据(记录)?

更多相关阅读请进入《算法》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...