2015-05-21 1 views
1

Я пытаюсь получить 10 лучших пользователей, которым понравилась определенная игра с game_id от 1 до 25. Эти игры имеют отношения с пользователем с рейтингом с собственностью rating_val = от 1 до 10.Топ 10 пользователей каждой игры в neo4j на основе игр, которые им нравятся по каждой категории

Как получить 25 строк с группой всех пользователей, у которых есть rating_val от 1 до 10 порядков desc для каждой категории игр.

В основном: 25 игр категории с идентификатором 1 до 25 games_like взаимосвязь с с rating_val 1-10 пользователей являются узлами с идентификатором, имя

Этот запрос не работает, я думаю, мой подход и реализация оба wrong:

MATCH (u:user { user_id:"1" }) 
MATCH (o:user) 
WHERE o <> u 
OPTIONAL MATCH (u)-[r:games_like]->(d)<-[rw:games_like]-(o) 
RETURN 
    toInt(r.rating_val)+toInt(rw.rating_val) as sum , 
    collect(DISTINCT (r.rating_val)) AS user1, 
    collect(DISTINCT (rw.rating_val)) AS user2, 
    d 
ORDER BY sum DESC 

ответ

1

Возможно, вы можете создать набор данных и поделиться тем, что ожидают?

За исключением глобального соответствия для (o: user), оно не выглядит некорректным.

Вы группируете сумму и игру (пробуйте удалить игру) ?? И как относятся категории, которые вы упоминаете?

Попробуйте это, упростите матч и удалите группировку по игре только по сумме оценок.

MATCH (u:user { user_id:"1" })-[r:games_like]->()<-[rw:games_like]-(o:user) 
WHERE o <> u 
RETURN 
    toInt(r.rating_val)+toInt(rw.rating_val) as sum , 
    collect(DISTINCT (r.rating_val)) AS user1, 
    collect(DISTINCT (rw.rating_val)) AS user2 
ORDER BY sum DESC 
LIMIT 25 
+0

Но я хотел бы получить идентификатор все другой пользователя вместе с именем игры они имеют liked.Currently я получаю только рейтинги как 2 колонок row1 и row2, но я не ищу для этого тоже моего запроса выше неправильно (Извините). Пожалуйста, дайте мне знать, где я могу опубликовать набор данных. – jason

Смежные вопросы