Алкогольный алгоритм в Neo4j? - PullRequest
0 голосов
/ 29 мая 2018

Допустим, у нас есть отношения :LIKED и :PASSED, например:

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

Я считаю, что алгоритм Tinder делает что-то вроде этого.Как бы вы возвратили запрос, который:

  • получит страницу длиной 20, которая состоит из
  • потенциальных пользователей, которых текущий пользователь еще не видел (пока не :LIKED или:PASSED)
  • с набором пользователей, у которых уже есть :LIKED текущий пользователь
  • , и набором пользователей, которые очень привлекательны (не уверены в наилучшем способе сделать это, Элорейтинг, но это может быть просто число раз, когда этот пользователь был :LIKED - было бы неплохо иметь какой-то триггер, который обновляет счет Elo rating = :LIKED для пользователя всякий раз, когда создается новое отношение :LIKED)

1 Ответ

0 голосов
/ 30 мая 2018

Таким образом, запрос, подобный (заданный известным пользователем для начала):

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 - это, конечно, произвольное значение, которое я выбрал.Вы сами решаете, какая правильная рекомендация.

Надеюсь, это поможет.

С уважением, Том

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...