저는 py2neo 및 neo4j로 작업하기 시작했습니다.neo4j 및 py2neo에서 인덱스 작업
데이터베이스에서 색인을 사용하는 방법에 대해 혼란 스럽습니다.
나는 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"
라벨에 인덱스를 만들 수 있습니다 것으로 나타났습니다를 ,하지만 인덱스를 얻고 엔티티를 추가하는 방법을 알 수는 없었습니다.
가능한 한 효율적으로 만들고 싶습니다. 나중에 다른 레이블을 사용하는 노드를 추가 할 경우를 대비하여 레이블에 색인을 추가하면 성능이 향상됩니까? 이미 가장 효율적일까요?
또한 사용자마다 고유 한 사용자 이름 시스템을 원한다면 어떻게 할 수 있습니까? batch.get_or_add_to_index
이 엔티티를 가져오고 추가했는지 어떻게 알 수 있습니까?
감사합니다. 이것으로 인해 많은 도움이되었습니다. 레이블 인덱싱을 기반으로하는 속성을 가진 노드에 어떻게 액세스합니까? 유스 케이스의 레거시 인덱스를 계속 사용하도록 권장 하시겠습니까? –
스키마 인덱스는 자동으로 생성됩니다. 스키마를 만든 후에는 인덱싱 된 속성에 의해 노드가 자동으로 추가되고 제거됩니다. 또한 Cypher에서 자동으로 사용됩니다. with MATCH (u : User {name : "foo"}) RETURN u' –
py2neo를 사용하여 데이터베이스를 어떻게 쿼리합니까? 'ReadBatch.get_indexed_nodes'를 사용합니까? 인덱스 매개 변수에는 무엇을 사용합니까? –