1

私は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 cypherターミナルも試しましたが、結果は50ミリ秒以内に取得されます。私は何か間違ったことをしていますか?

4

2 に答える 2

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);
于 2011-11-23T10:13:59.537 に答える
0

私の理解が正しければ、graphDbService は REST グラフ データベースですよね?

サーバーで Cypher を使用する場合は、代わりに CypherPlugin を使用する必要があります。ここを見てください:http://docs.neo4j.org/chunked/snapshot/cypher-plugin.html

これが役に立てば幸いです。

アンドレス

于 2011-11-23T08:53:05.000 に答える