2

Neo4JClient を使用してインデックスにノードを追加する方法の非常に簡単な例が必要です

次の C# コードでは、インデックスと従業員ノードを作成しています。

質問:
次のコードでは、作成されたノードをどのようにインデックスに追加できますか? ソリューションでは、EmployeeID または Name で検索できるようにする必要があります。

    クラス プログラム
    {
        static void Main(string[] args)
        {
            //Neo4Jに接続
            var graphClient = new GraphClient(new Uri(@"http://localhost:7474/db/data"));
            graphClient.Connect();

            //インデックスを作成
            graphClient.CreateIndex("employee", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.exact }, IndexFor.Node);

            //Employee ノードを作成します
            var employee = new Employee() { EmployeeID = "12345", Name = "マイク"};
            NodeReference employeeRef = graphClient.Create(従業員);

            //作成したばかりのノードを Employee インデックスに追加します。  

        }
        プライベートクラス社員
        {
            [JsonProperty("従業員ID")]
            公開文字列 EmployeeID { get; 設定; }

            [JsonProperty("名前")]
            公開
4

1 に答える 1

2

注:この回答は Neo4jClient 1.0.0.474 に適用されます。更新されていることを確認してください。

ノードを作成するときに、インデックス エントリを指定できます。

var employeeRef = graphClient.Create(
    employee,
    new IRelationshipAllowingParticipantNode<Employee>[0],
    new []
    {
        new IndexEntry("employee")
        {
            {"EmployeeID", 1234 },
            { "Name", "Mike" }
        }
    }
);

いくつかの理由により、少し冗長に見えます。

  1. 少なくとも 1 つの関係がなければ、ノードを作成することはほとんどありません。関係は、その 2 番目のパラメーターで適切にスタックされます。

  2. 1 つのノードが複数のインデックスになる可能性があり、キーと値がノードと一致する必要はありません。

この構文をデフォルトのシナリオに適したものにしたいと考えていますが、まだ行っていません。

ノードを更新するときは、新しいインデックス エントリも指定する必要があります。

graphClient.Update(employeeRef,
    e =>
    {
        e.Name = "Bob";
    },
    e => new[]
    {
        new IndexEntry("employee") { { "Name", e.Name } }
    });

を使用して、ノード自体を更新せずにノードのインデックスを再作成できますgraphClient.ReIndex

既存のノードを更新せずにインデックスに追加する場合は、graphClient.ReIndex同様に使用してください。(このメソッドは、ノードが既にインデックスに存在することを想定していません。)

于 2012-09-20T00:08:36.623 に答える