nodes: user, group, interest
relationships:
user -> group = membership
user -> interest = interestedin
group -> interest = interestedin
Users are members of groups. Also, users have interests and groups have interests.
I want to recommend groups to a given user using membership and interests criteria.
Part 1: membership criteria only. Give me all co-members of my groups, and return all of their groups that I am not a member of
START n=node(127370)
MATCH n-[:membership]-(c)-[:membership]-x-[r2:membership]-(y)
WHERE y.category = 'group' AND y.is_sub=0 AND (NOT (n-[:membership]-y))
RETURN
y.name, r2.weight ORDER BY r2.weight DESC LIMIT 30;
Part 2: interests criteria only. Give me all groups (that I am not a member of) that have same interests as me
START n=node(127370)
MATCH n-[:interestedin]-(d)-[r2:interestedin]-(y)
WHERE y.category = 'group' AND y.is_sub=0 AND (NOT (n-[:membership]-y))
RETURN
y.name, r2.weight ORDER BY r2.weight DESC LIMIT 30;
Is there any way currently to merge these 2 into 1 query?