0

ここに画像の説明を入力 私は教育機関で NEO4J のコーセラ コースワークを行っています。

パスと長さ、およびショアレスト パスの例はすべて、私のマシンではコース ノート/レクチャーとは異なる結果を示していることに注意してください。

私は3.0.6を使用しています。バグはありますか?エッジの方向を無視しているように見えることに注意してください。私が設定する必要がある設定でしょうか?

前もって感謝します

ロード

 CSV WITH HEADERS FROM "file:///C:/coursera/data/test.csv" AS line
   MERGE (n:MyNode {Name:line.Source})
   MERGE (m:MyNode {Name:line.Target})
   MERGE (n) -[:TO {dist:line.distance}]-> (m)

   match p=(a)-[:TO*]-(c)
   where a.Name='H' and c.Name='P'
   return p limit 1
4

1 に答える 1

1

使用しているクエリ:

match p=(a)-[:TO*]-(c)
where a.Name='H' and c.Name='P'
return p limit 1

一致自体は、そのパターンを使用して、指定された 2 つのノード間の 1 つの可能なパスを見つけます。距離や順序については保証されません (私がこれを実行したところ、最短距離とはかけ離れた、かなり複雑なパスが返されました)。コース ノートにこれが最短パス クエリであると記載されている場合、それは誤りです。

neo4j では、最短パスを適用して保証する唯一の方法は、shortestPath() 関数または allShortestPaths() を使用することです。例えば:

match p= shortestPath((a)-[:TO*]-(c))
where a.Name='H' and c.Name='P'
return p limit 1

編集

ご指摘のとおり、使用しているクエリは無向であるため、パスを見つけるために方向に関係なく、見つかった関係をトラバースします。無向関係パターンでのマッチングと有向関係パターンでのマッチングには大きな違いがあります。有向関係でクエリを実行してみて、違いを確認できます。

match p= shortestPath((a)-[:TO*]->(c))
where a.Name='H' and c.Name='P'
return p limit 1
于 2016-10-08T12:03:03.490 に答える