从具有标签的节点开始遍历(遍历框架)

时间:2014-10-15 22:50:33

标签: neo4j traversal

在我目前的模型中,我使用Traversal框架从特定节点开始执行查询。

(Node{id:"XXX"}) -> ...Other nodes.

出于经济原因(减少使用的节点和关系的数量),我正在考虑添加标签" XXX"到其他节点。

知道其他节点可能有几百万个节点,我想知道是否: - 以这种方式建模它是一个好主意还是坏主意(独立于更经济)? - 在这种情况下使用Traversal框架,我应该如何指定起始节点?

修改

一个具体的例子:

假设我有User类型的Node用户节点(Node:Person)。每个Person节点都与Country节点(Node:Country)相关,其关系为:LIVES_IN 每个人都可以链接到0 .. *具有关系的人:知识

我使用遍历框架在1个国家/地区中查找彼此连接(直接或间接)的不同人员组。我通过从国家/地区节点开始遍历并遍历LIVES_IN和KNOWS关系来做到这一点。

生活在同一个国家的人,如你所想,可以达到数百万。

1 个答案:

答案 0 :(得分:0)

你应该总是尝试从侧面看/这种类型和方向的关系越少。

因此,如果你在右侧或左侧的关系较少,我会来自那个较小的一方。

您还可以查看双向遍历api,它从两侧同时进行直到找到重叠。

在你的具体例子中,我总是从人的角度看,并检查它们是否在同一个国家,即lives_in关系另一端的节点是同一个国家节点。

因此,我首先通过其他方式关联人们(您必须处理较少的相关人员)并且只检查国家。

另一种选择是将生活关系亚结构为州/县和城市。

那么从一个国家到另一个城市,你只有几千个关系,根据你的模型,从一个城市到另一个城市也只有几千个。因此,您可以首先检查双方的城市,或者他们是在同一个城市,或者您只是检查这两个城市是否在同一个国家。