A * Neo4j返回边缘上的所有路径和条件

时间:2018-08-16 19:42:38

标签: c# neo4j cypher shortest-path neo4j-apoc

我当前正在使用载脂蛋白  库以成本(长度)获得最短路径

apoc.algo.aStar(
    startNode, endNode, 'KNOWS|<WORKS_WITH|IS_MANAGER_OF>', 
    'distance','lat','lon'
) YIELD path, weight

我需要两件事:

  1. 我将如何使它返回所有可能的路径而不仅仅是一个?

  2. 我如何只搜索例如PropertyA:true,PropertyB:false,PropertyC包含“ abc”等的egdes ??

答案不一定非要使用apoc,而请使用CYPHER或C#。 谢谢

1 个答案:

答案 0 :(得分: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中检查路径关系