gpt4 book ai didi

neo4j - 密码中关系的重复模式

转载 作者:行者123 更新时间:2023-12-04 15:45:18 24 4
gpt4 key购买 nike

假设我有可以通过一组路径模式连接的节点,例如:

(x:Class {code:'xxx'})<-[:a]-()-[:b]->()<-[:a]-()-[:b]->()<-[:a]-()-[:b]->()<-[:a]-()-[:b]->(y:Class{code:'yyy'})

可以有可变数量的 <-[:a]-()-[:b]->x 之间和 y .如果 x 之间存在,我如何获得最短路径?和 y

最佳答案

如评论中所述,APOC Procedures 中的路径扩展器 procs 提供了一种处理重复序列的方法。

但是,看起来您不仅在寻找特定的结束节点,而且还在寻找序列中该点出现的结束节点(而不是那些关系对中间的节点)。

在那种情况下,我们也需要包含 labelFilter,以指定我们感兴趣的序列中的哪个节点。或者我们可以只使用 sequence 配置参数而不是标签和关系过滤器。

MATCH (start:Class {code:'xxx'}), (end:Class{code:'yyy'})
CALL apoc.path.expandConfig(start, {endNodes:[end], sequence:'>Class, <a, *, b>', limit:1}) YIELD path
RETURN path

我们提供我们感兴趣的端节点(因为我们已经知道这些,我们已经匹配到它们),然后我们提供交替节点标签和关系类型的序列(使用 * 作为任何标签节点的替代,并使用 > 前缀作为结束节点过滤器,这意味着我们希望路径在此序列的此位置的 :Class 节点处结束)。

路径扩展器 procs 使用广度优先扩展,limit:1 表示我们遇到的第一条路径到既是端节点又满足序列模式 (a :重复序列中该点的类节点)将是我们的最短路径。

关于neo4j - 密码中关系的重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com