2011-03-02 50 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