2016-03-24 2 views
0

Für eine Schulaufgabe versuche ich zu verstehen, wie Neo4j so weit funktioniert Ich konnte das meiste davon verstehen, aber aus irgendeinem Grund kann ich einen Pfad nicht ausschließen.Neo4j finde den kürzesten Pfad aber schließe einen Pfad aus

Ich habe eine Testzuweisung gemacht von Straßen, die von Stadt -> Stadt verwendet werden könnten. Jetzt möchte ich, wie in der folgenden Situation einen Pfad auszuschließen:

„Finden Sie alle Routen von Utrecht nach Rotterdam, die nehmen Gouda nicht in der Route“

ich mit einer Reihe von Lösungen kam aber sie tun nicht und der am nächsten kam ich alle Wege einschließlich des Gouda-Pfad mit dem folgenden Code wurde zu finden

MATCH (Utrecht {Naam:"Utrecht"}), (Stad)-[:CONNECTIE_MET]->(Rotterdam:Stad{Naam:"Rotterdam"}), 
p = allShortestPaths((Utrecht)-[:CONNECTIE_MET*..5]-(Rotterdam)) 
WHERE NOT(Stad.Naam='Gouda') 
RETURN p,Utrecht 

Was ich falsch tue? Ich habe mehrere Dinge ausprobiert, aber es funktioniert nicht und Code von anderen Posts scheint nicht für diese Situation zu funktionieren.

Antwort

2

Der kürzeste Pfad beantwortet nicht Ihre Frage "Alle Routen finden ...", da keine Routen enthalten sind, die länger als der kürzeste Pfad sind. Abgesehen davon ist Ihre Frage etwas, das der kürzeste Pfad nicht gut bewältigen kann, weil es zuerst den kürzesten Pfad findet und dann den Filter anwendet, möglicherweise den kürzesten Pfad auswählt und Ihnen keine Ergebnisse gibt, während die meisten Benutzer den kürzesten Pfad suchen Pfad mit dem angewendeten Filter. Dies könnte Ihnen jedoch helfen, zu starten:

MATCH p = (:Stad {Naam:"Utrecht"})-[:CONNECTIE_MET*..5]->(:Stad {Naam:"Rotterdam"}) 
WHERE NONE(x IN NODES(p) WHERE x.Naam = "Gouda") 
RETURN p; 
+0

danke dies hilft viel! und gibt mir definitiv andere Wege mit denen ich arbeiten kann! :) – Tvt