2

グラフ データベースを学習するための何かを開発しています。次のセグメントでクエリを実行する最短パスを見つけています。

start n=node(5),m=node(45) match p=shortestPath(n-[*..1000]->m) return p,length(p)

しかし、私はそれについて問題があります。そのクエリは最短パスを返し、ROUTE プロパティとは見なされません。つまり、同じプロパティが存在する場合、リレーションで最短パスを取得したいのです。

ノード A ==> :RELATION(ROUTE_ID=180) ==> ノード B ==> :RELATION(ROUTE_ID=180) ==> ノード C ==> :RELATION(ROUTE_ID=197)

通常の最短経路関数を呼び出すと、ランダムなプロパティによる関係が得られます。プロパティにも注目したいのですが、そのキーワードは何ですか? その問題を解決するにはどうすればよいですか、またはそのクエリを改善するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

ROUTE_ID プロパティを持つすべての関係に特定の関係タイプ (「ROUTE」など) がある場合は、次のようにすることができます。

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[:ROUTE*..1000]->m)
RETURN p,length(p);

それ以外の場合は、次のようにできます。

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[r*..1000]->m)
WHERE all(x IN r WHERE has(x.ROUTE_ID))
RETURN p,length(p);

前者のアプローチははるかに高速です。

于 2014-05-08T20:00:09.700 に答える