Ich versuche, die Scheitelpunktpaare zu finden, die die größte Anzahl gemeinsamer Scheitelpunkte zwischen ihnen haben. Es ist dem "Anzahl der gemeinsamen Freunde" -Beispiel sehr ähnlich, das in vielen Graphendatenbankdemos verwendet wird. Ich kann die Anzahl der gegenseitigen Vertices zwischen einem Paar von bekannten Vertices unter Verwendung dieser Bestimmung:OrientDb Vertices mit den meisten gemeinsamen Freunden
SELECT Expand($query) LET
$query1 = (SELECT Expand(outE().in) FROM #1:2,
$query2 = (SELECT Expand(OutE().in) FROM #1:3,
$query = Intersect($query1,$query2);
Der Count() der obigen Abfrage Ergebnis ist die Anzahl gemeinsamer Vertices.
Ich kann jedoch nicht herausfinden, wie diese Abfrage über meine gesamte Datenmenge aggregieren. Meine beste Lösung war eine Brute-Force-Methode, bei der ich jeden Eckpunkt durchlaufen und die obige Abfrage gegen alle anderen Knoten ausführen kann (technisch gesehen mache ich alle Vertices nach diesem Eckpunkt).
Meine Lösung ist ineffizient und musste in C# anstatt in SQL vollständig codiert werden. Wie kann dies mit OrientDb's SQL gemacht werden?
Vielen Dank! Ich musste es etwas anpassen, aber Sie haben mich dort 99,99%. –