你有几种方法来遍历java中的图。这是你的选择:
执行一个暗号查询
使用ExecutionEngine执行的Cypher查询:
final ExecutionEngine engine = new ExecutionEngine(graphDB);
ExecutionResult result = engine.execute("YOUR_CYPHER_QUERY");
使用Cypher支架DSL语法
再次,你”基本上写一个Cypher查询,但这一次,你使用一个很好的DSL语句。检查出https://github.com/neo4j/cypher-dsl。
Execute q = start(node("john", john)).
match(path().from("john").out("friend").link().out("friend").to("fof")).
returns(properties("john.name", "fof.name"));
ExecutionResult result = engine.execute(q.toString()).toString();
使用遍历API
您可以控制总图的遍历。举例:
for (final Path position : Traversal.description().depthFirst()
.relationships(RelationType.RELATIONSHIP_TYPE, Direction.INCOMING).traverse(node)) {
System.out.println(position.endNode();
}
这取决于你,但我更喜欢简单的Cypher语句。
为什么你想通过Java来做到这一点,如果Cypher可以处理它呢?您可以使用ExecutionEngine从Java使用Cypher。 –
我同意,为什么不使用Cypher?这在Cypher中是一个小问题,每当Cypher进行优化时,您都可以获得性能提升的好处。通常,当我无法获得所需的性能时,我只使用遍历API。这个查询非常简单,我不会认为性能会成为问题。 – joe
这是我项目经理的要求,很可能是因为他需要为特定的一组数据实现他自己的查询语言。他不希望通过Cypher构建查询语言,并希望通过Java API函数调用实现这一点。 – user2560730