Neo4j:Java API IndexHits <node> .size()为0 </node>

时间:2013-08-19 11:20:52

标签: neo4j

我正在尝试使用Neo4j的Java API,但我似乎陷入了IndexHits。如果我用Cypher使用

查询数据库
START n=node:types(type="Process") RETURN n;

我得到所有类型为“Process”的2087个节点。

在我的申请表中,我有以下几行

Index<Node> nodeIndex = db.index().forNodes("types");
IndexHits<Node> hits = nodeIndex.get("type", "Process");
System.out.println("Node index size: " + hits.size());

导致我的控制台吐出值0.这里,db当然是GraphDatabaseService的一个实例。

我期望一个包含所有2087个节点的对象。我做错了什么?

.size()问题只是我的迭代器的前奏

 for(Node process : hits) { ... }

但是当hits.size()== 0时,这并不多。根据http://api.neo4j.org/1.9.2/org/neo4j/graphdb/index/IndexHits.html,如果hits中存在某些内容,这应该是可能的。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我明白了。伙计,我觉得很尴尬......

碰巧我将DB_PATH设置为我的默认数据文件夹,而默认存储文件夹是默认数据文件夹加上graph.db。当我尝试从更正后的DB_PATH运行代码时,我收到一条错误,说由于Neo4j服务器正在运行,因此存在锁文件。关闭它后,它完美地工作。

因此,如果您碰巧看到以下错误,请停止服务器并再次运行代码:

Caused by: org.neo4j.kernel.StoreLockException: Could not create lock file at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:74) at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:40) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:491)

我在几个论坛上发现你无法运行Neo4j服务器并使用Java API同时查询它。