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