2

我是 neo4j 的新手,非常感谢您的帮助。

我有一个 neo4j 数据库,其中的节点具有属性“颜色”和两种关系类型“上一个”和“下一个”。我有一个 ArrayList,其中包含节点属性,它们应按应遍历的顺序排列,例如蓝色、红色、黄色。

如何遍历图形以查找确切路径 Node(Color:Blue) --> Node(Color:Red) --> Node(Color:Yellow) 之间是否没有节点以及所有类型为“Next”的关系,存在于数据库中?

我正在使用嵌入在 java 应用程序中的 neo4j。

4

1 回答 1

4

每个之间的 NEXT 关系可能就足够了,因为传入的 NEXT 可以被视为“前一个”。

而且我认为你应该索引你的颜色,然后从第一个节点(在本例中为“蓝色”)开始遍历,并有一个像这样的遍历器:

字符串 [] 颜色 = 新字符串 [] { "蓝色", "红色", "黄色" };
节点开始 = db.index().forNodes("colors").get("color", colors[0]).getSingle();
Traversal.description().uniqueness(Uniqueness.RELATIONSHIP_GLOBAL).breadthFirst().relationships(Types.NEXT, Direction.OUTGOING).evaluator(new Evaluator()
{
    @覆盖
    公共评估评估(路径路径)
    {
        String currentColor = (String) path.endNode().getProperty("color");
        boolean endOfTheLine = path.length()+1 >= colors.length;
        返回 currentColor.equals( 颜色[path.length()] ) ?
                Evaluation.of(endOfTheLine, !endOfTheLine) : Evaluation.EXCLUDE_AND_PRUNE;
    }
}).traverse(开始)

我刚刚破解了你的域,那个遍历器运行得很好!

于 2012-04-19T09:47:47.110 回答