6.5. Find people based on similar favorites

Figure 6.5. Graph

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.namecount(stuff)
2 rows

"Derrick"

2

"Jill"

1

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