所有人。我是使用 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}}
我不想限制路径深度。 那么如何快速执行此查询?
答案 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评估器中得出。