如何加快解析Neo4j ExecutionResult集?

时间:2013-02-11 20:31:17

标签: neo4j

我正在运行一个表现良好的两部分Neo4j搜索。但是,ExecutionResult集的实际解析比Cypher查询花费的时间长8或10倍。我按如下方式循环执行ExecutionResult映射:

result = engine.execute("START facility=node({id}), service=node({serviceIds}) WHERE    facility-->service RETURN facility.name as facilityName, service.name as serviceName", cypherParams);

for ( Map<String, Object> row : result )
{           
    sb.append((String) row.get("facilityName")+" : " + (String) row.get("serviceName") + "<BR/>" );
}

有什么建议可以加快速度吗?谢谢

1 个答案:

答案 0 :(得分:1)

您是否需要访问实体或是否足以使用节点(因此使用核心API)?在后一种情况下,您可以使用比Cypher更快的遍历API。

我不确定你的用例是什么,但根据情况,你可能会做这样的事情:

   for (final Path position : Traversal.description().depthFirst()
       .relationships(YOUR_RELATION_TYPE, Direction.INCOMING)
       .uniqueness(Uniqueness.NODE_RECENT)
       .evaluator(Evaluators.toDepth(1)
       .traverse(facilityNode,serviceNode)) {
        // do something like e.g. position.endNode().getProperty("name")
    }