java - Cypher:有约束的最短路径

标签 java neo4j cypher graph-databases

我想执行如下最短路径查询:

START source=node:myIndex(name="<src>"), destination=node:myIndex(name = "<dst>")                                                                               
MATCH p = shortestPath(source-[:REL1*..5]-destination),
          source-[sourceRel:REL1]-m, 
          destination-[destRel:REL1]-k
WHERE sourceRel.a=<someValue> and destRel.a=<someOtherValue>                                                                                                      
RETURN NODES(p);

我想获得 <src> 之间的最短路径和<dst>约束条件是属性 a从 src 和 dst 分别到下一个节点的 first 关系具有一定的值。

但是,neo4j 只是返回它找到的任何最短路径,而不考虑我的约束。 我究竟做错了什么?在最短路径查询的最短路径的第一个“跃点”上指定约束的正确方法是什么?

编辑:我使用的是 Neo4j 1.8.2。

最佳答案

从 2.0.0-M03 开始​​,没有好方法向 shortestPath 引入约束。他们正在研究一种新的语法来做到这一点,但仍处于设计阶段。为了做到这一点,您需要采取不使用 shortestPath 的效率较低的路线,按长度排序并获得符合所有约束的最短路径。

关于java - Cypher:有约束的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631953/

相关文章:

java - 从内存中获取Java类字节码(经过多次转换)

java - 从 xml 中的 GATE 中提取注释

neo4j - 从 Dropbox 加载 Neo4j 的 CSV 文件

java - 将图像添加到 JFrame

java - 如何使用RichFaces a4j :commandButton not using submit

neo4j - 从 Linux 连接到 Neo4j 的问题

使用 PERIODIC COMMIT n 的性能 - Neo4j

java - 使用嵌入式 API 向节点添加标签

php - 使用 neooxygen php neoclient 无需依赖

java - 如何在 Java Neo4J 中正确迭代 Cypher 查询的组合结果