在最短路径上过滤节点和边缘neo4j

时间:2016-05-09 09:11:39

标签: neo4j shortest-path

有没有办法在Neo4J中运行最短路径算法,同时使用>对边缘或节点进行过滤。运营商。 比如在具有更高时间戳的节点上进行过滤?

干杯

1 个答案:

答案 0 :(得分:0)

在某种程度上,您可以使用查询谓词(http://neo4j.com/docs/3.0.1/query-predicates.html)。

以下是使用内置示例电影图的示例。该查询找到从Movie到另一个MATCH p = shortestPath((m1:Movie)-[*]-(m2:Movie)) WHERE m1.title = 'The Birdcage' AND m2.title = 'Sleepless in Seattle' AND ANY(x in nodes(p) WHERE x.name = 'Kevin Bacon') RETURN p 的最短路径,并过滤通过Kevin Bacon的路径。

private void ThreadFunc(object state)
{
    Context ctx = (Context)state;

    Command cmd = ctx.CommandList;
    Processor proc = ctx.Processor;

    while (cmd != null)
    {
        switch(cmd.Type)
        {
            case CommandType.Simple:
                proc.ExecuteSimpleCommand(cmd);
                break;
            case CommandType.Complex:
                cmd.Data = ComputeData(cmd.Dataset);
                proc.ExecuteComplexCommand(cmd);
                break;
        }

        cmd = cmd.Next;
    }
}