Neo4i Как собрать результаты процедуры потоковой передачи PageRank на основе свойства узла

У меня есть узлы в neo4j, которые представляют опубликованные научные статьи, и я хочу проанализировать ссылки между статьями с помощью потокового алгоритма PageRank.

Узлы имеют отношения CITES между ними и собственностью year, Я хочу нормализовать оценки PageRank, используя year Свойство для каждого узла, выполнив:

(PageRankScore - averagePageRankScore(for papers published in this year))/ standardDeviation (for papers published in this year),

Теперь я знаю, что neo4j имеет функции агрегирования avg а также stDev, С учетом вышесказанного, как я могу запустить их для каждого бина узлов / оценок страниц?

Я хочу сделать это для большого количества узлов, поэтому я думаю, что было бы лучше использовать algo.pageRank.stream() функция. Другим вариантом может быть использование Spark и Mazerunner, но я бы хотел избежать этого, если в этом нет полной необходимости.

Мой текущий запрос, который просто передает результаты PageRank, выглядит следующим образом:

CALL algo.pageRank.stream( 'MATCH (p:Paper) WHERE p.year < 2015 RETURN id(p) as id', 'MATCH (p1:Paper)-[:CITES]->(p2:Paper) RETURN id(p1) as source, id(p2) as target', {graph:'cypher', iterations:20, write:false, concurrency:20}) YIELD node, score WITH * ORDER BY score DESC RETURN node.title, node.year, score;

Как я мог изменить это на:

(1) узлы бина и их оценки PageRank по свойству node.year

(2) запустить avg а также stDev на каждой корзине

(3) нормализовать с помощью avg а также stDev перед возвратом нормализованных значений?

Любая помощь будет принята с благодарностью!

0 ответов

Другие вопросы по тегам