人们网面试题 - 潜在好友挖掘
人人网面试题 -- 潜在好友挖掘
查找一个用户的潜在好友 即A的好友BCDEF皆有G而A却没有则把G推荐给A
用数据库实现:
首先要设计表
CREATE TABLE USER
(
ID INTEGER (PK),
.......
);
CREATE TABLE RELATIONSHIP
(
ID INTEGER (pk),
IDA INTEGER (fk),
IDB INTEGER (fk)
);
查询SQL语句:
在实际情况中,把数据简单存储在单一数据库中几乎不太可能,可以建立类似<A,B> <B,C>...的键值对,存储在文件中,然后采用一个函数来处理,可以用到map
查找一个用户的潜在好友 即A的好友BCDEF皆有G而A却没有则把G推荐给A
用数据库实现:
首先要设计表
CREATE TABLE USER
(
ID INTEGER (PK),
.......
);
CREATE TABLE RELATIONSHIP
(
ID INTEGER (pk),
IDA INTEGER (fk),
IDB INTEGER (fk)
);
查询SQL语句:
SELECT b.IDB, COUNT(b.IDB) FROM RELATIONSHIP a, RELATIONSHIP b WHERE a.IDB = b.IDA AND b.IDB NOT IN (SELECT c.IDB FROM RELATIONSHIP c WHERE c.IDA=a.IDA) AND b.IDB != a.IDA AND a.IDA = &1 GROUP BY b.IDB HAVING COUNT(b.IDB) > 3 ORDER BY COUNT(b.IDB) DESC
在实际情况中,把数据简单存储在单一数据库中几乎不太可能,可以建立类似<A,B> <B,C>...的键值对,存储在文件中,然后采用一个函数来处理,可以用到map