3

私はJavaに埋め込まれたNEO4Jで働いています。NODE_abcという名前のノードがあり、いくつかのプロパティがあるとします。getProperty()を使用してプロパティを取得できるように、ノードを選択したいと思います。

mynode.getProperty()を使用してノード「NODE_abc」のプロパティを取得できるように、mynodeとしてNODE_abcを選択したいと思います。

ノード「NODE_abc」の名前は変数に格納されます。たとえば、String str="NODE_abc"などです。

4

2 に答える 2

9

サイファークエリのインデックス作成と実行に関する嵐に同意します。ただし、ノード識別子は一時的なものであることを指摘しておきます。それらは限られた時間枠内で有用ですが、その後リサイクルされます。したがって、ノードは、複数の実行(またはガベージコレクターの実行後)で必ずしも同じ識別子を持つとは限りません。

一般に、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インデックスは実際にはノードからプロパティを読み取らないことに注意してください。ノードにインデックスを付ける方法を、明示的に指示する必要があります。ノードに保存されていないインデックスを作成する任意の情報を提供することもできますが、お勧めしません。

于 2013-03-12T19:59:29.503 に答える
3

「node_abc」という名前のノードの意味がわかりません。ノードには名前はありませんが、node.getId()で取得できる一意のID(=識別子)があります。つまり、nameプロパティを持つノードがあると思います。nameプロパティにインデックスがある場合は、インデックスを介して取得できます(インデックス検索)。ノードの識別子がある場合は、CYPHERクエリ(cypherクエリの実行)を介してそれを取得することもできます。

于 2013-03-12T18:25:10.443 に答える