1
我試圖用Neo4J和Python創建一個簡單的Twitter式樣「追隨者/朋友」圖。圖表看起來像Neo4J - 簡單的「追隨者」圖
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」)「似乎在每次腳本運行時都會創建重複關係,對於圖形db新手來說,由於關係完全相同,所以會稍微混淆我。
創建重複關係的可能性非常低,但是如果發生這種情況,會導致圖遍歷問題嗎?我應該用某種獨特的功能將我的FOLLOWS索引編入索引嗎?
所以這將涉及使用Cypher查詢而不是py2neo「get_or_create_relationship」?如果Cypher是這樣做的唯一方式,看起來像REST界面缺乏一個非常基本的功能:( – Hanpan 2013-04-08 12:55:30
其餘接口還提供了獨特的創建功能,請參閱http://docs.neo4j.org/chunked/milestone/rest- API器唯一indexes.html – RaduK 2013-04-08 13:31:54