サイファークエリのインデックス作成と実行に関する嵐に同意します。ただし、ノード識別子は一時的なものであることを指摘しておきます。それらは限られた時間枠内で有用ですが、その後リサイクルされます。したがって、ノードは、複数の実行(またはガベージコレクターの実行後)で必ずしも同じ識別子を持つとは限りません。
一般に、Neo4Jでは、(トラバーサルではなく)プロパティでノードをクエリする必要がある場合は、インデックスを作成します。たとえば、「actors」という名前のインデックスを作成できます。
IndexManager index = graphDb.index();
Index<Node> actors = index.forNodes( "actors" );
インデックスが存在しない場合、このコマンドはインデックスを作成します。それ以外の場合は、既存のインデックスを返します。
ただし、SQLとは異なり、Neo4Jではノードを手動でインデックスに追加する必要があります。
Node reeves = graphDb.createNode();
reeves.setProperty( "name", "Keanu Reeves" );
actors.add( reeves, "name", reeves.getProperty( "name" ) );
次に、指定したクエリに一致するすべてのノードのインデックスをクエリできます(インデックスは一意性を保証しません)。
IndexHits<Node> hits = actors.get( "name", "Keanu Reeves" );
Node reeves = hits.getSingle();
ソース:https ://neo4j.com/docs/java-reference/current/indexing/#indexing-create
Neo4Jインデックスは実際にはノードからプロパティを読み取らないことに注意してください。ノードにインデックスを付ける方法を、明示的に指示する必要があります。ノードに保存されていないインデックスを作成する任意の情報を提供することもできますが、お勧めしません。