Przy użyciu tinkerpop blueprints API, jaki jest najlepszy sposób, aby znaleźć krawędź między dwoma wierzchołkami? Chciałbym uniknąć vertex.getEdges()
i iterować, aż znajdę właściwy.Jaki jest właściwy sposób na znalezienie krawędzi między dwoma wierzchołkami?
Np .: Sprawdź, czy v1
jest przyjacielem v2
Vertex v1 = g.addVertex(null);
Vertex v2 = g.addVertex(null);
Edge edge = g.addEdge(null, v1, v2, "friends");
Edge edge = g.addEdge(null, v1, v2, "follows");
// Node with lots of edges - Supernode - problem?
List<Edge> edges = new ArrayList<Edge>();
for(Edge edge : g.getVertex(v1.getId()).getEdges(Direction.OUT, "friends")){
if(edge.getVertex(Direction.IN).getId().equals(v2.getId()){
edges.add(edge);
}
}
powinienem używać Vertex Query?
Via gremlin mogłem zrobić:
g.v(v1.getID()).outE("friends").inV.filter{it.id == v2.getID}
IndexHits<Relationship> relationships = relationshipIndex().get("type", edgeType, node1, node2);
Dzięki za pomoc! Jestem wciąż nowy w tym.
Wygląda na to, że można go pobrać za pomocą podstawowego interfejsu API. Po co korzystać z "nadmiarowego" interfejsu API blueprints w tym przypadku? – tstorms
Podstawowe API jest możliwe z Neo4j, ale na przykład z Titanem, potrzebuję użyć bezpośrednio planów – Luccas
Myślę, że jesteś na dobrej drodze. Użyj wskaźników Vertex i indeksów vertex centric, jeśli to możliwe, aby poprawić czasy zapytań. https://github.com/thinkaurelius/titan/wiki/Vertex-Centric-Indices –