代码之家  ›  专栏  ›  技术社区  ›  atkayla

Neo4j中的Tinder算法?

  •  -1
  • atkayla  · 技术社区  · 8 年前

    :LIKED :PASSED 例如。:

    (:User1)-[:LIKED]->(:User2)
    (:User1)-[:PASSED]->(:User3)
    

    我相信Tinder算法是这样做的。如何返回以下查询:

    • 获取一页长度 20 包括
    • 当前用户尚未看到的潜在用户(尚未 或 :通过 )
    • 已经拥有 当前用户
    • 一个非常有吸引力的用户组合(不确定做这个Elo评级的最佳方法,但这可能只是这个用户被访问的次数) :喜欢 :喜欢 :喜欢 关系已创建)
    1 回复  |  直到 8 年前
        1
  •  0
  •   Tom Geudens    8 年前

    这样的查询(给定一个已知的用户开始):

    MATCH (u1:User {id: "known userid"})<-[l1:LIKES]-(u2:User)<-[l2:LIKES]-(u3)
    WHERE NOT ((u1)-[]->(u2)) 
    WITH DISTINCT u2.name as recommended, count(DISTINCT l2) as attractioncount
    WHERE attractioncount > 10
    RETURN recommended
    

    这个 10 当然是我选择的任意值。你决定什么是正确的建议。

    希望这有帮助。

    当做, 汤姆