2014-11-25 131 views
0

我們目前正在評估neo4j作爲我們引擎的一部分。 可悲的是,我們的密碼查詢結果慢得令人無法接受。Neo4J是「獲取相關產品」查詢的正確選擇嗎?

所以我們正在考慮從密碼轉移到java。 難道是創建一個Java插件,它解決了以下問題的可行:以下節點類型中 我們的Neo4j數據庫映射關係:

  1. 產品
  2. 標籤
  3. 製造商
  4. 客戶

我們的neo4j DB中的每個關係都有一定的成本(例如,產品和Tag_1之間的連接可能比t他連接同一產品和Tag_2,這比產品和特定用戶之間的連接成本低)。

我們想找到N(10?20?100?)最相似的產品到某個來源產品。
相似性不僅由兩個節點之間路徑的短小來定義,而且還由源和目標之間有多少路徑來定義。

由於使用密碼的性能結果非常糟糕,我們開始質疑Neo4J是否是解決此問題的正確工具。 這裏所有Neo4J專家的問題:
似乎可以在Java中創建一個小的路徑查找算法,該算法還需要計算兩個節點之間的路徑數量? 我們需要小於100ms(最大!)的響應時間。

我們的Neo4j服務器看起來像這樣的時刻:

  • Neo4j的版本:社區2.1.1
  • 節點:650000個
  • 產品節點:550000
  • 性質:8000000
  • 關係:6,000,000
  • 關係類型:9

在此先感謝您的想法。

回答

1

看一看this extension。您可以使用GraphAware Framework和算法擴展,或者查看回購代碼並編寫您自己的非託管擴展。

我們在回購中爲與您有類似要求的客戶編寫了尋路算法 - 將查詢時間從幾秒縮短到幾毫秒。