这个密码neo4j查询是否如我所期望的那样工作



所以我有一个包含用户和位置的图。用户是r:MEMBER_OF Places。我想根据用户所在的位置,找到用户可能希望成为MEMBER_of的位置建议。因此,如果一个用户已经在一个地方,并且在该一个地方的许多其他用户也在另一个地点,那么只要原始用户不在该地点,就应该建议使用该地点。

以下是我的想法,它确实会产生结果,但我想确保建议的地点不仅仅是随机的。这个查询是否正确地对应该建议的地点进行了排名?或者它只是符合标准的地点的随机集合?

MATCH (a:User {username:'johndoe123'})-[:MEMBER_OF]->()<-[:MEMBER_OF]-(b:User)
MATCH (b)-[r:MEMBER_OF]->(suggestion)
WHERE NOT (a)-[:MEMBER_OF]->(suggestion)
RETURN suggestion limit 5

您很接近,但每次有其他用户与该地点关联时,您都会返回一个建议。您可能只想返回每个Place建议一次,并且您可能想根据建议的频率对其进行排名。试试这个。

MATCH (a:User {username:'johndoe123'})-[:MEMBER_OF]->()<-[:MEMBER_OF]-(b:User)
MATCH (b)-[r:MEMBER_OF]->(suggestion)
WHERE NOT (a)-[:MEMBER_OF]->(suggestion)
RETURN suggestion, count(*) AS otherUserCount
ORDER BY otherUserCount DESC limit 5

最新更新