我正在使用最新版本的Neo4j来构建节点和与Java API的关系图。
我的问题是我需要将节点遍历到一定深度。数据库中相同深度的两个节点之间可能存在关系,但我不想在遍历中返回该关系。
我尝试通过实现评估器界面来创建自定义评估器,但它覆盖的唯一方法是Evaluation evaluate(Path path)
。它似乎没有与之相关的深度概念。
关于如何将节点与其深度相关联(从特定节点遍历时)或修剪两个节点处于同一级别的关系,我将不胜感激。
您可以使用 Evaluators.atDepth() 获取仅包含具有特定深度的路径的预定义评估器。
在自定义计算器中,您可以简单地检查传递的路径参数的长度,以决定是否要包含此路径,例如:
Evaluation evaluate(Path path) {
return path.length() == 4 ? Evaluation.INCLUDE_AND_PRUNE : Evaluation.EXCLUDE_AND_CONTINUE);
}
你有没有尝试过Cypher,比如
start n = node(1) match p=n-[*4]->(x) return x, length(p)
?
路径有一个 length(),这是深度。长度等于路径中的关系数,即节点数 - 1。