2015-01-20 89 views
0
 public List<Errand> interestFeed(Person person, int skip, int limit) 
     throws ControllerException { 

    person = validatePerson(person); 
    String query = String 
      .format("START n=node:ErrandLocation('withinDistance:[%.2f, %.2f, %.2f]') RETURN n ORDER BY n.added DESC SKIP %s LIMIT %S", 
        person.getLongitude(), person.getLatitude(), 
        person.getWidth(), skip, limit); 
    String queryFast = String 
      .format("START n=node:ErrandLocation('withinDistance:[%.2f, %.2f, %.2f]') RETURN n SKIP %s LIMIT %S", 
        person.getLongitude(), person.getLatitude(), 
        person.getWidth(), skip, limit); 
    Set<Errand> errands = new TreeSet<Errand>(); 
    System.out.println(queryFast); 

    Result<Map<String, Object>> results = template.query(queryFast, null); 


    Iterator<Errand> objects = results.to(Errand.class).iterator(); 
    return copyIterator (objects); 
} 

public List<Errand> copyIterator(Iterator<Errand> iter) { 
    Long start = System.currentTimeMillis(); 
    Double startD = start.doubleValue(); 
    List<Errand> copy = new ArrayList<Errand>(); 
    while (iter.hasNext()) { 
     Errand e = iter.next(); 
     copy.add(e); 
     System.out.println(e.getType()); 
    } 
    Long end = System.currentTimeMillis(); 
    Double endD = end.doubleValue(); 
    p ((endD - startD)/1000); 
    return copy; 
} 

当我剖析copyIterator函数时,大约需要6秒钟才能获取10个结果。我使用Spring Data Neo4j Rest来连接运行在本地机器上的Neo4j服务器。我甚至放了一个打印函数来查看迭代器转换为列表的速度有多快,并且看起来确实很慢。每个iterator.next()是否会创建一个新的Http调用?Spring Data Neo4j Ridiculously Slow Over Rest

回答

1

如果Errand是一个节点实体,那么是的,spring-data-neo4j会为每个实体发出一个http调用来获取它的所有标签(它是neo4j的错,当你返回整个节点时它不返回标签)。

您可以在org.springframework.data.neo4j.rest.SpringRestCypherQueryEngine中启用调试级别日志记录,以记录所有到neo4j的密码语句。

为了避免这种通话使用@QueryResulthttp://docs.spring.io/spring-data/data-neo4j/docs/current/reference/html/#reference_programming-model_mapresult

+0

谢谢您的回答,但以纪念它,我用的是neo4jtemplate.query()函数,因为空间查询不支持的参数。那么如何使用@QueryResult template.query(queryFast,null)来映射结果; – 2015-01-22 23:09:15

+0

好主意谢谢。 – 2015-01-24 16:50:55