2017-05-08 11 views
0

循環型の関係を持つグラフがあります。だから私のグラフの各ノード間に2つの異なる方向関係(発信と受信)があるかもしれません。 shortestpath()を使用せずに2つのノード間のパスを見つけようとしています。 1つの関係のみを設定する条件を与える方法は、パス内の各ノード間に表示されますか?ここに私の質問があります:パス内の各ノードに条件が1つのみ表示できるCypherセット

Match p = (A)-[r*]-(b) return p 

ここで私は何のために書くべきですか?

+0

ファーストのようにそれを照会することができます無限の経路を引き上げる。また、各エッジを1回だけ使用するすべてのパスを検索しようとしていますか? – Tezra

+0

私は2つのノード間の最短距離を見つけようとしています。私は私の関係タイプGO_TOに距離プロパティを持っています。私は一度だけではなく、すべてのエッジであるべきだと思います。例えば、私は2つのノードA、Bを持っていて、私は2つの関係も持っています。私はA、B(着信と発信)の間にGO_TOを持っています。だから私がA-F間の経路を照会するとき。 ** A→B→C→D→E→F ** @Tezra –

答えて

0

本当にほしいのは、最短の重み付けされたパスです。 、あなたはあなたの[R *]クエリはしないようにキャップする必要があります)サイファーが、直接これをまだサポートしていませんが、あなたはshortestpathを(使用しない場合は、この

MATCH (start:Point {id: '1'}), (end:Point {id: '2'}) 
MATCH p=(start)-[:GO_TO*1..25]->(end) 
WITH p,reduce(s = 0, r IN rels(p) | s + r.myValueProp) AS dist 
RETURN p, dist ORDER BY dist DESC LIMIT 1 
+0

ありがとう、これは私の答えを得る正しい方法です。しかし、私は巨大な関係とノードを持っています。それは無限のループに私のクエリをする巨大な結果を持っています。だから私は一方向に関係方向を設定したい@Terze –

+0

@LinBernieそれはまた、私はそれができるノードの数をキャップする理由ですパスで使用する。キャップを下げるほどパフォーマンスは向上しますが、さらに良いパスが失われる可能性があります。 – Tezra

関連する問題