首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Neo4j -向图遍历添加逻辑

Neo4j -向图遍历添加逻辑
EN

Stack Overflow用户
提问于 2013-01-03 18:06:37
回答 1查看 642关注 0票数 2

简而言之,我的问题是,我是否可以修改Neo4j使用的遍历逻辑-在可达性计算期间,如何控制哪些边被遍历,哪些边不被遍历。

完整描述:

我正在考虑从我们当前的DB迁移到neo4j,我想知道neo4j是否适合以下任务:

我们有大约10M个简单节点的大型图-它们的属性只有一个id。

我们也有三种边缘-“标准”,“开放”和“关闭”。“开始”和“关闭”也有一个"color“属性,所以它们是匹配的。每个“开放”边都有一个匹配的“闭合”边。例如,有一个开放边的颜色是"3",所以也有一个关闭边的颜色是一样的。

我们需要解决两个节点之间的可达性,其中遍历规则相当简单:您可以根据需要通过标准边,可以根据需要通过开放边,同时保持堆栈中访问的“开放”边的顺序,但(这是棘手的部分)当您到达具有几个“关闭”边的交叉点时,必须通过与遇到的最后一个“开放”边匹配的关闭边,然后从堆栈中弹出那个“开放”边。

例如:

A-标准->B-打开颜色:3->C-标准->D-关闭颜色:3->E

而且还

D-闭合颜色:4->F

请注意,D有两个不同颜色的“闭合”边。根据上面定义的规则,E可以通过A到达,因为颜色堆栈在其顶部具有3。

然而,F是A不能到达的。

可以为这样的图遍历逻辑配置neo4j吗?谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2013-01-09 21:41:10

这可以通过实现您自己的PathExpander并传递给TraversalDescription来实现。正如Michael Hunger所指出的: BranchState可以用来优化您的扩展器,这样您就不必检查每个扩展的完整路径,而是每个遍历分支携带的某种简化的(记住是不变的)状态。扩展器可以将修改状态传递到每个下一步骤。

不幸的是,neo4j手册中缺少使用分支状态的好例子。这听起来像是一个很棒的用法!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14136657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档