私は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
がエンティティを取得または追加しているかどうかを知るにはどうすればよいですか?