2012-04-18 196 views
0

我是新手neo4j,所以你的幫助表示讚賞。我有一個neo4j數據庫,其節點有一個屬性「Color」和兩個關係類型,「Previous」和「Next」。我有一個ArrayList,其中包含應該遍歷的順序的節點屬性,例如Blue,Red,Yellow。如何遍歷圖形以查找節點(顏色:藍色) - >節點(顏色:紅色) - >節點(顏色:黃色)的中間沒有節點和所有類型爲「下一個」的關係的確切路徑,存在於數據庫中?我使用嵌入在Java應用程序中的neo4j。如何遍歷neo4j中的節點屬性的順序列表?

回答

2

它們之間可能存在一個NEXT關係,因爲傳入的NEXT可以被視爲「先前」。

而且我想你應該索引你的顏色,然後開始從第一個節點遍歷(在這種情況下,「藍」),並有這樣的使用移動:

 
String[] colors = new String[] { "Blue", "Red", "Yellow" }; 
Node start = db.index().forNodes("colors").get("color", colors[0]).getSingle(); 
Traversal.description().uniqueness(Uniqueness.RELATIONSHIP_GLOBAL).breadthFirst().relationships(Types.NEXT, Direction.OUTGOING).evaluator(new Evaluator() 
{ 
    @Override 
    public Evaluation evaluate(Path path) 
    { 
     String currentColor = (String) path.endNode().getProperty("color"); 
     boolean endOfTheLine = path.length()+1 >= colors.length; 
     return currentColor.equals(colors[path.length()]) ? 
       Evaluation.of(endOfTheLine, !endOfTheLine) : Evaluation.EXCLUDE_AND_PRUNE; 
    } 
}).traverse(start) 

我剛纔砍死你的域和該移動器工作得很好!