2014-11-21 1 views
2

저는 neo4j를 처음 사용하고 있으며 현재 노드를 저장하고 검색하기 위해 cypher와 함께 Neo4jphp 라이브러리를 사용하고 있습니다. 내 논리는 상당히 간단합니다. 노드 (게시물)을 가져 와서 좋아하는 사람 (좋아하는 사람의 개수)과 모든 주석 (노드)을 주석 작성자 (레이블 사용자의 노드)와 함께 가져 와서 PHP 배열의 ResultSet을 나중에 인코딩 할 수 있도록 구문 분석 할 수 있어야합니다. Json.neo4jphp를 사용하여 좋아요 및 댓글과 함께 사용자 게시물을 얻을 수 있습니다.

내가 사용 사이퍼 문은 : 나는 올바른 어떻게합니까

Neo4j http://bookintransit.com/kkk.PNG

:

MATCH (user:User)-[:POSTED]->(post) WHERE post.UserID = '13' AND id(post)=106 OPTIONAL MATCH()-   [rel:LIKES]-(post) OPTIONAL MATCH (post)-[:HAS]-(comment:Comment)<-[:COMMENTED]-(commenter:User) RETURN user, post,count(rel) AS Likes, rel, comment, commenter 

경기가 (이 게시물은 더하지만 좋아이 없습니다) 제대로 모든 노드를 검색 라이브러리를 사용하는이 그래프의 표현? 또한이 예제에서는 간단히하기 위해이 예제에서 하나의 사후 노드 (id : 106)를 검색했습니다. 하지만 응용 프로그램에서 코드를 사용할 때 게시물 목록을 검색하고 싶습니다.

$queryString = "MATCH (user:User)-[:POSTED]->(post) WHERE post.UserID = {qUser} OPTIONAL MATCH()-[rel:LIKES]-(post) OPTIONAL MATCH (post)-[:HAS]-(comment:Comment)<-[:COMMENTED]-(commenter:User) RETURN user, post,count(rel) AS Likes, rel, comment, commenter ORDER BY post.TS DESC LIMIT ".$NumberOfPosts; 
     $query = new Everyman\Neo4j\Cypher\Query($client, $queryString, array('qUser' => $UserID)); 
     $result = $query->getResultSet(); 
     if(count($result)>0){ 
      foreach($result AS $row){ 

       // How do I get the correct graph in a php array to parse to json 
      } 

답변

1

난 당신이 이런 식으로 뭔가를 찾고 생각 :

내가 사용하고 PHP 코드입니다. 사용자의 모든 게시물을 찾으십시오. 각 게시물마다 선택적으로 모든 댓글을 찾아 각각에 대해 좋아합니다. 주석과 관련 사용자를 컬렉션에 넣습니다. 좋아하는 사람의 수를 센다. 게시물 당 모두 반환하십시오.

match (u:User {name: "13})-[:POSTED]-(p:Post) 
with p 
optional match (p)-[:HAS]-(c:Comment)-(u:User) 
optional match (p)-[:HAS]-(l:Like) 
with p 
, [c, u] as comment 
, count(l) as likes 
return p, collect(comment), likes 
1

neo4jphp를 사용하면 가능한지 전혀 알 수 없습니다. BTW는 neoclient 가능합니다 : 당신이 할 수

$result = $client->sendCypherQuery($yourQuery, $parameters); 

$posts = $result->getNodes('Post'); 
$post = $result->getSingleNode('Post'); 
$comments = $post->getInboundRelationships('HAS'); 
foreach ($comments->getEndNode() as $comment) { 
    echo $comment->getProperty('text'); 
    $user = $comment->getSingleRelationship('COMMENTED')->getEndNode(); 
    echo $user->getProperty('username'); 
} 

:

NeoClient는 결과를 얻을 수 있도록 그래프는 게시 된 이미지의 모양을 객체 그래프 결과 데이터 컨텐츠를 처리 응답 포맷을 사용하여 결과 집합은 응답의 그래프 표현 일 뿐이므로이를 통해 탐색해야합니다.