【发布时间】:2017-05-12 21:06:17
【问题描述】:
我是 Neo4j 的新手,可能在做一些愚蠢的事情,请帮忙。
我有 1800 万个节点,每个节点都有 2 个 string 属性(oid 和 name)。查询中未使用名称。
节点与一个 double 属性 (val) 有关系。
当我通过过滤 val 值搜索最短路径时,我会以毫秒为单位获得结果。
MATCH path=shortestPath( (p:ids{oid:'1027700070518'})-[*0..200]-(t:ids{oid:'1027739134950'})) WHERE ALL (x IN RELATIONSHIPS(path) WHERE x.val > 50.0) return length(path) as len, path
当我通过过滤 oid 值搜索最短路径时,我也会以毫秒为单位获得结果。
MATCH path=shortestPath( (p:ids{oid:'1027700070518'})-[*0..200]-(t:ids{oid:'1027739134950'})) WHERE NONE(n IN nodes(path) WHERE (n.oid = '1' or n.oid = '2' or n.oid = '3' or n.oid = '4' or n.oid='5' or n.oid = '6' ) ) return length(path) as len, path
但是将它们组合到一个查询中会使其永远运行。
MATCH path=shortestPath( (p:ids{oid:'1027700070518'})-[*0..200]-(t:ids{oid:'1027739134950'})) WHERE ( NONE(n IN nodes(path) WHERE (n.oid = '1' or n.oid = '2' or n.oid = '3' or n.oid = '4' or n.oid='5' or n.oid = '6' )) and (ALL (x IN RELATIONSHIPS(path) WHERE x.val > 50.0))) return length(path) as len, path
我是不是做错了什么?
解释对我没有帮助,我做了一个截图。 PROFILE 也永远运行。
【问题讨论】: