2013-11-18 3 views
0

Я пытаюсь получить предложения друзей для работы в моем приложении, и это было захватывающее, но разочаровывающее время, когда мы изучали Neo4J, используя фон RDBMS, но здесь я иду.предложение друга в neo4j

Мне нужно показать людям, которые знают двух или более прямых друзей пользователя. Другими словами, в соответствии с графиком в приложенном скриншоте мне нужен запрос Cypher, который дает мне узлы 6 и 4.

Скриншот можно найти на http://oi39.tinypic.com/j9yogi.jpg)

Любая помощь будет оценена с этой причиной я Я разорвал свои волосы.

+0

Что вы пробовали до сих пор? Вы показываете графику, но вы уже пробовали какой-либо cypher? – Nicholas

ответ

3

Как указал Николас, если вы попробуете какой-то Cypher, это довольно легко.

См http://console.neo4j.org/r/kt5hd

START n=node(1) 
MATCH n-[r:KNOWS*2]->f 
WITH count(r) AS count, f 
WHERE count>=2 
RETURN f 
+0

спасибо за ответ ... его рабочий :) – user1005319

+0

Мой график обновлен и теперь содержит двунаправленные отношения. например: 1 знает 2 и 2 знает 1. Как я могу обновить этот запрос, чтобы удовлетворить эту ситуацию. Я пробовал MATCH n <- [r: KNOWS * 2] -> f, но это, похоже, не работает. Ваша помощь будет принята с благодарностью – user1005319

+0

Удалить все направления, т. Е. MATCH n- [r: KNOWS * 2] -f – Luanne

0

@Luannes ответ также вернет и нынешних друзей, что на самом деле не является предложением для друзей. Использовать это.

  MATCH (joe { name: 'Joe' })-[:knows*2..2]-(friend_of_friend) 
      WHERE NOT (joe)-[:knows]-(friend_of_friend) 
      RETURN friend_of_friend.name, COUNT(*) 
      ORDER BY COUNT(*) DESC , friend_of_friend.name 

Из Neo4j поваренной книги http://neo4j.com/docs/stable/cypher-cookbook-friend-finding.html