2011-03-02 105 views
2

这是我的第一个问题在这里.. :)嗯..我想知道是否有人以有效的方式实现了这一点。用谷歌应用程序引擎搜索Facebook图表API

我想通过朋友朋友和他们的朋友搜索,看看他们中的一些是否存在于我的数据存储中。我已经想出了几种方法可以做到这一点,但他们都有弱点..:/

我的第一个计划是实体保存为

class Ent(db.Model): 
    facebook_id = db.StringProperty() 
    friends = db.StringListProperty() 
    other_ents_count = db.IntegerProperty() 

class OtherEnt(db.Model) 
    ent = db.ReferenceProperty(Ent) 
    #some properties I would possibly like to filter over 

,然后再只是为每个facebook-实体ID登录到我的应用程序

搜索该那么您需要查询耳鼻喉科实体facebook_id关键

Ent.get_by_key(facebook_id).filter(other_ents_count>0) 

现在的问题是。这图就是从这里爆炸,因为我需要首先为登录的用户朋友说200-500,然后查询他们的朋友200-500 * 200-500 ..

我看着使用mapreduce使它并发,但我还没有决定呢..有没有人有这方面的经验,谁有这个最好的解决方案?

应该提及的是,我可以访问我遇到的任何facebook-id的朋友列表,因此以某种智能图形方式使用数据存储区的解决方案可能会成为一种解决方案。

+0

无论您使用何种平台,都无法避免这样的事实,即这将涉及获取和处理大量记录。你为什么想这样做? – 2011-03-03 02:07:35

+0

事情是,我想搜索人民网络,说我想链接登录的用户与朋友(b)的朋友(a),其中朋友(a)是链接(refference)和朋友b)拥有登录用户感兴趣的内容,可以说我在我的数据存储库中的实体上创建了一个属性。 – 2011-03-03 08:40:47

回答

1

我同意Nick的评论,但我确实觉得这在GAE上特别难。图数据库更适合这个问题。

有人说,你可能可以通过使用bloom filters得到一些GAE的工作。

bloom过滤器会缩小您必须搜索的记录数。这和Intersection on Google App Engine中提出的问题一样,可能会导致您找到解决方案。 (请务必阅读我的comment