You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用Cypher创建匹配正则表达式(a.b)*的节点间关系查询?

实现Cypher中匹配(a.b)*形式的路径

要在Cypher中实现对应正则表达式(a.b)*(即REL_TYPE1和REL_TYPE2交替重复0次或多次)的路径匹配,可通过重复路径模式语法实现,具体方案如下:

核心实现逻辑

Cypher支持将一组路径模式用括号包裹后,通过*(0次或多次)、+(1次或多次)指定重复次数,刚好对应正则的重复规则。

1. 匹配0次或多次交替路径(对应(a.b)*)

此模式允许两个节点直接相连(无中间关系,即0次重复),或经过多轮REL_TYPE1→REL_TYPE2的交替关系:

MATCH path = (n)-((:REL_TYPE1]->()-[:REL_TYPE2]->())*)-(m)
RETURN path, nodes(path), relationships(path)
  • 若需要限制节点标签(如节点都属于Entity标签),可优化为:
    MATCH path = (n:Entity)-((:REL_TYPE1]->(:Entity)-[:REL_TYPE2]->(:Entity))*)-(m:Entity)
    RETURN path
    

2. 匹配至少一次交替路径(对应(a.b)+)

如果要求必须存在至少一轮REL_TYPE1→REL_TYPE2的交替,将*替换为+即可:

MATCH path = (n)-((:REL_TYPE1]->()-[:REL_TYPE2]->())+)-(m)
RETURN path

注意事项

  • 关系方向:确保模式中的箭头方向与数据中实际的关系方向一致,若为无向关系可省略箭头。
  • 性能优化:数据量较大时,建议给节点标签、关系类型添加索引,或限制路径的最大重复次数(比如*0..5表示最多5次重复),避免全图遍历导致性能问题。

内容的提问来源于stack exchange,提问作者J9309

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:05:32