我正在运行一个表现良好的两部分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/>" );
}
有什么建议可以加快速度吗?谢谢
答案 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")
}