当前位置: 首页 > 知识库问答 >
问题:

为什么在Neo4j浏览器中一个适度的匹配和创建查询旋转?

薛飞星
2023-03-14

我正在使用Neo4j桌面浏览器创建一个网站内的页面关系图。我确信csv加载使这个查询更加高效,但是看起来这个查询不会引起那么多的问题。

    null

我正在创建大约6500个非常基本的节点(每个节点包含一条信息):

创建(A1:link{description:“www.sampleLink.com/example1”})

我正在Excel中构建我的查询,并将其复制粘贴到neo4j浏览器中。我可以用两种方法来构造它:

create (a1:link {description:"www.samplelink.com/example1"})
create (a2:link {description:"www.samplelink.com/example2"})
create (a3:link {description:"www.samplelink.com/example3"})
...x6,000
create (a1:link {description:"www.samplelink.com/example1"}),
(a2:link {description:"www.samplelink.com/example2"}),
(a3:link {description:"www.samplelink.com/example3"}),
...x6,000
match (a1:link {description:"www.samplelink.com/example1"})
match (a2:link {description:"www.samplelink.com/example2"})
match (a3:link {description:"www.samplelink.com/example3"})
...x6,000

create (a1)-[:REF]->(a3)
create (a1)-[:REF]->(a47)
create (a5832)-[:REF]->(a9)
...x5,000

此查询运行2小时以上,然后崩溃/超时。

问:从语法上来说,我是不是在做一些非常需要内存的事情?这应该用稍微不同的方式写吗?一个带逗号的匹配短语?一个为关系创建的短语?

...

MATCH (a1:link {desc:"alpha"}),
(a2:link {desc:"beta"}),
(a3:link {desc:"gamma"})

我确实尝试在:link(description)上创建索引create index,但从SQL背景来看,我不明白这将如何有效地加快只有6,500个文本字符串匹配的查询。

3.相似挂起问题

Neo4j在批量导入时崩溃


共有1个答案

皇甫飞光
2023-03-14

问题1:应该将参数中所有description值的列表传递给查询。查询可以使用unwind从该列表中获取元素。查询将非常小,执行速度更快(还可以避免密码注入攻击)。

例如(如果列表是在descriptions参数中传递的):

UNWIND $descriptions AS desc
CREATE (a1:link {description: desc})

您可能希望将非常大的列表分解为更小的块,但6500并不是很大。

UNWIND $descriptionPairs AS descPair
MATCH (a1:link {description: descPair[0]})
MATCH (a2:link {description: descPair[1]})
CREATE (a1)-[:REF]->(a2)

而且,为了使查询真正快速,还应该在:link(description)上创建索引。

注意:如果希望避免创建重复的节点或关系,那么对于我的两种方法,应该使用MERGE而不是create。您应该仔细阅读有关MERGE的文档,以便了解如何正确使用它,但是上面的查询非常简单,因此将create替换为MERGE是安全的。

 类似资料:
  • 我得到了 “需要名为ParamEmail的参数”

  • 问题内容: 浏览器引擎从右到左匹配CSS选择器。因此,他们首先找到孩子,然后检查父母,看他们是否符合规则的其余部分。 为什么是这样? 只是因为规格说明吗? 如果从左到右进行评估,是否会影响最终的布局? 对我来说,最简单的方法是使用元素数量最少的选择器。因此,ID首先(因为它们只能返回1个元素)。然后,可能是类或具有最少节点数的元素- 例如,页面上可能只有一个范围,因此请使用引用范围的任何规则直接转

  • 我正在尝试创建一个可以被web应用程序或其他节点模块使用的npm包。 如果我只支持浏览器,我只会分配给window

  • 我已经用ImageView和TextView制作了抽屉菜单,它可以run.However,当我想用两个ImageView和一个TextView创建抽屉菜单时,它会用我的第二个ImageView显示错误(“尝试调用虚拟方法”)(我代码中的变量名称是“img”) 我的代码如下: 这是我的日志: 09-16 22:25:38.458:E/AndroidRuntime(14966):致命例外:主 09-1

  • 问题内容: 也许这是一个明显的答案,但是 为什么 地球上 会浏览器决定创建自己的供应商前缀之类的? 我的意思是:为什么我必须输入: 是否因为每个平台都认为“我们很酷,我们会想出一种 更好的 方法来制作圆角”?键入三行似乎是完全和莫名其妙的冗余。 问题答案: 这是因为这些功能是在规范到达最终发布阶段之前由供应商实施的。 供应商前缀确保与功能更改等没有冲突。 最初,供应商前缀的目的是允许浏览器制造商开

  • 本文向大家介绍浏览器中window.length的结果是什么?为什么?相关面试题,主要包含被问及浏览器中window.length的结果是什么?为什么?时的应答技巧和注意事项,需要的朋友参考一下 神奇的问题,神奇的答案