2012-06-03 3 views
0

저는 neo4j에 상당히 익숙하며 현재 Neo4jRestNet 클라이언트를 사용하고 있습니다.Neo4jRestClient : 노드와 연결이 이미 생성 된 후 인덱스를 추가하는 방법?

private static void GenerateNetwork() 
     { 
      var rootNode = Node.GetRootNode(); 

      // Create a User Node with Properties 
      var prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Madeline J. Parnell"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "25"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "LA"); 

      var nodeUserWithName1 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Jack S. Waldrop"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "28"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "San Francisco"); 

      var nodeUserWithName2 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Willis O. Hicks"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "33"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Ann Arbor"); 

      var nodeUserWithName3 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Leroy P. Wagner"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "40"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Hattiesburg"); 

      var nodeUserWithName4 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Nancy J. Rose"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "25"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Cornish"); 

      var nodeUserWithName5 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Sally G. Gee"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "48"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Charlestown"); 

      var nodeUserWithName6 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Blanche T. Perez"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "35"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Philadelphia"); 

      var nodeUserWithName7 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      prop = new Properties(); 
      prop.SetProperty(NodeProperty.Name.ToString(), "Robert S. Johnston"); 
      prop.SetProperty(NodeProperty.Age.ToString(), "22"); 
      prop.SetProperty(NodeProperty.LivesIn.ToString(), "Lancaster"); 

      var nodeUserWithName8 = Node.CreateNode(NodeType.Person.ToString(), prop); 

      // Create Relationships to Nodes 
      rootNode.CreateRelationshipTo(nodeUserWithName1, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName2, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName3, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName4, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName5, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName6, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName7, RelationshipType.Knows.ToString()); 
      rootNode.CreateRelationshipTo(nodeUserWithName8, RelationshipType.Knows.ToString()); 

      // Create Relationship with Properties 
      //var relProp = new Properties(); 
      //relProp.SetProperty(RelationshipProperty.Name.ToString(), "MyRelationship"); 
      //relProp.SetProperty("CustomRelProp", "CustomPropValue"); 

      nodeUserWithName1.CreateRelationshipTo(nodeUserWithName2, RelationshipType.Knows.ToString()); 
      nodeUserWithName1.CreateRelationshipTo(nodeUserWithName3, RelationshipType.Knows.ToString()); 
      nodeUserWithName2.CreateRelationshipTo(nodeUserWithName3, RelationshipType.Knows.ToString()); 
      nodeUserWithName5.CreateRelationshipTo(nodeUserWithName6, RelationshipType.Knows.ToString()); 
      nodeUserWithName6.CreateRelationshipTo(nodeUserWithName8, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName1, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName1, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName3, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName4, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName5, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName6, RelationshipType.Knows.ToString()); 
      nodeUserWithName7.CreateRelationshipTo(nodeUserWithName8, RelationshipType.Knows.ToString()); 

     } 

나는 다음과 같은 자바 방법에 해당 될 것이다, 인덱스를 생성하는 방법을 찾기 위해 노력 : 나는 학습의 목적을 위해 소규모 네트워크를 만들어

IndexManager 지수 = graphDb.index(); 인덱스 people = index.forNodes ("people"); RelationshipIndex roles = index.forRelationships ("roles");

과 같은 방법으로 자바에서 이루어집니다 GenerateNetwork() 메소드를 사용하여 만든 사람에 추가 : 어쨌든

people.add(nodeInstance, "valueName", reeves.getProperty("valueName")); 

나는 인덱스 Neo4jRestClient를 사용하여 처리하는 방법을 발견하지 않았습니다 지금까지 . 누구든지 기존 인덱스를 확인하고 Neo4jRestClient를 사용하여 인덱스에 노드를 할당하는 방법을 알고 있습니까?

사례를 공유하면 매우 감사 할 것입니다.

답변

0

AddToIndex 메서드를 사용하여 인덱스에 노드/관계를 추가합니다. 예를 들어 :

var node1 = Node.CreateNode(); 
node1.AddToIndex("nodes", "name", "jack"); 

하거나 Node에 정적 기능을 사용할 수 있습니다 "nodes"이 인덱스의 이름과 "name"/"jack"입니다

Node.AddToIndex(node1, "nodes", "name", "jack"); 

는 키/값 쌍입니다.

value 매개 변수에 Enum을 전달하면 노드의 특성 모음에있는 값을 사용합니다.

참고 : 2012 년 6 월 6 일에 새 코드를 방금 입력 했으므로 사용을 시작해야합니다. 이제는 일괄 처리 명령을 지원하며 API를 업데이트하여 사이퍼 변형 명령을 곧 지원할 예정입니다. 나는 또한 그들이 현재 구식이기 때문에 가능한 빨리 문서들을 업데이트 할 것이다.

hth.

+0

잭, 답변 해 주셔서 감사합니다. 새 버전을 실행할 수 없습니다. 이전 버전은 아무런 문제없이 실행되었지만 새로운 버전에서는 예외가 발생합니다. var rootNode = Node.GetRootNode(); –

+0

솔루션에 관해 이야기하기 위해 이메일 주소 나 연락처를 알려주시겠습니까? –

+0

그래프에서 루트 노드가 삭제되면 GetRootNode 메서드는 오류를 throw합니다. neo4j.org에 대한 토론 링크 (https://groups.google.com/forum/#!topic/neo4j/Sb2ANlJtLDY)가 있습니다. 내 개인적인이 걸릴; 나는 RootNode의 아이디어를 좋아하지 않는다. neo4j에 대한 토론에서 제기 된 문제로 인해 그래프를 루트로 노드를 생성하는 것을 선호합니다. 원할 경우 https://github.com/SepiaGroup/Neo4jRestNet에 문제를 열어서 감사 할 수 있습니다. –

관련 문제