1

12 の入力と 4 つの出力を持つ Neo4j グラフがあり、入力から出力ノードへの 14 の一意のパスを返す Java Traverser を使用してクエリを作成しようとしています。私が試したすべてのクエリは、14 のパスのサブセットのみを返します。たとえば、以下のコードは 4 つのパスを返しますが、他の 10 個はすべて出力の 1 ノード手前で停止します。

RelationshipType relType = RelationshipTypes.EDGE;
TraversalDescription td = new TraversalDescriptionImpl()
      .depthFirst()
      .relationships(relType, Direction.OUTGOING);
for (Node node : inputs){
    Traverser tv = td.traverse(node);
    Iterator<Path> iter = tv.iterator();
    // ... print path
}

独自性と深度の設定も試しましたが、効果はありませんでした。

以下のクエリは、Web インターフェイスを使用して 14 個のパスすべてを返しますが、ExecutionEngine クラスを使用すると、13 個のパスしか返されません。

START s=node(*) 
MATCH (s)-[p:EDGE*]->(c)
WHERE s.type! = "INPUT" AND c.type! = "OUTPUT"
RETURN p

Java API を使用して一意のパスをすべて取得するにはどうすればよいですか?

4

1 に答える 1

0
START s=node(*) 
WHERE s.type = "INPUT" 
MATCH (s)-[p:EDGE*]->(c) 
WHERE c.type = "OUTPUT" 
RETURN p;

これはあなたが持っていたものとちょっと似ています。提供した Neo4j コンソールの例に基づいて、14 のエントリが返されます。

于 2014-02-22T06:34:35.250 に答える