基于关系的节点属性
Node based properties on a relationship
我开始使用 Neo4J 创建用户及其关系图。目前用户之间只有一个 'KNOWS' 关系,即
我现在要做的是专门为每个用户指定关系的属性。例如,"interest" 表示一个用户对另一个用户的兴趣程度。我可以为单个 KNOWS 关系上的每个用户指定此选项,还是需要在用户之间创建两个关系并在每个关系上设置属性?
如有任何帮助,我们将不胜感激。
Can I specify this (property: interest) for each user on a single KNOWS relationship or would I need to create two relationships between the users and set the attribute on each of the relationships?
您将需要两个关系。
您可以用一个来完成,但是您必须在关系中保留两个属性以及关于哪个 属性 与哪个节点相关的信息。有两个关系就容易多了。
来自评论:
Can I keep them as bi-directional or would I need to use directional
in this case?
关系总是有方向的。只有在查询的时候才会出现双向的概念,其实那并不是真正的双向,是没有方向的,e.g. (a)-[r]-(b)
。所以你会使用 (a)-[r]->(b)
和 (b)-[r]->(a)
或 (a)<-[r]-(b)
。如果你用方向查询,那么你就知道如何应用关系属性。
我通常使用 Java 作为 embedded 应用程序而不是 Cypher 来完成我的更多工作,并且使用定向查询是值得的,因为它可以减少关联代码。
备注
既然你的情况这么简单,那就试试各种方法看看有什么用吧。请记住跟踪查询需要多长时间,并在必要时添加索引。还可以使用查询分析工具来确保您进行有效的查询。
我开始使用 Neo4J 创建用户及其关系图。目前用户之间只有一个 'KNOWS' 关系,即
我现在要做的是专门为每个用户指定关系的属性。例如,"interest" 表示一个用户对另一个用户的兴趣程度。我可以为单个 KNOWS 关系上的每个用户指定此选项,还是需要在用户之间创建两个关系并在每个关系上设置属性?
如有任何帮助,我们将不胜感激。
Can I specify this (property: interest) for each user on a single KNOWS relationship or would I need to create two relationships between the users and set the attribute on each of the relationships?
您将需要两个关系。
您可以用一个来完成,但是您必须在关系中保留两个属性以及关于哪个 属性 与哪个节点相关的信息。有两个关系就容易多了。
来自评论:
Can I keep them as bi-directional or would I need to use directional in this case?
关系总是有方向的。只有在查询的时候才会出现双向的概念,其实那并不是真正的双向,是没有方向的,e.g. (a)-[r]-(b)
。所以你会使用 (a)-[r]->(b)
和 (b)-[r]->(a)
或 (a)<-[r]-(b)
。如果你用方向查询,那么你就知道如何应用关系属性。
我通常使用 Java 作为 embedded 应用程序而不是 Cypher 来完成我的更多工作,并且使用定向查询是值得的,因为它可以减少关联代码。
备注
既然你的情况这么简单,那就试试各种方法看看有什么用吧。请记住跟踪查询需要多长时间,并在必要时添加索引。还可以使用查询分析工具来确保您进行有效的查询。