如何在Neo4j DB中找到小于最大值的所有路径?

时间:2018-11-08 15:59:59

标签: neo4j

所有人。我是使用 Neo4j 数据库的新手。

现在,我有一个包含节点和关系的图,我想要从A到其他节点的总成本小于最大值的所有路径

应更改最大值。 我使用 Java 查询 Evaluator 。我知道Maximum类可以依赖于我们何时停止遍历路径。但是我可以将evaluate()赋予接口public class MyEvaluators implements Evaluator { @Override public Evaluation evaluate(Path path) { // TODO Auto-generated method stub Iterable<Relationship> rels = path.relationships(); double totalCost = 0.0; for(Relationship rel: rels){ totalCost += (double) rel.getProperty("cost"); } return totalCost > MAXIMUM ? Evaluation.EXCLUDE_AND_PRUNE:Evaluation.INCLUDE_AND_CONTINUE; }}

我的代码在这里:

{{1}}

我不想限制路径深度。 那么如何快速执行此查询?

1 个答案:

答案 0 :(得分:0)

您正在查看哪个版本?

https://neo4j.com/docs/java-reference/current/tutorial-traversal/

在当前API中,您可以将上下文对象(分支状态)传递给遍历,以保持每个分支的当前状态。因此,您可以在PathEvaluator中累计总费用:

https://neo4j.com/docs/java-reference/3.4/javadocs/org/neo4j/graphdb/traversal/PathEvaluator.html

也许您也想从Dijkstra评估器中得出。

https://github.com/neo4j/neo4j/blob/3.5/community/graph-algo/src/main/java/org/neo4j/graphalgo/impl/path/Dijkstra.java