gpt4 book ai didi

graph - Neo4j : Two different relationships with same name

转载 作者:行者123 更新时间:2023-12-01 07:36:16 24 4
gpt4 key购买 nike

场景 1:
型号:
用户 -[:FOLLOW]-> 用户
用户 -[:FOLLOW]-> 播放列表


两个 User 之间的 FOLLOW 关系具有属性 followerType,表示用户如何关注其他用户,例如用户可以通过推特或谷歌加关注其他用户。

UserPlaylist 之间的 FOLLOW 关系不应该有任何 followerType 属性,因为这里它并不意味着任何事物。此关系仅表示应通知用户播放列表中的任何更改,例如添加歌曲、删除歌曲等

问题:在这种情况下,我们是否应该为两种关系赋予不同的名称以区别于其他关系,或者是否有任何其他方式来处理这种情况?


场景 2:
型号:
用户 -[:PLAYED]-> 歌曲
用户 -[:PLAYED]-> 播放列表

问题:在这种情况下,PLAYED 关系表示相同的 Action ,但应用于两种不同类型的节点 Song播放列表。因此,将这两种关系视为相同的关系还是通过分配不同的名称来区别对待它们是一个好主意,例如PLAYED_SONGPLAYED_PLAYLIST

最佳答案

这取决于 ;)

如果您想在查询时区分差异,拥有不同的类型会“更便宜”。例如:

match (:User)-[:PLAYED_SONG]->()

会不会比:

便宜
match (:User)-[:PLAYED]->(:Song)

因为Neo4j只需要看关系类型,而不是关系类型和节点标签。

例如,如果您想要同时拥有歌曲和播放列表:

match (:User)-[:PLAYED]->()

必须比以下更容易理解:

match (:User)-[:PLAYED_SONG|PLAYED_PLAYLIST]->()

我的建议是选择 FOLLOW 和 PLAYED 作为类型。使用该设置进行一些性能测试。

关于graph - Neo4j : Two different relationships with same name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com