JSP Query.getResult().getNodes()耗时
我正在运行一个返回32k个结果的查询,我正在尝试通过以下返回的迭代器对这些结果进行迭代:JSP Query.getResult().getNodes()耗时,jsp,iterator,aem,Jsp,Iterator,Aem,我正在运行一个返回32k个结果的查询,我正在尝试通过以下返回的迭代器对这些结果进行迭代: Iterator<Node> itr = query.getResult().getNodes(); Iterator itr=query.getResult().getNodes(); 这种方法相当耗时;但是,对于大量的结果,我的问题是“是否有更好/更快的方法来迭代这些结果?”我唯一能建议的是增加查询结果的限制。默认值为50。 迭代器具有某种延迟加载,它以下一种方式工作: 执行查询,默
Iterator<Node> itr = query.getResult().getNodes();
Iterator itr=query.getResult().getNodes();
这种方法相当耗时;但是,对于大量的结果,我的问题是“是否有更好/更快的方法来迭代这些结果?”我唯一能建议的是增加查询结果的限制。默认值为50。 迭代器具有某种延迟加载,它以下一种方式工作:
- 执行查询,默认限制为50
- 在迭代器到达第50个条目后,将使用limit 100(大约)和offset 50执行查询
- 等等
所以,如果您在执行之前将limit(
query.setLimit(someNumber)
)设置为某个较高的数值,迭代器将在第一次查询时获取更多(或全部)节点。这将提高您的性能。只有一个setHitsPerPage()函数。我试过以100000为限制,但没有速度提升。@user3916570好的,我说的是javax.jcr.query.query,而您使用的是com.day.cq.search.query,对吗?正确,com.day.cq.search。Query@user3916570据我所知,您正在使用QueryBuilder创建查询。确定是否有可能优化它并查询它所创建的。您可以尝试自己编写查询,设置限制并测试javax.jcr.query.query是否更快。