6.10. Boosting recommendation results

Figure 6.9. Graph

This query finds the recommended friends for the origin that are working at the same place as the origin, or know a person that the origin knows, also, the origin should not already know the target. This recommendation is weighted for the weight of the relationship r2, and boosted with a factor of 2, if there is an activity-property on that relationship

Query 

MATCH (origin)-[r1:KNOWS|WORKS_AT]-(c)-[r2:KNOWS|WORKS_AT]-(candidate)
WHERE origin.name = "Clark Kent" AND type(r1)=type(r2) AND NOT (origin)-[:KNOWS]-(candidate)
RETURN origin.name AS origin, candidate.name AS candidate, SUM(ROUND(r2.weight
  +(COALESCE(r2.activity,
  0)* 2))) AS boost
ORDER BY boost DESC LIMIT 10

This returns the recommended friends for the origin nodes and their recommendation score.

Result

origincandidateboost
2 rows

"Clark Kent"

"Perry White"

22.0

"Clark Kent"

"Anderson Cooper"

4.0

Try this query live none MATCH (origin)-[r1:KNOWS|WORKS_AT]-(c)-[r2:KNOWS|WORKS_AT]-(candidate) WHERE origin.name = "Clark Kent" AND type(r1)=type(r2) AND NOT (origin)-[:KNOWS]-(candidate) RETURN origin.name as origin, candidate.name as candidate, SUM(ROUND(r2.weight + (COALESCE(r2.activity, 0) * 2))) as boost ORDER BY boost desc limit 10