2014-09-22 3 views
0

Я пытаюсь реализовать механизм симпатии к демонстрационной подборке показаны здесь http://docs.neo4j.org/chunked/stable/cypher-cookbook-newsfeed.htmlNeo4j высчитывать нравится обновление статуса

Так в основном, когда пользователь щелкает как на обновлении статуса, я хочу, чтобы связать пользовательский узел со статусом обновить узел. Однако я хочу найти узел обновления статуса через узел автора. Поэтому я использую что-то вроде следующего:

MATCH (n:user)-[:STATUSUPDATE]->(m)-[:NEXT*]->(o) 
WHERE n.username = "pewpewlasers" AND (m.permalink = "acode" OR o.permalink = "acode") 
MATCH (p:user) 
WHERE id(p)=1, 
CREATE (p)-[x:LIKED]->(o) 
return x 

В основном то, что я пытаюсь достичь, найти узел обновления статуса через автора «ов узла, а затем ищет обновления с кодом Постоянная ссылка.

Когда я нахожусь, я хочу подключить узел пользователя пользователя к обновлению статуса через связь LIKED.

Однако вы, вероятно, уже видите проблемы с этим cypher.

Этого шифр требует, чтобы постоянная ссылкой является одним из узлов, что связанно с NEXT отношений, в противном случае, если первый узел (связанно STATUSUPDATE отношений) содержит постоянную ссылку, он выбирает все узлы обновления состояния, связанные с помощью NEXT отношений. Таким образом, пользователь будет любить все сообщения. Вероятно, необходимо следующее:

ответ

1

Вот способ обойти вашу проблему.

START p = node(1) // Do you really want to use node numbers?  
MATCH (n:user {username = 'pewpewlasers'})-[:STATUSUPDATE|:NEXT*]->(m {permalink : 'acode'}) 
CREATE (p)-[x:LIKED]->(m) 

Используя '|' и multimatch в части отношений предложения MATCH, узел «m» может соответствовать любой части цепочки обновления состояния. Если вы действительно собираетесь использовать номера узлов (вывод функции id()), чтобы получить свой пользовательский узел, вероятно, быстрее сделать это, как показано выше.

+0

Спасибо, это работает. И я изменил код так, чтобы он использовал имя пользователя, а не номера узлов. Еще один вопрос. Можно ли проверить, понравилось ли пользователю обновление статуса перед тем, как мы реализуем 'CREATE (p) - [x: LIKED] -> (m)'? – pewpewlasers

Смежные вопросы