gpt4 book ai didi

java - Neo4J TraversalDescription 定义

转载 作者:行者123 更新时间:2023-11-29 07:13:33 25 4
gpt4 key购买 nike

我正在尝试创建将执行以下搜索的TraversalDescription

  • 只返回具有特定属性的节点(“type”==“PERSON”)
  • 返回一定数量的结果(整个图很大,我们只对局部图感兴趣)
  • 可以使用任何关系类型

我还没有走得很远,我似乎无法弄清楚如何为节点属性创建一个 Evaluator;

TraversalDescription td = Traversal.description().bredthFirst().evaluator(?...);

最佳答案

我通过简单地实现 Evaluator 接口(interface)并覆盖 Evaluator.evaluate(Path p) 方法来解决这个问题;

public final class MyEvaluator implements Evaluator {

private int peopleCount;
private int maxPeople;

public MyEvaluator(int max) {
maxPeople = max;
peopleCount = 0;
}

public Evaluation evaluate(Path p) {

//prune if we have found the required number already
if(peopleCount >= maxPeople) return Evaluation.EXCLUDE_AND_PRUNE;

//grab the node of interest
Node n = p.endNode();

//include if it is a person
if(n.hasProperty("type") && (n.getProperty("type").equals(NodeTypes.PERSON.name()))) {
peopleCount++;
return Evaluation.INCLUDE_AND_CONTINUE;
}

// otherwise just carry on as normal
return Evaluation.EXCLUDE_AND_CONTINUE;
}
}

然后我的 TraversalDescription 定义最终看起来像这样:

TraversalDescription td = Traversal.description().breadthFirst().evaluator(new MyEvaluator(peopleRequired));

关于java - Neo4J TraversalDescription 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11633940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com