大佬们,怎么筛选路径中的标签,求解
发布于 2 年前 作者 codeing_bug 444 次浏览 来自 问答

我想筛选p中的标签,比如刘邦和项羽的标签是people,楚汉相争和鸿门宴的标签是event
我想筛选标签是event的数据把楚汉相争和鸿门宴查出来,我应该加什么过滤条件

MATCH p=(n)-[r*…6]-(m) where n.node_name=~‘刘邦’ and m.node_name=~‘项羽’ return p,length§ as pathLength order by pathLength limit 10

MATCH p=(n)-[r*..6]-(m)
    where n.node_name=~'刘邦' and m.node_name=~'项羽' 
    RETURN length(p) as pathLength,[x IN nodes(p) | x.node_name ] as `nodeNames` 
       order by pathLength  limit 10

GKU~QLGRU3P)4$6S%VPT~8R.png 1.png

2 回复

比较容易的方式是,直接使用https://neo4j.com/labs/apoc/4.1/overview/apoc.path/apoc.path.expand/ 做路径筛选,性能也好。也可以把cypher的每一条分别写好,根据数据模型里的定义,在每一跳使用正确的relationship type来筛选,这个需要对cypher的优化器有一些了解才能写出比较好的cypher出来。

哥,cypher的优化器在那里了解,有没有neo4j的资料,能给小弟看看吗

回到顶部