Neo4i Как собрать результаты процедуры потоковой передачи PageRank на основе свойства узла - PullRequest
0 голосов
/ 22 октября 2018

У меня есть узлы в 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перед возвратом нормализованных значений?

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

...