2012-10-09 3 views
1

노드가 'label' 인 노드 graphDb이있는 Neo4j 데이터베이스가 있습니다. Lucene 인덱스 'my_nodes' 키 'label'을 사용하여 노드 속성 'label'의 값을 인덱싱합니다. 이제 가능한 값 목록 인 labellist의 값과 동일한 'label'속성을 가진 노드를 검색하려고합니다. 이를 위해, 나는 사이퍼 쿼리를 다음과 같이 썼다 :Neo4j python 바인딩 : 값 집합에 대한 노드 인덱스 쿼리

cypherQ =  """START n=node:my_nodes('""" 
        +' OR '.join(['label:'+str(i) for i in labellist]) + """') 
        RETURN n""" 
result = graphDb.query(cypherQ) 

잘 작동하지만 나는 어쨌든 매개 변수가있는 쿼리를 작성하는 방법이 있는지 궁금해?

내가 좋아하는 뭔가를 시도 :

cypherQ =  """START n=node:my_nodes('label:{params}') 
        RETURN n""" 
result = graphDb.query(cypherQ, params = labellist) 

을하지만 작동 labellist에서 하나 개의 값이있는 경우 비록이 확실히 작동하지 않습니다. 그리고 neo4j 튜토리얼은이 문제에 대해 많은 내용을 제공하지 않습니다.

다시 한 번 Python 바인딩을 Neo4j에 사용하고 있습니다.

답변

1

매개 변수는 인덱스의 전체 쿼리 부분을 위해 노력하고, 그래서 이것은

cypherQ =  """START n=node:my_nodes({queryParam}) 
       RETURN n""" 

것 당신이 당신의 클라이언트 코드에서 쿼리를 구성하고 하나 개의 매개 변수로 사이퍼로 전달합니다.

+0

감사합니다. 작동합니다. 그러나'queryParam'은 첫 번째 옵션과 반대되는 시작과 끝에'''을 포함해서는 안된다는 것을 언급 할 가치가 있습니다. – npobedina

+0

이 부여되었습니다. 고맙습니다! –