我有一个这样的图表:
START root=node(0)
CREATE
(Dark { name:"dark" }),(Colors { name:"colors" }),(Blue { name:"blue" }),
(Indigo { name:"indigo" }),(Red { name:"red" }),(Orange { name:"orange" }),
(LightOrange { name:"lightorange" }),(Tangerine { name:"tangerine" }),
Dark-[:CHILD]->Colors,Blue-[:CHILD]->Colors,Indigo-[:CHILD]->Blue,
Red-[:CHILD]->Colors,Orange-[:CHILD]->Red,LightOrange-[:CHILD]->Orange,
Tangerine-[:CHILD]->Orange
它本质上是一棵树,树枝之间有一些连接。
因此,如果输入“黑暗”,“橘子”和“靛蓝”,我可以得到最新的共同祖先,如下:
START a=node(*), b=node(*),c=node(*)
MATCH pa=a-[s:CHILD*]->x, pb=b-[s:CHILD*]->x,pc=c-[s:CHILD*]->x
WHERE a.name = 'dark' AND b.name = 'tangerine' AND c.name = 'indigo'
RETURN x
ORDER BY length(pa+pb+pc)
LIMIT 1
我的问题是,如何获得可能导致祖先的最小树枝组的节点?例如,上述查询的结果可以是“暗”,“橙”,“红”,“颜色”,“靛蓝”。