【发布时间】:2014-05-19 04:39:04
【问题描述】:
我刚刚开始使用 py2neo 和 neo4j。
我对如何在我的数据库中使用索引感到困惑。
我创建了一个 create_user 函数:
g = neo4j.GraphDatabaseService()
users_index = g.get_or_create_index(neo4j.Node, "Users")
def create_user(name, username, **kwargs):
batch = neo4j.WriteBatch(g)
user = batch.create(node({"name" : name, "username" : username}))
for key, value in kwargs.iteritems():
batch.set_property(user, key, value)
batch.add_labels(user, "User")
batch.get_or_add_to_index(neo4j.Node, users_index, "username", username, user)
results = batch.submit()
print "Created: " + username
现在通过用户名获取用户:
def lookup_user(username):
print node(users_index.get("username", username)[0])
我看到Schema 类,注意到我可以在"User" 标签上创建索引,但我不知道如何获取索引并向其添加实体。
我希望它尽可能高效,那么在"User" 标签上添加索引是否会提高性能,以防我稍后添加更多具有不同标签的节点?它已经是最有效的了吗?
另外,如果我希望我的用户名系统对每个用户都是唯一的,我该如何做到这一点?我如何知道batch.get_or_add_to_index 是获取还是添加实体?
【问题讨论】: