慢Cypher neo4j使用REST GraphDb时的结果



我正在使用neo4j-rest-graphdb,只是试图使用Cypher获取一个简单的节点结果。

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密码终端,结果在50ms内获取。我做错什么了吗?

在您的情况下,所有的密码操作(图匹配,过滤等)将通过网络,这是非常繁琐和缓慢的),您不希望这样!

neo4j-rest-graphdb支持密码开箱即用的远程执行:

就像这个测试用例中显示的那样做:

    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);

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

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

我希望这有帮助,

Andres

最新更新