Java Cypher:带约束的最短路径

Java Cypher:带约束的最短路径,java,neo4j,cypher,graph-databases,Java,Neo4j,Cypher,Graph Databases,我想执行如下最短路径查询: START source=node:myIndex(name="<src>"), destination=node:myIndex(name = "<dst>") MATCH p = shortestPath(source-[:REL1*..5]-destination),

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

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);
START source=node:myIndex(name=”“),destination=node:myIndex(name=“”)
匹配p=最短路径(源-[:REL1*.5]-目标),
source-[sourceRel:REL1]-m,
目的地-[destel:REL1]-k
其中sourceRel.a=和destel.a=
返回节点(p);
我想获得
之间的最短路径,条件是属性
a
在分别从src和dst到下一个节点的第一个关系上具有特定值

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


编辑:我使用的是Neo4j 1.8.2。

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

现在知道在当前的Neo4j版本中我想做什么是不可能的(感谢Wes),我使用了一种变通方法来实现这一点。 首先,我为src和目标节点获取与约束匹配的下一个节点:

START n=node:myIndex(name="<nodename>")                             
MATCH n<-[rel:REL1]-m
WHERE rel.a=<somevalue>
RETURN m
START n=node:myIndex(name=”“)

我想你可能误解了最短路径。通过使用第二个源和目的地,您在它们之间包含了一个使用REL1的单跳,这将导致对最短路径的否定。