2014-03-24 66 views
1

我有一個超過100,000個節點的neo4j圖。當我通過REST使用以下密碼查詢時,出現Java堆錯誤。該查詢從一組購買產生2個項目集。Neo4J:Java堆空間錯誤:100 k節點

MATCH (a)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN a.id,c.id 

兩種類型的節點類型1的橫產物(a,c)和類型2(b)的順序80K的* 20K

是否有同樣的目的更優化的查詢?我仍然是密碼的新手。 (我可以分別使用所有Type1和Type2節點上的兩個索引) 或者我應該只是增加java堆大小。

我正在使用py2neo進行REST查詢。

謝謝。

回答

0

正如你所說的十字產品是80k * 20k,所以你可能把它們全部拉過電線? 這可能不是你想要的。通常這樣的查詢由開始用戶開始產品綁定。

您可以嘗試運行此查詢中的Neo4j殼:如果您在節點上的標籤

MATCH (a:Type1)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN count(*) 

,您可以使用標籤Type1?駕駛它。 只需查看您正在查看的路徑數。但是20k的80k次是16億次路徑。

而且我不確定您正在使用的版本(哪一個)的py2neo已經在使用流式傳輸?嘗試使用py2neo的事務端點(即cypherSession.createTransaction()API)。