Neo4j 2.2.5-Dijkstra最短路径

Neo4j 2.2.5-Dijkstra最短路径,neo4j,spring-data-neo4j-4,neo4j-ogm,Neo4j,Spring Data Neo4j 4,Neo4j Ogm,我正在使用带有Spring数据的Neo4J 2.2.5,我想使用Dijkstra计算两个节点之间的最短路径 这是我的代码: PathFinder<WeightedPath> finder = GraphAlgoFactory .dijkstra(PathExpanders.forTypeAndDirection(RelationshipTypes.SEM_SIM, Direction.BOTH), Con

我正在使用带有Spring数据的Neo4J 2.2.5,我想使用Dijkstra计算两个节点之间的最短路径

这是我的代码:

PathFinder<WeightedPath> finder = GraphAlgoFactory
                .dijkstra(PathExpanders.forTypeAndDirection(RelationshipTypes.SEM_SIM, Direction.BOTH),
                        Constants.ADVERTISED_COST);
        WeightedPath path = finder.findSinglePath(startVertexNode, goalVertexNode);
PathFinder=GraphAlgoFactory
.dijkstra(PathExpander.forTypeAndDirection(RelationshipTypes.SEM_-SIM,Direction.BOTH),
常数(单位成本);
加权路径路径=finder.findSinglePath(startVertexNode、goalVertexNode);
如何获取startVertexNode和goalVertexNode参数?使用下面的cypher方法,我获得了正确的数据,但是如何将结果转换为节点

Map<String, Object> params = new HashMap<String, Object>();
        params.put( "id", 0 );
        String query = "MATCH n WHERE id(n) = {id} RETURN n";

         org.neo4j.ogm.session.result.Result result = this.neo4jOperations.query(query, params);
Map params=newhashmap();
参数put(“id”,0);
String query=“匹配n,其中id(n)={id}返回n”;
org.neo4j.ogm.session.result.result=this.neo4jooperatis.query(query,params);
提前谢谢你帮了我的忙

亲切问候,,
Johan,

由于您的cypher查询
匹配n,其中id(n)={id}返回n
返回单个节点,因此可以使用

neo4jOperations.queryForObject(Class<T> entityType, String cypherQuery, Map<String, ?> parameters)
neo4joOperations.queryForObject(类entityType,字符串cypherQuery,映射参数)
它将直接返回您的实体。SDN/OGM不会从查询中返回原始节点或关系


我不确定您所说的“如何获取startVertexNode和goalVertexNode参数”是什么意思。

findSinglePath方法的参数类型是org.neo4j.graphdb.Node。问题是如何使用SDN从ID开始获取这些对象?除非使用SDN 4.1和嵌入式驱动程序,否则无法从图形中获取节点。如果您确实使用嵌入式驱动程序,那么您可以使用嵌入式API按id获取开始和结束顶点。但是会话/查询没有帮助,因为返回的只是域实体,而不是节点。