Подсчет самой большой степени узла в Neo4j с использованием собственной хранимой процедуры - PullRequest
0 голосов
/ 25 апреля 2018

Чтобы попрактиковаться и глубоко погрузиться во внутренности Neo4j, я решил реализовать простую хранимую процедуру, чтобы найти наибольшую степень узла.

Я знаю, что она была реализована:

call apoc.stats.degrees(null)

Как ни странно, я получил ошибку:

Нет процедуры с именем apoc.stats.degrees, зарегистрированной для этого экземпляра базы данных.Убедитесь, что вы правильно написали имя процедуры и что процедура развернута правильно.

в версии 3.2.3.

Однако я собираюсь реализовать ее самостоятельно ипоймите, где я был не прав: посмотрите на этот фрагмент кода:

@Procedure(name = "com.maxdemarzi.get_max_degree", mode = Mode.DEFAULT)
@Description("CALL com.maxdemarzi.get_max_degree()")
public Stream<LongResult> GetMaxDegree() {

ResourceIterable<Node> allNodes = db.getAllNodes();
int degree = allNodes.stream().max((Node n1, Node n2)-> n1.getDegree() >= n2.getDegree() ? 0 : 1).get().getDegree();

return Stream.of(new LongResult(Long.valueOf(degree)));
}

Он всегда возвращает 0, несмотря на то, что в моем графе есть узел со степенью 5.

Каждый совет, который позволяет лучше понять, почему мой код не в порядке, приветствуется!

1 Ответ

0 голосов
/ 25 апреля 2018

Пожалуйста, проверьте apoc-3.2.3.x.jar, установленный в плагинах Neo4j

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...