【问题标题】:Neo4JClient - How To Add Node to IndexNeo4JClient - 如何将节点添加到索引
【发布时间】:2012-09-18 22:27:42
【问题描述】:

我需要一个非常简单的示例来说明如何使用 Neo4JClient 将节点添加到索引

在下面的 C# 代码中,我创建了一个索引和一个员工节点。

问题:
在下面的代码中,如何将创建的节点添加到索引中?解决方案应允许搜索 EmployeeID 或 Name。

课堂节目 { 静态无效主要(字符串 [] 参数) { //连接到 Neo4J var graphClient = new GraphClient(new Uri(@"http://localhost:7474/db/data")); graphClient.Connect(); //创建索引 graphClient.CreateIndex("员工", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.exact }, IndexFor.Node); //创建一个员工节点 var employee = new Employee() { EmployeeID = "12345", Name = "Mike"}; NodeReference employeeRef = graphClient.Create(employee); //将刚刚创建的节点添加到Employee索引中。 } 私人类雇员 { [JsonProperty("EmployeeID")] 公共字符串 EmployeeID { 获取;放; } [JsonProperty("名称")] 公开

【问题讨论】:

    标签: neo4j neo4jclient


    【解决方案1】:

    注意:此答案适用于 Neo4jClient 1.0.0.474。确保您已更新。

    创建节点时,可以提供索引条目:

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

    由于以下几个原因,它看起来有点冗长:

    1. 如果没有至少一个关系,您几乎永远不会创建节点。第二个参数中的关系会很好地叠加。

    2. 一个节点可以有多个索引,键和值不必与节点匹配。

    我们想让这种语法更适合默认场景,但还没有做到。

    当你更新一个节点时,你还需要提供新的索引条目:

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

    您可以使用graphClient.ReIndex 重新索引节点而不更新节点本身。

    如果您想将现有节点添加到索引而不更新它,也只需使用graphClient.ReIndex。 (该方法不对节点已经在索引中做出任何假设。)

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多