我想执行如下最短路径查询:
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/