使用REST GraphDb时,生成慢Cypher neo4j

Ale*_*bon 1 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();
Run Code Online (Sandbox Code Playgroud)

迭代结果的最佳做法是什么?最后一行导致我的服务挂起约6秒.在最后没有迭代器的情况下,应用程序很快就会安静.我也试过了webadmin cypher终端,结果是在50ms内获取的.难道我做错了什么?

Mic*_*ger 5

在你的情况下,所有的密码操作(图形匹配,过滤等都将通过电线,这是非常健谈和慢),你不希望这样!

neo4j-rest-graphdb支持远程执行cypher开箱即用:

就是这样,在这个测试用例中显示的东西:

    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);
Run Code Online (Sandbox Code Playgroud)