【问题标题】:Searching the facebook graph api with google app engine使用谷歌应用引擎搜索 facebook graph api
【发布时间】:2011-03-02 22:48:31
【问题描述】:

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

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

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

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)

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

我研究过使用 mapreduce 使其并发,但我还没有决定。有没有人有这方面的经验谁有最好的解决方案?

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

【问题讨论】:

  • 无论您使用什么平台,这将涉及获取和处理大量记录,这是无法回避的事实。为什么要这样做?
  • 问题是,我想搜索人们的网络,说我想将登录用户与朋友(a)的朋友(b)链接,其中朋友(a)是链接(参考),而朋友(b)有登录用户感兴趣的东西,假设我在我的数据存储中的他的实体上创建了一个属性。

标签: python facebook google-app-engine


【解决方案1】:

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

话虽如此,您也许可以使用bloom filters 在 GAE 上进行一些工作。

布隆过滤器会缩小您必须搜索的记录数量。这与Intersection on Google App Engine 中提出的类似问题可能会引导您找到解决方案。 (请务必阅读我的comment

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多