0

Neo4j 用の Java API を使用しようとしていますが、IndexHits でスタックしているようです。Cypher を使用して DB にクエリを実行すると、

START n=node:types(type="Process") RETURN n;

「プロセス」タイプの 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 の場合はあまり効果がありませ。の何かhits

よろしくお願いします。

4

1 に答える 1

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 を使用してクエリを実行できないことがわかりました。

于 2013-08-21T07:51:03.067 に答える