To find out the possible new friends based on them liking similar things as the asking person, use a query like this:
Query
MATCH (me { name: 'Joe' })-[:favorite]->(stuff)<-[:favorite]-(person) WHERE NOT (me)-[:friend]-(person) RETURN person.name, count(stuff) ORDER BY count(stuff) DESC
The list of possible friends ranked by them liking similar stuff that are not yet friends is returned.
Result
person.name | count(stuff) |
---|---|
2 rows | |
|
|
|
|
Try this query live create (_0 {`name`:"Joe"}) create (_1 {`name`:"Bikes"}) create (_2 {`name`:"Cats"}) create (_3 {`name`:"Sara"}) create (_4 {`name`:"Jill"}) create (_5 {`name`:"Derrick"}) create (_0)-[:`friend`]->(_3) create (_0)-[:`favorite`]->(_1) create (_0)-[:`favorite`]->(_2) create (_3)-[:`favorite`]->(_1) create (_3)-[:`favorite`]->(_2) create (_4)-[:`favorite`]->(_1) create (_5)-[:`favorite`]->(_1) create (_5)-[:`favorite`]->(_2) ; MATCH (me {name: 'Joe'})-[:favorite]->(stuff)<-[:favorite]-(person) WHERE NOT (me)-[:friend]-(person) RETURN person.name, count(stuff) ORDER BY count(stuff) DESC