【问题标题】:Is this cypher neo4j query working as I expect?这个 cypher neo4j 查询是否按我的预期工作?
【发布时间】:2022-10-24 23:31:25
【问题描述】:

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

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

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

【问题讨论】:

  • 我建议您创建测试用例并针对实际数据运行查询。祝你好运!

标签: neo4j cypher


【解决方案1】:

您很接近,但每次其他用户与该地点相关联时,您都会返回一个建议。您可能只想返回每个地方建议一次,并且您可能希望按频率对建议进行排名。尝试这个。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多