gpt4 book ai didi

Gremlin:查找一组中与另一组有连接的所有节点

转载 作者:行者123 更新时间:2023-12-04 15:36:44 26 4
gpt4 key购买 nike

给定两个 Gremlin 查询 q1q2 及其结果 ri = qi.toSet(),我想找到 中的所有节点code>r1 连接到 r2 中的节点 - 忽略边标签和方向。

我目前的方法包括计算两个结果集之间的最短路径:

q1.shortestPath().with_(ShortestPath.target, q2).toList()

但是,我发现 Tinkerpop 中的最短路径计算不适合这个目的,因为如果 r1 中有节点而没有与 r2 中的任何节点有任何连接,结果将是空的。

相反,我考虑了连通分量,但是 connectedComponents() 步骤将生成找到的所有连通分量,我必须过滤它们以找到满足上述要求的连通分量。

您对我如何在 gremlin-python 中解决这个问题有什么建议吗?

最佳答案

这是我认为您需要在 Gremlin Python 中执行的一种方法。根据图表的大小和形状,这可能有效也可能无效。在我的测试图中,只有顶点 1,2 和 3 有通往 12 或 13 的路线。这个例子没有告诉你你是如何到达那里的,只是至少存在一条路径(如果存在的话)。

>>> ids = g.V('1','2','3','99999').id().toList()
>>> ids
['1', '2', '3', '99999']
>>> ids2 = g.V('12','13').id().toList()
>>> ids2
['12', '13']

>>> g.V(ids).filter(__.repeat(__.out().simplePath()).until(__.hasId(within(ids2))).limit(1)).toList()
[v[1], v[2], v[3]]

如果您只关心任何路由是否存在,您也可以使用 dedup() 而不是 simplePath() 和 limit() 。

g.V(ids).filter(__.repeat(__.out().dedup()).until(__.hasId(within(ids2)))).toList()

关于Gremlin:查找一组中与另一组有连接的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59501842/

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