首页 > 解决方案 > A* 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#。谢谢

标签: c#neo4jcyphershortest-pathneo4j-apoc

解决方案


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


推荐阅读