2015-06-24 2 views
0

Я бег запроса, который возвращает 32k результатов, и я получаю пытаюсь перебрать эти результаты через итератор возвращаемых:.JSP Query.getResult() getNodes() Время Потребляя

Iterator<Node> itr = query.getResult().getNodes(); 

Этот метод является довольно трудоемкий; однако, с большим количеством результатов, поэтому мой вопрос: «Есть ли лучший/более быстрый способ повторения этих результатов?»

ответ

0

Единственное, что я могу предложить, это увеличить лимит результатов для запроса. Значение по умолчанию равно 50. итератора имеет какой-то отложенной загрузки, и она работает в следующем виде:

  • Вы выполнить запрос и ограничение по умолчанию является 50.
  • После итератора приходит к 50-й записи, запрос будет выполненный с пределом 100 (или около того) и смещением 50.
  • И так далее.

Таким образом, если вы установите предел перед выполнением (query.setLimit(someNumber)) на некоторое большое число, то итератор получит больше (или всех) узлов с первым запросом. Это улучшит производительность в вашем случае.

+0

Существует только функция setHitsPerPage(). Я пробовал это с 100 000 в качестве предела и не было увеличения скорости. – user3916570

+0

@ user3916570 нормально, я говорю о javax.jcr.query.Query, и вы используете com.day.cq.search.Query, я прав? –

+0

Правильно, com.day.cq.search.Query – user3916570

Смежные вопросы