A* Neo4j return 边上的所有路径和条件

A* Neo4j return all paths and conditions on edges

我目前正在使用 apoc 以成本(长度)

获得最短路径的库
apoc.algo.aStar(
    startNode, endNode, 'KNOWS|<WORKS_WITH|IS_MANAGER_OF>', 
    'distance','lat','lon'
) YIELD path, weight

我需要两件事:

  1. 我将如何着手return所有可能的路径,而不仅仅是一个?

  2. 如何让它只搜索 PropertyA: true, PropertyB: false, PropertyC 包含 "abc" 等的 egdes?

答案不一定要使用 apoc,但可以使用 CYPHER 或 C#。 谢谢

在回答您的第一个问题时,您可以使用 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

中搜索边检查路径关系