java高效遍历匹配,使用cypher或遍历api仅匹配路径极端的单个节点
假設我在圖表中有以下路徑:
(:Type1)()-[:RelType2]->(:Type2)-[:RelType1]->(:Type1)
給定 (:Type1) 左側的 (:Type1) 節(jié)點,我能夠在路徑上方 MATCH 并在右側獲得相應的 (:Type1) 節(jié)點(注意路徑是對稱的,其中心是節(jié)點 (centernode) ) . 在我的用例中,我們獲得 的 (:Type1) 節(jié)點,在另一側獲取相應的 (:Type1) 節(jié)點,然后進一步處理 .
但是,我可能會得到 (:Type1) 的兩個節(jié)點的 . 在這種情況下,將從相應的節(jié)點開始單獨的查詢,并將評估到另一側的 (:Type1) 節(jié)點,因此將在兩個節(jié)點上繼續(xù)執(zhí)行 .
Q1. 如何避免處理兩個節(jié)點 . 也就是說,如果給出位于同一路徑極端的兩個 (:Type1) 節(jié)點,我怎樣才能確保只執(zhí)行從另一側節(jié)點匹配的其中一個節(jié)點開始的一個查詢,以便只有其中一個節(jié)點進一步處理并且其他節(jié)點被稱為保持在臨時緩沖區(qū)中以便隨后處理(如果第一節(jié)點的處理失敗) .
Added fact: 上面我有一條路徑,兩端有兩個 (:Type1) 節(jié)點 . 我可能有三個或更多路徑從 (centernode) 發(fā)出并在 (:Type1) 節(jié)點結束 . 因此,我希望首先處理這些 (:Type1) 節(jié)點中的一個節(jié)點,并且只有在早期處理失敗時才會處理下一個 (:Type1) 節(jié)點 .
Q2. 這種情況甚至可以用純密碼進行嗎?或者我必須最終使用Neo4J Traversal API?如果是,如何做到這一點,因為我必須確保在兩個不同的traveresals訪問的節(jié)點/關系的唯一性 .
Q3. 如何在Traversal API中添加路徑擴展器以匹配 (:Type1)
at each traversal `next()`
if (node is of Type1)
follow
if (node is of Type2)
follow
(上面是偽代碼 . 我是Traversal API的新手 . 我已經瀏覽了所有文檔和示例 . 所以我猜測擴展器內部我必須放置 if() 過濾器來檢查當前節(jié)點類型并決定接下來擴展哪種關系類型及其方向 . 以上偽代碼用于表示 . )
這是如何在Traversal API中編寫這樣的密碼嗎?還是有更好的方法嗎?
總結
以上是生活随笔為你收集整理的java高效遍历匹配,使用cypher或遍历api仅匹配路径极端的单个节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab三维feather,matl
- 下一篇: 如何编译java,java如何编译运行?