? ? ? ? 表里面就两个字段,一个字段是用户id,另外一个字段是好友id,假如A跟B互为好友,那在数据库里面就会有两条数据
????????
?
上面的图的意思是:h跟a的互为好友,a跟b,c,d互为好友...
????????现在我要找a的推荐好友,这个时候怎么办呢?首先我们先找到,a的上级就是h,然后找到a的下级b,c,d,(这个对应到数据库表里面:a的上级就是好友id是a的id的那些数据,a的下级就是用户id是a的id的那些数据)? ? ? ? 1. 我们先找到h的上级用户:在图上没有上级用户,下级用户:a
? ? ? ? 2.?找到b的上级:a,下级用户:z,e
? ? ? ? 3.?找到c的上级:a,z,下级用户:没有
? ? ? ? 4.?找到d的上级:a,下级用户:没有
? ? ? ? 5. 这个时候我们把这些已经找到的数据,全部合在一起:那就是4个a,2个z,1个e,然后排除 a?本身(因为给a推荐好友,总不能自己推荐自己吧),所以就会给a推荐 z跟e这两个人,然后还能根据共同好友数量,来做排序
? ? ? ? 6.?其中z跟a有两个共同好友(c跟b) ,e跟a有1个共同好友(b),同理给e推荐好友,也只会推荐到a这个人
????????原理就是集合的交集,然后这种思路具体的算法就靠自己去实现了,不过也不是什么难事,有点编程功底的都可以实现的,只不过是速度的快慢而已。????????最简单的实现就是先查到a的上下级,然后通过for循环,依次找到各自的上下级用户,最后做统计处理
?
?