Neo4JClient - Как добавить узел в индекс

Мне нужен очень простой пример того, как добавить узел в индекс с помощью Neo4JClient.

В следующем коде C# я создал индекс и узел сотрудника.

Вопрос.
Как в следующем коде можно добавить созданный узел в индекс? Решения должны обеспечивать возможность поиска по идентификатору сотрудника или имени.

    class Program
    {
        static void Main(string[] args)
        {
            //Connect to Neo4J
            var graphClient = new GraphClient(new Uri(@"http://localhost:7474/db/data"));
            graphClient.Connect();

            //Create Index
            graphClient.CreateIndex("employee", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.exact }, IndexFor.Node);

            //Create an Employee node
            var employee = new Employee() { EmployeeID = "12345", Name = "Mike"};
            NodeReference employeeRef = graphClient.Create(employee);

            //Add the node that was just created to the Employee index.  

        }
        private class Employee
        {
            [JsonProperty("EmployeeID")]
            public string EmployeeID { get; set; }

            [JsonProperty("Name")]
            publi

person Mike Barlow - BarDev    schedule 18.09.2012    source источник


Ответы (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. (Этот метод не делает никаких предположений о том, что узел уже находится в индексе.)

person Tatham Oddie    schedule 20.09.2012