【问题标题】:Why there are same node in path in my query in neo4j?为什么我在 Neo4j 中的查询路径中有相同的节点?
【发布时间】:2018-12-29 03:41:49
【问题描述】:

有这样的cypher sql:

match p=(:Devices{name:"123.123.123.123"})-[r:Cost*..6]->(:Devices{name:"123.123.123.124"}) with p return p;

然后返回:

{u'p': (123.123.123.123)-[:Cost {Cost: 21}]->(123.123.123.120)-[:Cost {Cost: 92}]->(123.123.123.110)-[:Cost {Cost: 82}]->(123.123.123.119)-[:Cost {Cost: 91}]->(123.123.123.123)-[:Cost {Cost: 56}]->(123.123.123.130)-[:Cost {Cost: 24}]->(123.123.123.124)}

我的道路上有一个环,以及如何避免这种情况。

最后为什么我的查询如此简单和查询 10 深度以下的路径将花费大约 1000s-2500s。

这是我的配置:

dbms.memory.heap.initial_size=4096m
dbms.memory.heap.max_size=9192m
dbms.memory.pagecache.size=10g
dbms.threads.worker_count=16

【问题讨论】:

    标签: python-2.7 time neo4j py2neo


    【解决方案1】:

    也许您的意思是指定 1 到 6 个跃点的路径,而不是正好 6 个:

    match p=(:Devices{name:"123.123.123.123"})-[r:Cost*1..6]->
      (:Devices{name:"123.123.123.124"}) with p return p;
    

    【讨论】:

    • 谢谢,但也会花很多时间在选择路径上并得到结果。如何让选择快速?
    • 能否请您重新表述您的问题?我不明白其中的意思。您的意思是您希望查询更快地返回吗? :Device name 属性上是否有索引?
    • 是的,我希望查询返回更快。现在我查询一个路径如果最大跳数为10,将花费大约1000s。
    • 请一次提出一个具体问题。如果第一个答案解决了您最初的问题,您能否接受答案,这是一个关于提高性能的新问题。在评论中发布链接。
    • 好的,谢谢你的建议!我的意思是每个节点只有一个路径,避免环。不喜欢这样: {u'p': (123.123.123.123)-[:Cost {成本:21}]->(123.123.123.120)-[:成本{成本:92}]->(123.123.123.123)->
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多