使用REST GraphDb时,生成慢Cypher neo4j

时间:2011-11-22 22:19:56

标签: rest neo4j cypher

我正在使用neo4j-rest-graphdb,只是尝试使用Cypher来获取简单的Node结果。

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秒。在最后没有迭代器的情况下,应用程序很快就会安静。我也试过了webadmin cypher终端,结果是在50ms内获取的。我做错了吗?

2 个答案:

答案 0 :(得分:5)

在你的情况下,所有的密码操作(图形匹配,过滤等都会通过非常繁琐和缓慢的电线),你不需要它!

neo4j-rest-graphdb支持远程执行cypher:

就这样做,如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);

答案 1 :(得分:0)

如果我理解正确,graphDbService是一个REST图形数据库,对吗?

如果要在服务器上使用Cypher,则应使用CypherPlugin。看这里:http://docs.neo4j.org/chunked/snapshot/cypher-plugin.html

我希望这有帮助,

安德烈斯