W wielu przypadkach struktura domeny może zostać wykorzystana do poprawy wydajności. Załóżmy, że wiesz, że generalnie Twoje jednostki A
mają mniej relacji x
w porównaniu do liczby relacji y
w jednostkach B
. Następnie możesz przejść przez dwa etapy z węzła A i zobaczyć, gdzie pojawia się węzeł B
, i odfiltrować węzły C
w ten sposób. Oto kod dla tego podejścia:
Set<Node> found = new HashSet<Node>();
for (Relationship firstRel : a1.getRelationships(Reltypes.x, Direction.OUTGOING))
{
Node cNode = firstRel.getEndNode();
for (Relationship secondRel : cNode.getRelationships(Reltypes.y, Direction.INCOMING))
{
Node bNode = secondRel.getStartNode();
if (bNode.equals(b1))
{
found.add(cNode);
break;
}
}
}
Innym sposobem byłoby uruchomienie dwóch wątków, które skanują relacje z obu stron.
Trzecim podejściem byłoby stworzenie wyspecjalizowanego indeksu, który pomógłby w odpowiadanie na tego typu zapytania, co oczywiście zaszkodziłoby wydajności wkładki.
Chcę dostać wierzchołki z obiektu GremlinePipeline, Czy możesz mi powiedzieć, jak to w achive Java API. Poniżej znajduje się kod, którego używam: GremlinPipeline pipeline = new GremlinPipeline (vert) .out ("LIVES_IN_CITY"). In ("LIVES_IN_CITY"). Filter (nowy PipeFunction() {publiczny Boolean compute (Vertex v) {return v. getProperty ("name"). equals (miasto);}}). back (2) .out ("LIVES_IN_CITY"); – RCS