如何在查询最短路径时多次忽略同一节点出现的匹配模式,附加图像中的纵向示例情况。
A TO C的最短路径给出,
start a=node:node_auto_index(point='A'),c=node:node_auto_index(point='c') match p=a-[r:CONNECTS*]->c return p;
1. A-> C
2. A -> B -> C -> A -> C
3. A -> B -> C
4. A -> C -> A -> C
5. A -> B -> A -> C
6. A -> C -> B -> A -> B -> C
以及9个模式中的更多,但在某些模式中,相同的节点或起始和结束节点不止一次出现,这将像无关的输出,所以我如何识别和忽略任何节点在其中不止一次的模式路径。
答案 0 :(得分:1)
您没有使用最短路径。正确的查询是:
start a=node:node_auto_index(point='A'),
c=node:node_auto_index(point='c')
match p=shortestPath((a)-[r:CONNECTS*]->(c))
return p;
或allShortestPaths
答案 1 :(得分:0)
找到上述案例的解决方案
START a=node:node_auto_index(point='a'),
c=node:node_auto_index(point='c')
MATCH path= a-[r:CONNECTS*]->c
WHERE ALL(n in nodes(path) where 1=length(filter(m in nodes(path) : m=n)))
RETURN path;
现在它只产生了预期的有效路径: - )
1. A -> B -> C
2. A -> C