为什么Neo4J告诉我没有勺子?

时间:2015-05-27 20:13:00

标签: neo4j cypher

我使用Neo4J来表示文本;在最简单的情况下,文本是由关系LEMMA_TEXT连接的一系列单词。

我试图在一个已知单词之后找到第N个单词,查询看起来像这样。

MATCH (anchor)-[:LEMMA_TEXT*32]->(word) 
WHERE id(anchor) = 3275 
RETURN word

在一个特殊情况下,如果我将路径长度增加到33,我会收到此错误:

Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon.

然而以下查询返回正确的结果。

MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next) 
WHERE id(anchor) = 3275 
RETURN next

表明我想要的节点存在且可以访问。

本手册的哪一部分告诉我如何用脑子弯曲勺子?更重要的是,这究竟意味着什么?!

2 个答案:

答案 0 :(得分:2)

如果有任何数字像33那样中断,则意味着限制高达32,为什么32? 2 ^ 5。

大多数限制都是2,MongoDB文档大小不能超过16 MB,在一个集合上可能有最大索引,不超过64等等,这并非易事。

为什么它作为32然后接下来工作,因为直到32它可以在一个操作中实现,而在最后一个操作中它可以看到下一个操作作为另一个操作。但它不能在一次手术中使用33个。

这些限制中的大多数基本上都是健全性检查,而不是真正的技术边界。

至于为什么它几乎总是2的因素,我希望别人回答或换句话说我不知道​​。

答案 1 :(得分:0)

您是否尝试将登陆和搜索语句拆分为2?

另外,你应该为文字(forormance)添加标签

示例:

MATCH (anchor)
WHERE id(anchor) = 3275 
WITH anchor
MATCH (anchor)-[:LEMMA_TEXT*32]->(word) 
RETURN word

你得到同样的错误?

相关问题