0

假设有节点 m、n、p 和关系 r1、r2,如下所示:

(n)-r1->(p)<-r2-(m)

我们需要从 m、n、p、r1 和 r2 返回属性,因此我们有一个具有以下 START、MATCH 和 WHERE 子句的密码:

START START n=node:...
MATCH (n)-[r1:RELTYPE]->(p)<-[r2:RELTYPE]-(m)
WHERE r1.SOMEPROPERTY = r2.SOMEPROPERTY
RETURN ...

SOMEPROPERTY 始终存在于 r1 和 r2 上。通常,n 与 p 有 50,000 个关系,每个 p 可以与 m 有一百万个关系。我们只能从 n 开始。

密码挂了!!通过java程序和neoclipse。如果我们将关系的数量从 50,000 和 100 万减少到几百个,那么密码就可以工作。

关于如何使这种密码算法高效并适用于大量关系的任何建议?也可以重新设计图表。

4

1 回答 1

1

所以你有 |r1| = 50,000 和 |r2| = 1,000,000。如果要将每个 r1 与每个 r2 进行比较,则有 50,000 * 1,000,000 = 50,000,000,000。您需要进行 500 亿次比较。如果每次比较需要 1 毫秒,那么执行此比较仍需要 50,000,000(五千万)秒。这是578天。

我可以看到您降低这种复杂性的唯一可能方法是,如果您要在节点 p 上创建一个 r1 和 r2 映射,该节点 p 以 SOMEPROPERTY 为键。然后,您只需要获取 SOMEPROPERTY 的 r1 列表和 SOMEPROPERTY 的 r2 列表。

于 2013-09-12T14:24:13.067 回答