2011-11-22 8 views
1

neo4j-rest-graphdb와 함께 작업 중이며 Cypher를 사용하여 간단한 노드 결과를 가져 오려고했습니다.Rlow GraphDb를 사용할 때 Slow Cypher neo4j 결과가 발생했습니다.

CypherParser parser = new CypherParser(); 
ExecutionEngine engine = new ExecutionEngine(graphDbService); 

Query query = parser.parse("START referenceNode = node (0) " + 
          "MATCH referenceNode-[PRODUCTS_REFERENCE]->products-[PRODUCT]->product " + 
          "RETURN product.productName " + 
          "ORDER BY product.productId " + 
          "SKIP 20" 
          "LIMIT 10"); 
ExecutionResult result = engine.execute(query); 

Iterator<Map<String, Object>> iterator = result.javaIterator(); 

결과를 반복하는 가장 좋은 방법은 무엇입니까? 마지막 줄은 내 서비스가 ~ 6 초 동안 멈추게합니다. 결국 iterator가 없으면 애플리케이션은 매우 조용합니다. 나는 또한 webadmin cypher 터미널을 시험해 보았다. 결과는 50ms 이내에 가져왔다. 내가 뭐 잘못하고 있니?

답변

5

모든 사이퍼 작업 당신은 (그래프 매칭, 필터링 등 지독하게 수다와 느린 와이어를 통해 갈 것입니다) 그 싫어!

neo4j - 휴식 - graphdb 원격 상자 밖으로 사이퍼의 실행을 지원합니다 testcase이에 표시된 것처럼

그냥 할 뭔가 :

RestCypherQueryEngine queryEngine = new RestCypherQueryEngine(restGraphDatabase.getRestAPI());  
    final String queryString = "start n=node({reference}) return n"; 
    Map params = MapUtil.map("reference",0); 
    final Node result = (Node) queryEngine.query(queryString, params).to(Node.class).single(); 
    assertEquals(restGraphDatabase.getReferenceNode(), result); 
+0

그래, 내가 찾던 무엇을! :) 고마워요. Micahel !!! – Alebon

0

정확하게 이해했다면 graphDbService는 REST 그래프 데이터베이스입니다. 맞습니까?

서버에서 Cypher를 사용하려면 대신 CypherPlugin을 사용해야합니다. 여기 봐 :이 도움이되기를 바랍니다 http://docs.neo4j.org/chunked/snapshot/cypher-plugin.html

,

안드레스

귀하의 경우에는