我想确定有共同兴趣的用户群。
我使用以下查询来确定具有共同兴趣和所有其他兴趣的用户数;
MATCH (u:User)-[:LIKES]-(i:Interest)
WHERE i.name = "Baking"
WITH u
MATCH (u)-[:LIKES]-(i:Interest)
WHERE i.name <> "Baking"
RETURN i.name, COUNT(u) AS userCount
ORDER BY userCount DESC
我尝试制作一个可以有3个共同兴趣的查询,但这会让它变慢。我认为这不是一个好的,可伸缩的设计,任何人都可以帮忙吗?
虽然可能不合理,但最终目标是计算nxn利益组合。
答案 0 :(得分:1)
也许你应该限制利益,只采取前五名或其他什么? 此外,我不知道您的数据模型,但感兴趣的是一个独特的节点。这将加快查询速度。因此关系[有兴趣] - &gt;(烘焙)指向同一节点,您只需从烘焙开始即可获得所有用户。 也许翻转您的查询并从兴趣开始(密码很奇怪)或者您可以强制查询使用索引