簡體   English   中英

如何在neo4j中找到兩個節點之間的最短關系?

[英]how to find the shortest relationship between the two nodes in neo4j?

我的圖表中有多個關系。 我想找到兩個節點之間最短的關系。

我有兩種類型的節點:1.person 2.Company

以及這些節點之間的許多關系,例如電話、電子郵件、地址等。

這是我的圖表的屏幕截圖

我試着做:
MATCH (r)-[q:*1..3]-(p) return type(q)
但它給出了一個錯誤信息:

Invalid input '*': expected whitespace or a rel type name (line 1, column 14 (offset: 13))

我也試過MATCH (r)-[*]-(p) return *但它花費了無限的時間。 我還嘗試通過索引進行查詢以加快流程,但仍然沒有運氣。

請讓我知道如何找到節點之間的最短路徑。

此查詢中有 2 個錯誤:

MATCH (r)-[q:*1..3]-(p)  return type(q)
  1. 冒號(“:”)應該只用在類型名稱前面的關系模式中。 由於在您的情況下您不想指定類型名稱,因此您需要省略冒號。
  2. 由於q用於可變長度路徑模式,因此其值將是關系列表

這是一個查詢,它實際上應該返回您的查詢似乎試圖返回的內容:

MATCH ()-[qs*..3]-()
UNWIND qs AS q
RETURN TYPE(q)

現在,如果您想找到 2 個節點之間的最短路徑(如您的問題主題所示),請參閱 @DaveBennett 的回答(假設他解決了我在對他的回答的評論中提到的問題)。

你有沒有征求其關於Neo4j的Cypher支架手冊每機會shortestPath

https://neo4j.com/docs/cypher-manual/current/clauses/match/#query-shortest-path

如果你想找到最短路徑......

MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))  
RETURN path

如果你想在最短的路徑上找到房地產

MATCH path=shortestPath((r:person {name: 'Sandeep Garg'})-[q*1..3]-(p:Company {name: 'Gopal Prjapati'}))  
RETURN realtionships(path)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM