Database Reference
In-Depth Information
==>Elvis Presley
==>Double Trouble
==>Roddy McDowall
==>The Big Picture
==>Kevin Bacon
Wir wissen nicht, wer Roddy McDowall ist, doch das ist das Schöne an unse-
rer Graph-Datenbank. Wir müssen das nicht wissen, um eine gute Antwort
zu erhalten. Wenn Sie wollen, können Sie noch tiefer in die Groovy-Welt ein-
steigen, wenn die Antwort nur eine einfache Liste sein soll. Die Daten sind
alle da.
Random Walk
Wenn Sie eine gute Teilmenge aus einer großen Datenmenge brauchen, dann
ist der sog. „Random Walk“ ein guter Trick. Sie fangen mit einem Zufallszah-
lengenerator an.
rand = new Random()
Dann wählen Sie eine Zielquote der Gesamtmenge. Wenn nur etwa ein Drittel
der etwa 60 Filme von Kevin Bacon zurückgeliefert werden soll, können Sie
jede Zufallszahl kleiner 0,33 herausfiltern.
bacon.outE.filter{rand.nextDouble() <= 0.33}.inV.name
Das sollte so um die zwanzig zufällige Titel aus Bacons Filmografie zurück-
liefern.
Geht man von Kevin Bacon aus zwei Schritte (zu den Co-Stars seiner Co-
Stars), wird die Liste schon recht lang (bei unseren Daten über 300000).
bacon.outE.inV.inE.outV.loop(4){
it.loops < 3
}.count()
==> 316198
Wenn Sie aber nur etwa ein Prozent dieser Liste benötigen, fügen Sie einen
Filter ein. Beachten Sie, dass der Filter selbst ein Schritt ist, d. h., Sie müssen
die loop-Zahl um 1 erhöhen.
bacon.outE{
rand.nextDouble() <= 0.01
}.inV.inE.outV.loop(5){
it.loops < 3
}.name
Search WWH ::




Custom Search