Я использую API траверса, но кажется, что Traversal.expanderForTypes() устарел, и я не знаю, как найти кратчайший путь между двумя узлами.API-интерфейс обхода Neo4j 3.1, как найти кратчайший путь между двумя узлами?
Мой метод
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);
Так отношения имеют свойство расстояния со значением.
Как использовать API обхода от neo4j 3? Кажется, многое изменилось.
только для уточнения: вы действительно говорите о Neo4j 3.1 - это не ГА и веха 8 отсутствует. Или вы имеете в виду Neo4j 3.0.x - это GA. –
да, это примерно 3.0.x –