2016-09-09 8 views
0

Traversal APIを使用していますが、Traversal.expanderForTypes()は推奨されておらず、2つのノード間の最短経路を見つける方法がわかりません。Neo4j 3.1トラバーサルAPI、2つのノード間の最短経路を見つける方法

私の方法

public Iterable<Path> shortestPath(long firstNodeId, long secondNodeId) { 
     Node firstNode = null; 
     Node secondNode = null; 
     try (Transaction tx = mainServiceBean.getDatabaseService().beginTx()) { 
      firstNode = mainServiceBean.getDatabaseService().getNodeById(firstNodeId); 
      secondNode = mainServiceBean.getDatabaseService().getNodeById(secondNodeId); 
      PathExpander expander = Traversal.expanderForTypes();//? 
      PathFinder<Path> shortestPath = GraphAlgoFactory.shortestPath(expander, 4, 4); 
      tx.success(); 
      return shortestPath.findAllPaths(firstNode, secondNode); 
     } 
    } 

マイノードの都市と

このような
Node nodeACity = mainServiceBean.getDatabaseService().createNode(ProjectLabels.City); 

      nodeACity .setProperty(City.NAME, CityNames.ACiTY.name()); 

      Node nodeBCity = mainServiceBean.getDatabaseService().createNode(ProjectLabels.City); 
      nodeBCity.setProperty(City.NAME, CityNames.BCity.name()); 


Relationship ab= nodeACity .createRelationshipTo(nodeBCity , NodesRelationship.DISTANCE_TO); 
      ab.setProperty("distance", 124.31); 

      Relationship ba= nodeBCity .createRelationshipTo(nodeACity , NodesRelationship.DISTANCE_TO); 
      ba.setProperty("distance", 124.31); 

との関係だから、関係が値を持つプロパティの距離を持っています。

neo4j 3からのトラバーサルAPIはどのように使用できますか?多くの変更があるようだ。

+0

を明示することができます:あなたは本当にNeo4j 3.1について話していますか?これはGAではなく、マイルストーン8はありません。または、あなたは、GAであるNeo4j 3.0.xを指していますか? –

+0

はいそれは約3.0.xです –

答えて

1

PathExpanderの事前定義済みの組み合わせがPathExpandersに見つかります。

与えられたノードaとbに対してDISTANCE_TOを2回モデリングする具体的な理由はありますか?ほとんどの場合、1つの関係のみを持ち、トラバース中に方向を無視することが望ましいです。このケースでは、

PathExpander expander = PathExpanders.forType(NodesRelationship.DISTANCE_TO); 
関連する問題