Java 将基于光标的节点遍历限制到输出边

Java 将基于光标的节点遍历限制到输出边,java,neo4j,Java,Neo4j,我正试图使Max de Marzi的理论适应有向图上的一个问题。使用关系和节点游标 RelationshipTraversalCursor relsCursor=cursors.allocateRelationshipTraversalCursor(); NodeCursor NodeCursor=cursors.allocateNodeCursor(); read.singleNode(startingNode.getId(),nodeCursor); nodeCursor.next(); n

我正试图使Max de Marzi的理论适应有向图上的一个问题。使用关系和节点游标

RelationshipTraversalCursor relsCursor=cursors.allocateRelationshipTraversalCursor();
NodeCursor NodeCursor=cursors.allocateNodeCursor();
read.singleNode(startingNode.getId(),nodeCursor);
nodeCursor.next();
nodeCursor.allRelationships(relsCursor);
当(relsCursor.next()){…}到输出边时,我如何限制对关系
的迭代


到目前为止,我使用
org.neo4j.graphdb.Node
Iterable getRelationships(Direction var1)
函数实现了这一点,但由于我对内部neo4j Java API的直觉有限,我想比较一下相对性能。

这里有一个相关文档中的有用片段,展示了如何确定光标当前关系的方向:

private static String computeKey( ..., RelationshipTraversalCursor r )
{
    Direction d;
    if ( r.sourceNodeReference() == r.targetNodeReference() )
    {
        d = Direction.BOTH;
    }
    else if ( r.sourceNodeReference() == r.originNodeReference() )
    {
        d = Direction.OUTGOING;
    }
    else
    {
        d = Direction.INCOMING;
    }

    .
    .
    .
}
所以,像这样的东西应该适合你:

while (relsCursor.next()) {
    if (relsCursor.sourceNodeReference() == relsCursor.originNodeReference()) {
        // Do OUTGOING relationship processing
    }
}