求教各位大佬,巨大的有向图中的多点可达性问题,有没有效率高的查询语句
下面是需求:
- 有向图,有环,节点数很多,可能有十多万个甚至几十万个
- 已知一个点st,想求它到某种节点的路径,这种节点的name有固定的前缀
- 如果可以的话,希望找到st到这类节点的所有路径 直接用cypher里的match方法好像会非常的慢,工具apoc里一个很像的方法:apoc.path.expandConfig。 我想用这个方法固定起点,然后搜索路径,遇到某一类节点就停止,返回路径。这种节点可能是名字有相同的前缀,或者有相同的label等等。然后我尝试写了一个:
MATCH(p:Developer{id:"jack"})
MATCH(q:Code) WHERE q.id STARTS WITH "Github"
CALL apoc.path.expandConfig(p, {
relationshipFilter: "Uses>",
minLevel: 1,
maxLevel: -1,
terminatorNodes: [q]
})
YIELD path
RETURN path, length(path) AS hops
ORDER BY hops;
但是这个命令运行时间太久了,以至于无法忍受。想问问有没有别的更有效率的办法? 新手上路,请多指教,感激不尽!!!
3 回复