我用Neo4J代表文本; 在最简单的情况下,文本是由关系LEMMA_TEXT连接的一系列单词.
我试图找到一个已知单词之后的第N个单词,查询看起来像这样.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word)
WHERE id(anchor) = 3275
RETURN word
Run Code Online (Sandbox Code Playgroud)
在一个特定的情况下,如果我将路径长度增加到33,我会收到此错误:
Neo.DatabaseError.Statement.ExecutionFailure: There is no spoon.
Run Code Online (Sandbox Code Playgroud)
然而,以下查询返回正确的结果.
MATCH (anchor)-[:LEMMA_TEXT*32]->(word)-[:LEMMA_TEXT]->(next)
WHERE id(anchor) = 3275
RETURN next
Run Code Online (Sandbox Code Playgroud)
这表明我想要的节点存在且可以访问.
手册的哪一部分告诉我如何用心灵弯曲勺子?更重要的是,这究竟意味着什么?!
如果我在OS X Sierra(JDK 8u111)上运行以下命令,则需要5秒钟才能运行(而不是像Linux上的毫秒):
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class BeanTest {
public static void main (String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
System.out.println(bean.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
这导致我使用的库大幅减速,其较新的版本称之为管理API的这一部分.我的第一个想法是它是一个DNS问题(计算机在本地家庭NAT上)但我尝试在shell中解析我的本地主机名或我的本地IP地址立即返回(NXDOMAIN)答案.在Java进程上运行dtruss会在5秒滞后期间不断重复这些行:
782/0x36f5: psynch_cvwait(0x7FEE4170B968, 0x20100000300, 0x200) = -1 Err#316
782/0x36f5: gettimeofday(0x7000039B4938, 0x0, 0x0) = 0 0
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,我该怎么做才能解除这个瓶颈?