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
我需要两件事:
我将如何着手return所有可能的路径,而不仅仅是一个?
如何让它只搜索 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
中搜索边检查路径关系
我目前正在使用 apoc 以成本(长度)
获得最短路径的库apoc.algo.aStar(
startNode, endNode, 'KNOWS|<WORKS_WITH|IS_MANAGER_OF>',
'distance','lat','lon'
) YIELD path, weight
我需要两件事:
我将如何着手return所有可能的路径,而不仅仅是一个?
如何让它只搜索 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