【问题标题】:Neo4J - Simple "follower" graphNeo4J - 简单的“追随者”图
【发布时间】:2013-04-07 19:41:16
【问题描述】:

我正在尝试使用 Neo4J 和 Python 创建一个简单的 Twitter 式“关注者/朋友”图表。图表看起来像

user_1 FOLLOWS user_2
user_1 FOLLOWS user_3
user_2 FOLLOWS user_1

经过一天的阅读,我认为最好直接使用 REST 接口,因为我使用的是 Python,所以我使用的是 py2neo。这是我的代码:

from py2neo import neo4j

def main():
    g = neo4j.GraphDatabaseService()

    # Create an index for our user nodes
    index = g.get_or_create_index(neo4j.Node, "user")

    # Create a single node, User 1
    node = index.get_or_create("user", "User_1", {"id": "User_1"})

    # Populate the graph with some more users just for testing
    nodes = []
    for user in ["User_2", "User_3", "User_4", "User_5"]:
        nodes.append( index.get_or_create("user", user, {"id":user}) )

    # Create a relationship between User_1 and User_2
    g.get_or_create_relationships( (node, "FOLLOWS", nodes[0]) )

if __name__ == '__main__':
    main()

如您所见,我使用 get_or_create_relationships 来防止重复关系,并且在添加数千个节点时,我假设这会产生某种开销。

每次运行脚本时,直接使用 "node.create_relationship_to(nodes[0], "FOLLOWERS")" 似乎都会创建重复的关系,这对于图形数据库新手来说有点困惑,因为关系完全相同。

创建重复关系的可能性非常低,但如果发生这种情况,会导致图遍历出现问题吗?我应该使用某种独特的功能来索引我的 FOLLOWS 索引吗?

【问题讨论】:

    标签: neo4j py2neo


    【解决方案1】:

    如果不存在,我将使用密码CREATE UNIQUE 仅创建 FOLLOWs 关系,请参阅http://docs.neo4j.org/chunked/milestone/query-create-unique.html

    这行得通吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2017-12-17
    • 2021-10-09
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多