简而言之,我的问题是——我是否可以修改 Neo4j 使用的遍历逻辑——在可达性计算期间,如何控制哪些边被遍历,哪些不被遍历。
详细描述:
我正在考虑从我们当前的数据库迁移到 neo4j,我想知道 neo4j 是否适合以下任务:
我们有大约 1000 万个简单节点的大图——它们的属性只有一个 id。
我们也有 3 种边缘 - “标准”、“打开”和“关闭”。"opening" 和 "closeing" 也有一个 "color" 属性,所以它们是匹配的。每个“开放”边都有一个匹配的“关闭”边“。例如,有一个颜色为“3”的开放边缘,所以也有一个颜色相同的关闭边缘。
我们需要解决两个节点之间的可达性问题,其中遍历规则相当简单:您可以随意通过标准边,也可以根据需要通过开放边,同时保持访问的“开放”边的顺序堆栈但是(这是棘手的部分)当你来到一个有几个“关闭”边缘的交叉点时,你必须穿过与遇到的最后一个“打开”边缘匹配的关闭边缘,然后从堆。
例如:
a -[标准]->B-[打开颜色:3]->C-[标准]->D-[关闭颜色:3]->E
还有
D-[关闭颜色:4]->F
请注意,D 有两个“闭合”边缘,颜色不同。根据上面定义的规则,A 可以访问 E,因为颜色堆栈的顶部有 [3]。
然而,A 无法到达 F。
可以为这样的图遍历逻辑配置 neo4j 吗?谢谢!!