0

我有一个这样的图表:

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

它本质上是一棵树,在树枝之间有一些连接。

因此,给定“dark”、“tangerine”和“indigo”的输入,我可以获得最近的共同祖先,如下所示:

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

我的问题是,我如何获得最小的一组树枝的节点,这可能会导致祖先?例如,上述查询的结果可以是“dark”、“orange”、“red”、“colors”、“indigo”。

4

0 回答 0