Neo4j APOC A * с условиями - PullRequest
       7

Neo4j APOC A * с условиями

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

Я успешно использовал следующее, чтобы получить кратчайший путь, используя A * в библиотеке APOC.

apoc.algo.aStar("A", "B", 'Link', 'Length','X','Y') YIELD path, weight

apoc.algo.aStar("A", "B", 'Link', {weight:'Length',default:1, x:'X',y:'Y'}) YIELD path, weight

Как мне добавить фильтр, чтобы в нем использовались только ребра, для которых «Значение» истинно. документация не предоставляет пример.

public class Node{
    public long Id {get;set;}
    public string Name {get;set;}
    public long X {get;set;}
    public long Y {get;set;}
}

public class Link{
   public bool Value {get;set;}
   public long Length {get;set;}
}

1 Ответ

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

Нет примера, потому что эта функция недоступна.

Итак, у вас есть три варианта:

  • добавить значение Length очень высокое для отношений, где "Значение" равноtrue
  • измените модель, добавив свойство "Значение" в тип отношения (т. е. чтобы иметь два типа: Link_On и Link_value_Off), чтобы можно было использовать процедуру apoc.
  • создайте свою собственную A * процедуру, взяв пример из процедуры APOC ( исходный код здесь )
...