Neo4j StatementResult слишком медленный - PullRequest
0 голосов
/ 19 сентября 2018

Я использую Java-драйвер для подключения к базе данных Neo4j.Я написал ниже код для запроса и получения результата.

StatementResult response = session.run("MATCH (a:File {id:'" + file + "'}) RETURN a.pagerank");
while(response.hasNext())
    sumPageRank += response.next().get("a.pagerank").asDouble();

Но это работает слишком медленно.После профилирования я вижу, что первый оператор работает нормально, но метод hasNext() делает его медленным вопреки моим ожиданиям.Потому что, похоже, получение ответа происходит быстро, а анализ - медленно.Затем я попробовал метод list ():

StatementResult response = session.run("MATCH (a:File {id:'" + file + "'}) RETURN a.pagerank");
List<Record> records = response.list();
for(Record r : records)                    
    sumPageRank += r.get("a.pagerank").asDouble();

Это тоже медленно.Что делает медленным это метод list().Итак, я ищу быстрый способ получить ответ на запрос cypher.

1 Ответ

0 голосов
/ 19 сентября 2018

Похоже, вы пытаетесь выполнить операцию суммирования на странице поиска по всем результатам.Это более эффективно, если вы делаете это в самом запросе (а также используете здесь параметры, передавая fileId в карте параметров, а не строку, добавляющую идентификатор):

MATCH (a:File {id:$fileId}) 
RETURN sum(a.pagerank) as sumPageRank
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...