我正在使用自己的评估程序在Neo4J中执行自定义遍历。在遍历中有两个节点,它们通过两个不同的关系连接。我看到的是,遍历期间只有两种关系之一会被遍历。
但是,我的自定义评估会根据是否同时存在两种关系来更改其行为。
遍历期间,Neo4J似乎维护着一组访问的节点,如果候选路径在已经访问过的节点处结束,则该路径永远不会发送给我的评估者。有没有解决的办法?如何让自定义评估程序检查到节点的每条可能路径?
这是一个简单的示例:
说图看起来像这样:
E----D----A====B----C
遍历始于A。A有两个不同的关系将其与B(两种不同的类型)联系起来。其余所有节点仅通过1种关系连接。评估者的目标是返回A-D,A-B和B-C,但不返回D-E。确定B-C是否有效来自以下事实:A和B之间存在两种关系。
如何解决呢?
最佳答案
您可能需要更仔细地考虑您的用例。
一个建议是,当您使用the traversal framework in java时,基本上可以构建一个TraversalDescription
,然后通过关系(而不是路径或节点)遍历从其返回的内容。如果您的主要抱怨是每个节点仅被访问一次,则可以更改TraversalDescription
以指定RELATIONSHIP_GLOBAL,以确保遵循所有关系,无论是否导致您多次击中节点。
更广泛地说,遍历器不会遍历同一材料,因为如果这样做,则在指定终止条件时需要格外小心。如果多次击中某些节点或关系是可以的,那么什么时候知道您完成了?
关于java - Neo4J遍历跳过关系类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27450607/