Graph 如何在Neo4j图形数据库上使用Cypher解决最常见的路径问题(如问题)

Graph 如何在Neo4j图形数据库上使用Cypher解决最常见的路径问题(如问题),graph,neo4j,cypher,path-finding,neo4jrb,Graph,Neo4j,Cypher,Path Finding,Neo4jrb,我们使用neo4j存储许多人(用户)的学术和专业发展,以便为我们的客户处理和提供其中包含的信息 例如,他们可能会要求获得某个文凭(在图形数据库中表示为“文凭”节点)并随后在某个工作(“工作”节点)中工作的人员的最频繁的职业发展 工作和文凭都扮演着类似的角色,作为每个人都可以在简历上的“一种”步骤(用户与他们没有直接联系)。简历是由某个人在特定时间段内进行的专业活动:这些活动有一个且只有一个用户与他们相关,并且:包含一个“工作或文凭”以帮助对其进行分类 给定用户的简历通过一个:在他们的时间顺序之后

我们使用neo4j存储许多人(用户)的学术和专业发展,以便为我们的客户处理和提供其中包含的信息

例如,他们可能会要求获得某个文凭(在图形数据库中表示为“文凭”节点)并随后在某个工作(“工作”节点)中工作的人员的最频繁的职业发展

工作和文凭都扮演着类似的角色,作为每个人都可以在简历上的“一种”步骤(用户与他们没有直接联系)。简历是由某个人在特定时间段内进行的专业活动:这些活动有一个且只有一个用户与他们相关,并且
:包含一个“工作或文凭”以帮助对其进行分类

给定用户的简历通过一个
:在他们的时间顺序之后指向
关系相互链接。此序列返回该用户的整个简历。所以我们有这样的路径:


(u:User)-[:HAS]->(:Resume)-[:LEADS_TO]->(:Resume)由于节点可以有多个标签,您的
Resume
节点也可以有
文凭
工作
标签。不需要有带有
文凭
作业
标签的单独节点

因此,您可以将数据模型简化为,例如:

(u:User)-[:HAS]->(:Resume:Diploma)-[:LEADS_TO]->(:Resume:Job)<-[:HAS]-(u)

此外,您可能根本没有理由使用
简历
标签(例如,上面的查询没有使用它),因此您可以进一步简化数据模型,只需使用
文凭
工作
标签。

谢谢!事实上,这会简单得多。然而,我们没有想到我们可以改变我们的模式,因为似乎我们需要区分
简历
(属于一个用户)和
简历节点
(数据库中“工作或文凭”节点的实际标签,代表一个“通用”carreer步骤-如帖子截图上的“Directeur技术”):例如,如果没有它,我们不知道如何获取用户在一个企业中完成的所有多个工作,或者如何访问与其简历相关的所有位置。但是如果您这样做,我们将非常感谢您与我们分享一些提示!如果我没有弄错的话,
作业
节点可以具有“Directeur技术”之类的“title”属性,或者与
标题
节点的关系。每个
文凭
工作
节点都可以与
公司
学校
节点建立
AT
关系。
MATCH path=(u:User)-[:HAS]->(:Diploma {type: 'Engineering'})-[:LEADS_TO*]->(:Job {type: 'Management'})
RETURN path;