我正在使用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内获取的。我做错了吗?
答案 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
我希望这有帮助,
安德烈斯