A* Neo4j возвращает все пути и условия на ребрах
В настоящее время я использую библиотеку apoc, чтобы получить кратчайший путь со стоимостью (длиной)
apoc.algo.aStar(
startNode, endNode, 'KNOWS|<WORKS_WITH|IS_MANAGER_OF>',
'distance','lat','lon'
) YIELD path, weight
Есть две вещи, которые мне нужны:
Как мне заставить его вернуть все возможные пути, а не только один?
Как сделать так, чтобы поиск выполнялся только в egdes, где PropertyA: true, PropertyB: false, PropertyC содержит "abc" и т. Д.?
Ответ не обязательно должен быть в формате apoc, но может быть с CYPHER или C#, пожалуйста. Спасибо
1 ответ
Решение
Отвечая на свой первый вопрос, вы можете использовать allShortestPaths
функция. Для вашего второго вопроса вы можете задать WHERE CONDITION
или ваши отношения.
Это моя попытка использования моей базы данных:
MATCH path=allShortestPaths((:User)-[:MEMBER_OF_GROUP*1..3]-(:Group)) WHERE ALL(x in relationships(path) WHERE x.last_seen > 1534326850) RETURN path
Вам нужно добавить свой путь в allShortestPaths
а для поиска по ребрам проверяем пути отношений в WHERE CONDITION