比如说,当我们在微博上访问某个用户的个人页面时,页面上就会展示出我们和这个用户都在关注的人,就像图 5-12 所示那样。


    图 5-12 微博上的共同关注示例


    除了共同关注之外,一些社交网站还会通过算法和数据分析,为用户推荐一些他可能会感兴趣的人,比如图 5-13 就展示了 twitter 是如何向用户推荐他可能会感兴趣的关注对象的。


    图 5-13 twitter 的推荐关注功能示例_images/IMAGE_TWITTER_RECOMMEND_FOLLOW.png


    要实现共同关注功能,程序需要做的就是计算出两个用户的正在关注集合之间的交集,这一点可以通过前面介绍的 命令和 SINTERSTORE 命令来完成,代码清单 5-7 展示了使用这一原理实现的共同关注程序。


    代码清单 5-7 共同关注功能的实现:/set/common_following.py


    以下代码展示了共同关注程序的具体用法:

    推荐关注

    代码清单 5-8 展示了一个推荐关注程序的实现代码,这个程序会从用户的正在关注集合中随机地选出指定数量的人作为种子用户,然后对这些种子用户的正在关注集合执行并集计算,最后再从这个并集里面随机地选出一些人作为推荐关注的对象。



    以下代码展示了这个推荐关注程序的使用方法:

    在执行这段代码之前,用户 peter 关注了 、 davidjackmarysam 这五个用户,而这五个用户又分别关注了如图 5-14 所示的一些用户,从结果来看,推荐程序随机选中了 、 sammary 作为种子用户,然后又从这三个用户的正在关注集合的并集中,随机地选出了 10 个人作为 peter 的推荐关注对象。


    图 5-14 peter 的正在关注关系图


    需要注意的是,这里展示的推荐关注程序使用的是非常简单的推荐算法,它假设用户会对自己正在关注的人的关注对象感兴趣,但实际的情况可能并非如此。为了获得更为精准的推荐效果,实际的社交网站通常会使用更为复杂的推荐算法,有兴趣的读者可以自行查找这方面的资料。