我正在使用neo4j圖形數據庫版本2.1.7。關於數據的簡要細節: 具有6種不同類型的節點的200萬個節點,僅具有5種不同類型的關係的500萬個關係以及大多數連接的圖,但包含一些孤立的子圖。在neo4j圖表中刪除路徑的更好方法
解析路徑時,我得到路徑中的循環。而對於限制,我用下面的共享解決方案: Returning only simple paths in Neo4j Cypher query
下面是該查詢,我使用:
MATCH (n:nodeA{key:905728})
MATCH path = n-[:rel1|rel2|rel3|rel4*0..]->(c:nodeA)-[:rel5*0..1]->(b:nodeA)
WHERE ALL(a in nodes(path) where 1=length (filter (m in nodes(path) where m=a)))
and (length(EXTRACT (p in NODES(path)| p.key)) > 1)
and ((exists ((c)-[:rel5]->(b)) and (not exists((b)-[:rel1|rel2|rel3|rel4]->(:nodeA)) OR ANY (x in nodes(path) where (b)-[]->(x))))
OR (not exists ((c)-[:rel5]->()) and (not exists ((c)-[:rel1|rel2|rel3|rel4]->(:nodeA)) OR ANY (x in nodes(path) where (c)-[]->(x)))))
RETURN distinct EXTRACT (rp in Rels(path)| type(rp)), EXTRACT (p in NODES(path)| p.key);
上面的查詢解決了我的要求,但並不符合成本效益,並保持運行,如果被運行的巨大子圖。我使用'Profile'命令來提高查詢性能。但是,現在停留在這一點上。性能有所提高,但不是我所期望的neo4j :(
感謝@Brian的迴應。我肯定會處理您分享的建議並分享更新。在* 0 ..上,你是對的我已經更新了它* 1 ...沒有發現自己有幸保持封閉的道路,並且必須保持開放式結束。 – hemant