neo4j - Neo4j中的火种算法?
问题描述
假设我们有关系:LIKED
,:PASSED
例如:
(:User1)-[:LIKED]->(:User2)
(:User1)-[:PASSED]->(:User3)
我相信 Tinder 算法会做这样的事情。您将如何返回以下查询:
- 得到一个长度
20
包括的页面 - 当前用户尚未见过的潜在用户(尚未
:LIKED
或:PASSED
) - 混合了已经
:LIKED
拥有当前用户的用户 - 以及非常有吸引力的用户组合(不确定进行此 Elo 评级的最佳方法,但这可能只是该用户的次数
:LIKED
- 有某种触发器来更新 Elo 评级会很好=每当创建新关系时都:LIKED
依赖用户):LIKED
解决方案
所以一个像这样的查询(给定一个已知的用户开始):
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当然是我选择的任意值。您决定正确的建议是什么。
希望这可以帮助。
问候,汤姆
推荐阅读
- javascript - FullCalendar 错误日期的一些事件(不是全部)
- amazon-web-services - 如何设置 ECS 自动缩放?
- javascript - 倒数计时器 - 即使在刷新或重新加载后也保持不变
- javascript - archive.org 网站上动态创建的“a”(锚)元素的错误href
- python - 我在 Django 项目中查看作业按钮有问题
- elasticsearch - 弹性搜索:返回匹配的父母与匹配/不匹配的孩子
- azure-data-factory-2 - 使用 ADF 从 Oracle 迁移到 CDS
- active-directory - 当 memberOf 更改时,用户的 uSNChanged 未更新
- neo4j - 如何使用Spring数据neo4j-RX在一个节点支持多个标签
- sql - SQL - 计算每个客户的开票年数以获得年平均销售额