Finde den kürzesten Pfad zwischen den Knoten mit einem zusätzlichen Filter

8

Ich versuche, Flüge zwischen Flughäfen an bestimmten Daten zu modellieren. So weit sieht mein Testgraph aus:

Den kürzesten Pfad zwischen zB LTN und WAW zu finden ist trivial mit:

%Vor%

Was gibt mir:

Aber ich habe keine Ahnung, wie man nur Wege mit Flügen bekommt, die eine Beziehung FLIES_ON mit gegebenem Datum haben.

Link zur Neo4j-Konsole

    
Ralphz 20.01.2015, 20:52
quelle

3 Antworten

4

Hier ist, was ich mit Ihrem gegebenen Modell machen würde. Die Abfragen der anderen Kommentatoren scheinen nicht richtig zu sein, da sie ANY() anstelle von ALL() verwenden. Sie haben ausdrücklich angegeben, dass Sie nur Pfade verwenden möchten, in denen alle Flight -Knoten im Pfad an einen bestimmten Date -Knoten mit einer :FLIES_ON -Beziehung angehängt sind:

%Vor%

Ссылка

    
Nicole White 21.01.2015, 09:10
quelle
0

obwohl dies nicht meine bevorzugte Struktur für diese Art von Daten wäre; Wenn ich deine Frage beantworte, könnte ich stattdessen diesen Weg gehen. Finde die Pfade, filtere den Pfad und erhalte den ersten nach Länge geordnet.

in den Konsolentests wird schneller ausgeführt als der oben vorgeschlagene, da der Abfrageplan einfacher ist.

Anyhoo ich hoffe, dass Sie zumindest in eine gute Richtung weisen:)

%Vor%     
cechode 20.01.2015 22:12
quelle
0

Das Problem besteht darin, dass die Verwendung von shortestPath oder allShortestPaths niemals die Date-Knoten enthält.

Was Sie tun müssen, ist das Muster mit dem Datumsknoten zu filtern (ich weiß jedoch nicht, wie Sie das Datum speichern, also nehme ich das Ymd-Format:

) %Vor%

Eine andere Lösung und weniger kostspielig ist es, das Datum in Ihr Match aufzunehmen und sich damit den Weg zu bauen:

%Vor%     
Christophe Willemsen 20.01.2015 21:52
quelle

Tags und Links