我正在使用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