我有一個存儲在Neo4j中的嵌套樹。每個節點可以與其他節點有(n)-[:CHILD]->(c)
關係。允許您使用MATCH (n)-[c:CHILD*]-(m)
從給定節點查詢整個樹。通過嵌套層次結構存儲用戶遍歷路徑
我有,是搞清楚如何存儲路徑,用戶需要爲他們走過一棵樹什麼麻煩。例如,返回路徑的查詢將是(user)-[:USER_PATH*]->(node)
。
但是路徑必須保持沿:CHILD
關係的線條,它不能跳的分支之外。用戶路徑不能從一個分支的葉子跳到另一個分支的葉子,而不是先回縮它的路徑,直到它找到一個分叉到它。
此外,我不認爲最短路徑,將工作,因爲它不是我想要的最短路徑,我希望用戶實際路徑。但它應該忽視用戶退出任何分支機構時放棄的關係。它不應該離開死路。
我怎麼能每個節點走到後更新圖表,所以這些規則留在機智?
可以假定,在向下鑽取一個新的分支,它只能通過一步一個多組兄弟姐妹。然而,它所經過的所有分支仍然是開放的,因此可以選擇他們的兄弟姐妹。
最好的我可以計算的是,它需要:只要能
- 「喜歡」走
:USER_PATH
關係 - ,直到它需要打破這條道路才能到新節點
- 此時它創建任何新的關係
- 然後刪除任何舊的關係不再是路徑上
我不知道如何做到這一點。
我花了大量的時間在試錯法和谷歌搜索無濟於事。
在此先感謝!
按照下面提供的圖像:
- 紅色節點=用戶
- 綠色節點= A有效的節點成爲新的 「目標」
- 藍色節點=無效目標節點
因此,如果您要退出當前的葉節點,它會刪除鏈中的最後一個:RATIONAL_PATH關係。
另外的路徑應該調整到任何被選中的綠色節點,但保持現有的:RATIONAL_PATH機智爲儘可能。
對於RATIONAL_PATH關係應該是什麼路徑,或者應該如何生成RATIONAL_PATH關係,我還是比較模糊......這些個別關系是由其他某種過程選擇的嗎?或者你是否試圖從「MATCH(n) - [c:CHILD *] - (m)'種類的查詢中推斷它們? – InverseFalcon
這聽起來像是你想要的最終結果是單個路徑:RATIONAL_PATH關係到某個最終節點,並且你想要一種方式來清理用戶探索但返回的路徑。那是你的追求?我假設退出過程將創建:RATIONAL_PATH關係的方向返回到前面的節點(與它們來自的方向相反)。你想在什麼時候嘗試清理無關路徑? – InverseFalcon
是,單個:從根節點到樹中某個節點的RATIONAL_PATH路徑。但是,當他們導航時,我不想回到相反的方向,而是想刪除這個關係,以便提供從根到目標的單向路徑節點,我寧願刪除那個距離太遠的關係開始。 –