0

私は Neo4J と Neo4J C# クライアントを使用してきました..

neo4jclient wikiは、ノードのcrud操作で私を助けました..しかし、wiki は突然そこで終わります..私はソース コードのテスト メソッドを調べ、関係について理解し、オンラインで検索して、インデックス作成のしくみを理解しました。

これまでのところ、大まかに私が持っているものは次のとおりです。

//create indexing on user and car
client.CreateIndex("User", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.fulltext }, IndexFor.Node); 
client.CreateIndex("Car", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.fulltext }, IndexFor.Node);

//create user
client.Create(new User() { Name = "Dovakiin", Job = "Dragon Slayer" });
client.Create(new User() { Name = "Ulfric stormcloak", Job = "Imperial Slayer" });

//create Car
client.Create(new Car() { Name = "Paarthurnax", Modal = 212 });

//User owns car relationship
client.CreateRelationship(userRef, new Owns_CarRelationship(CarRef));

これは私が今立ち往生している場所です..名前でユーザーを検索しようとすると、暗号クエリはゼロの結果を返します:

 start u=node:User(Name="Dovakiin") return u;

明らかにゼロのノードを返す理由がよくわかりません

start n=node(*) return n;

すべてのノードを表示します。

インデックス作成中に他に何か不足していますか? それとも、これはインデックスにまったく関連していませんか? 各ノードをインデックスに追加する必要はありませんか?

私がやろうとしているのは、特定のプロパティを持つノードを選択することだけです:Name = "Dovakiin"この場合..これを選択するにはどうすればよいですか?

4

2 に答える 2

3

ulkas の回答を拡張するために、自動インデックス作成を有効にしたい場合、ドキュメントが少しわかりにくい場合 (初めて読んだときのように)、これが設定方法です。

いくつかのノード プロパティに自動的にインデックスを付けたいとしましょう。「名前」と「職業」と言ってください。/conf/neo4j.properties ファイルを開くと、次のように表示されます。

# Autoindexing

# Enable auto-indexing for nodes, default is false
#node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
#node_keys_indexable=name,age

次に、ファイルを次のように編集する必要があります。

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=name,job

これが完了したら、自動インデックス作成を有効にするために、neo4j を再起動する必要があります。また、補足として、現在既存のノードは自動インデックス化されないため、それらを再作成する必要があります。ゼロから始めたくない場合は、更新方法に関するドキュメントを次に示します: http://docs.neo4j.org/chunked/milestone/auto-indexing.html#auto-indexing-update-removal (I'試したことがない)。

次に、次のようなノードの検索を開始できます。

start n=node:node_auto_index(name="Dovakiin"), or
start n=node:node_auto_index(job="Dragon Slayer")

または、C# クライアントで次のようにします。

Node<User> myNode = client.QueryIndex<User>("node_auto_index", IndexFor.Node, "name:Dovakiin").First();, or
Node<User> myNode = client.QueryIndex<User>("node_auto_index", IndexFor.Node, "job:Dragon Slayer").First();

/conf/neo4j.properties ファイルで設定するとすぐに、リレーションシップでも同じことができます。ノードの場合とまったく同じ方法で行います。

于 2013-01-16T18:46:04.450 に答える
2

次のように、手動でノードをインデックスに追加する必要があります

client.indexRef1.addToIndex(nodeRef, 'name', 'Dovakiin') client.indexRef2.addToIndex(nodeRef, 'job', 'Dragon Slayer')

ノードを自動的にインデックスに追加する場合に備えて、neo4j には自動インデックス作成機能もあります。

于 2013-01-16T14:41:27.203 に答える