我从Neo4J开始创建用户及其关系图。目前,用户之间只有一个“知识”关系,即
我现在要做的是为每个用户专门指定关系的属性。例如,“兴趣”表示一个用户对另一个用户的兴趣。我可以在单个KNOWS关系上为每个用户指定此属性,还是需要在用户之间创建两个关系并在每个关系上设置属性?
任何帮助将不胜感激。
答案 0 :(得分:1)
我可以在单个KNOWS关系上为每个用户指定此属性(属性:兴趣),还是需要在用户之间创建两个关系并在每个关系上设置属性?
您将需要两个关系。
您可以使用其中一个执行此操作,但随后必须在关系中保留两个属性,并获取有关哪个属性与哪个节点一起使用的信息。有两个关系要容易得多。
来自评论:
我可以将它们保持为双向还是需要使用定向 在这种情况下?
关系始终是定向的。只有当您查询时才出现双向的概念,但实际上并不是双向的,它是没有方向的,例如(a)-[r]-(b)
。因此,您将使用(a)-[r]->(b)
和(b)-[r]->(a)
或(a)<-[r]-(b)
。如果查询方向,那么您将知道如何应用关系属性。
我通常将Java作为embedded应用程序而不是Cypher来做更多的工作,并且使用定向查询是值得的,因为它减少了执行关联的代码。
注意
由于您的情况如此简单,请尝试各种方法并查看有效的方法。请记住要跟踪查询花费的时间,并在必要时添加索引。还可以使用查询分析工具来确保您进行有效的查询。