【发布时间】:2012-10-16 13:16:13
【问题描述】:
我有一个成员表,其中每个站点成员都是唯一的 ID。 例如
id firstname secondname emailaddress country city gender
第二个表是friends表,结构如下
id meid friendid date
我将使用什么查询来根据共同的朋友获取特定用户的朋友建议并进行相应的排序。在我使用 php 循环并收集共同的朋友之前,但随着网站的发展,php 开始出现行为异常并耗尽内存。
这是我使用的功能
//-----------------------------------------------
function getFriendSuggestions($id)
{
$friendids=getFriendIdArray($id); //returns list of your friends
$networkids=getNetworkIdArray($id);//returns list of all members in your network(friends and their friends)
$diff=array_merge(array(),array_diff($networkids,$friendids));
$diff_mutual=array();
$diff_mutual_total=array();
for ($n=0;$n<count($diff);$n++)
{
$ff=getFriendIdArray($diff[$n]);
$mf=array_merge(array(),array_intersect($ff,$friendids));
$diff_mutual[]=$mf;
$diff_mutual_total[]=count($mf);
}
$diff=array_merge(array(),$diff);
$diff_mutual=array_merge(array(),$diff_mutual);
$diff_mutual_total=array_merge(array(),$diff_mutual_total);
$w=$diff_mutual_total;
arsort($w);
$d=array();
$dm=array();
foreach ($w as $key => $value)
{
$d[]=$diff[$key];
$dm[]=$diff_mutual[$key];
}
$cv=array($d,$dm);
return $cv;
}
【问题讨论】:
-
我猜是基于共同的朋友。
-
你能张贴桌子结构吗?
-
朋友的推荐基于第二个朋友圈,即朋友的朋友。因此,您需要选择所有这些朋友,然后查看他们有多少朋友相互当前成员。
-
是的,这就是我上面发布的函数的作用。问题是当网络变大时效率低下。