Как я могу найти все пути, которые меньше, чем максимум в Neo4j DB? - PullRequest
0 голосов
/ 08 ноября 2018

Все. Я новый, чтобы использовать Neo4j База данных.

Теперь у меня есть график, который содержит узлы и отношения, я хочу получить весь путь от А до других узлов, общая стоимость которых меньше максимальной .

Максимум должен быть изменен. Я использую Java для запроса Neo4j. Я знаю, что Evaluator cl могут зависеть, когда мы прекращаем обход пути. Но я могу дать свой Maximum интерфейсу evaluate()

Мой код здесь:

public class MyEvaluators implements Evaluator {

@Override
public Evaluation evaluate(Path path) {
    // TODO Auto-generated method stub

    Iterable<Relationship> rels = path.relationships();
    double totalCost = 0.0;
    for(Relationship rel: rels){
        totalCost += (double) rel.getProperty("cost");
    }

    return totalCost > MAXIMUM ? Evaluation.EXCLUDE_AND_PRUNE:Evaluation.INCLUDE_AND_CONTINUE;
}}

И я не хочу ограничивать глубину пути. Так как я могу быстро выполнить этот запрос?

1 Ответ

0 голосов
/ 10 ноября 2018

На какую версию вы смотрите?

https://neo4j.com/docs/java-reference/current/tutorial-traversal/

В текущем API вы можете передать объект контекста (состояние-ветвь) в обход, который сохраняет ваше текущее состояние для каждой ветви. Таким образом, вы можете накапливать общую стоимость в PathEvaluator:

https://neo4j.com/docs/java-reference/3.4/javadocs/org/neo4j/graphdb/traversal/PathEvaluator.html

Также, возможно, вы хотите получить от Dijkstra Evaluator.

https://github.com/neo4j/neo4j/blob/3.5/community/graph-algo/src/main/java/org/neo4j/graphalgo/impl/path/Dijkstra.java

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