Skip to main content
 首页 » 编程设计

python之使用谷歌应用引擎搜索 facebook graph api

2025年05月04日10txw1958

这是我在这里的第一个问题.. :) 嗯..我想知道是否有人以有效的方式实现了这一点。

我想搜索 friends friends 和他们的 friend ,看看他们中的一些人是否存在于我的数据存储中。我想出了几种方法来做到这一点,但它们都有弱点..:/

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

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 实体

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

现在的问题是.. 这个图从这里开始爆炸,因为我需要先查询登录用户 friend 说 200-500,然后查询他们的 friend 200-500*200-500..

我研究过使用 mapreduce 使其并发,但我还没有决定这一点。是否有人对此有经验并找到了最好的解决方案?

应该提到的是,我可以访问我遇到的任何 facebook-id 的 friend 列表,因此以某种类似于智能图的方式使用数据存储的解决方案可能是可行的方法。

请您参考如下方法:

我同意 Nick 的评论,但我确实觉得这对 GAE 来说尤其困难。图数据库更适合这个问题。

话虽这么说,您也许可以使用 bloom filters 在 GAE 上工作.

布隆过滤器会缩小您必须搜索的记录数量。这,连同类似于 Intersection on Google App Engine 中要求的内容。可以引导您找到解决方案。 (确保阅读我的 comment )