2016-09-20 6 views
1
MATCH PATHS=shortestpath((a:Place{Name:"Mysore"})- 
     [r:IS_LOCATED_AT|CARRIES|BELONGS_TO*]-(b:Place{Name:"Bangalore"})) 
    WHERE ANY (n IN nodes(PATHS) 
     WHERE 
    ("Network" IN labels(n) or n.Name='mplscore.net' AND n.Name="IP_MPLS_Layer-11") 
      OR 
     ("Equipment" IN labels(n) or n.Name='Chassis111')) 

     RETURN a,r,b 

が挙げ関係フィルタを備えた第一shortestpath shortestpathメソッドが呼び出された使用の関係フィルタ


1) :、それは持っているすべてのパスをfileringれる[R BELONGS_TO * IS_LOCATED_AT | |運びます] IS_LOCATED_AT、CARRIES、BELONGS_TO。IS_LOCATED_AT、CARRIES、BELONGS_TO(これらの3つの関係はすべてパス内に存在する必要があります)の関係がファイリングにのみ考慮されていることを確認してください。

BELOW関係フィルタの組み合わせを持つパスは破棄されていることが分かりました。彼らは、フィルタリングパスのうち

a)CARRIES,IS_LOCATED_AT 
    b)BELONGS_TO,IS_LOCATED_AT 
    c)BELONGS_TO,CARRIES 
    d)IS_LOCATED_AT 
    e)CARRIES 
    f)BELONGS_TO 

2) を捨て、なぜ我々はそれが最短経路を与えている、明確にする必要があります。

関係の組み合わせは、誰かが事前にこの

おかげで精緻化を提供

答えて

1

潜在的な理由で1あれば幸せになる最短path.Iを見つけるために考えられていない上記の理由誰もが手の込んだ:fスルーパスaを行う場合WHERE句を満たさない場合、SHORTESTPATHはそれらを無視します。

潜在的な理由2:WHERE句に論理エラーがあります。このスニペット:ノードのNameプロパティは、同時に2つの値を持つことができないので、

n.Name='mplscore.net' AND n.Name="IP_MPLS_Layer-11" 

は常に、FALSEと評価されます。その結果、WHERE句は論理的に次のようになります。

"Network" IN labels(n) OR "Equipment" IN labels(n) OR n.Name='Chassis111' 
関連する問題