2012-11-29 3 views
5

neo4j에서 auto_index를 사용하고 일치하는 문자열 배열을 전달하고 싶습니다. 나는 당신이 사이퍼 쿼리의 끝 부분에 IN 절을 추가 할 수 있지만 인덱스를 사용하지 않고 모든 레코드의 데이터베이스 스캔을 수행한다고 가정합니다. 인덱스 쿼리로이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Cypher를 사용하여 neo4j의 색인을 사용하여 IN 문을 사용하여 쿼리

facebookId에 auto_index가 있고 백만 개의 사용자 노드가 있다고 가정하고 facebookId가 [ "123", "456", "789"] 인 사용자를 얻으십시오.

답변

11

나는이 답변으로 게시 가치가 가정 :

START n=node:node_auto_index('facebookId:("123", "456", "789")') 
... 

예 : http://console.neo4j.org/r/3mcvr5

+0

을 쓰지 않고도 동일한 결과를 제공합니다. – MonkeyBonkey

+0

레코드의 경우 현재 Neo 1.9.M04가있는 512 개의 필드로 제한됩니다. (나는 Lucene 3.5를 사용한다고 생각한다.) –

+0

고마워, 이것이 나에게 도움이되었다. – jarandaf

1

당신은 예를 들어

start user = node:node_auto_index('facebookId:123 OR facebookId:456') match ... 

http://console.neo4j.org/r/nj98lt처럼 명시 적으로 인덱스 조회를함으로써이 쿼리를 할 것입니다.

+0

난 그 일 것이다 생각하지만, 그것은 매우 긴 내가 일치하는 20 ~ 30 식별자가있는 경우 얻을 수 있습니다 반대. 그것을하는 다른 더 청결한 방법? – MonkeyBonkey

+0

BTW cypher에서 인덱스 쿼리에 전달할 수있는 연산자와 매개 변수에 대한 설명서는 어디에 있습니까? – MonkeyBonkey

+1

물건의 대부분은 여기에 있습니다. 기본 색인 인 Lucene에 직접 전달됩니다. http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Overview –

관련 문제