Neo4j的BFS在给定的标签节点

问题描述:

在Neo4j的,编程我跑BFS如下:Neo4j的BFS在给定的标签节点

public Traverser runBFSPaths(Node startNode) { 
    TraversalDescription myTraversal = graphDb.traversalDescription() 
     .breadthFirst() 
     .relationships(relationshipType) 
     .evaluator(Evaluators.excludeStartPosition()); 
    return myTraversal.traverse(startNode); 
} 

如果我有节点的多个标签(节点类型),我怎么可以限制上面的BFS,只有一个nodeType(不使用Cypher)?或者在Cypher中表达这一点更容易?

您可能想看看APOC程序中的path expander procedures。这些默认使用bfs扩展,并让您为白名单,黑名单或您感兴趣的最终节点指定节点标签。您还可以指定用于展开的关系。

+0

是否所有APOC都需要通过Cypher运行? - 有没有办法直接在遍历描述中使用它们? – kami

+0

并非直接来自遍历描述本身,因为有问题的过程通过内置标签和关系过滤等创建和使用自己的遍历描述。您始终可以添加自己的自定义评估程序来评估标签并返回相关评估。 – InverseFalcon