[英]Finding largest path in huge cyclic neo4j directed graph with infinite depth using cypher query
我有一個neo4j圖,其中不同的節點通過有向關系進行連接。此圖包含周期。 我想找到最大路徑中具有此關系的所有實體,這些關系是一組給定實體與一組目標實體的關系。 下面提供了我正在使用的查詢:注意:示例圖中的節點數= 1000,關系= 2500,深度=無限。 同樣,我們的最終圖形可能包含最多25000個節點。
match (n:dataEntity) where id(n) in
[28, 4, 27, 151, 34, 36, 57, 59, 71, 73, 75, 119, 121, 140, 142, 144]
match (d:dataEntity) where NOT (d)-[:dependsOn]->(:dataEntity)
with distinct d ,n
match res =(n)-[:dependsOn*]->(d)
with d,n,nodes(res) as x
return x
該查詢的問題是它可以很好地工作到深度5,但是由於不確定的深度,它花費了太多時間,即超過20分鍾。 在此先感謝,如果您需要任何其他信息,請恢復!
基本問題是您正在嘗試執行不合理的昂貴查詢。
根據您的數據特征:
dataEntity
節點平均具有約2.5個傳出關系 n
到任何節點d
的路徑的最大長度為2500 例如,假設從一個特定的n
到一個特定的d
的特定路徑(可能有大量可能的路徑)的長度為500。要找到該路徑,操作數應為(2.5 ^ 500),或大約10 ^ 199 。
您需要重新考慮您要嘗試做的事情,看看是否有更聰明的方法來做您想做的事情。 也許更改數據模型會有所幫助,但這全部取決於您的用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.