Neo4j нуба здесь, на Neo4j 2.0.0 сообществоNeo4j падает на четвёртой степени Cypher запроса
У меня есть график база данных 24000 фильмов и 2700 пользователей, а где-то около 60000 LIKE отношения между пользователем и кино ,
Предположим, что у меня есть определенный фильм (фильм1).
START movie1=node:Movie("MovieId:88cacfca-3def-4b2c-acb2-8e7f4f28be04")
MATCH (movie1)<-[:LIKES]-(usersLikingMovie1)
RETURN usersLikingMovie1;
Я могу быстро и легко найти пользователей, которым понравился фильм с вышеуказанным запросом. Я могу следовать этому пути дальше, чтобы получить пользователей, которым понравились те же фильмы, что и люди, которым понравился фильм1. Я называю это поколение 2 пользователей
START movie1=node:Movie("MovieId:88cacfca-3def-4b2c-acb2-8e7f4f28be04")
MATCH (movie1)<-[:LIKES]-(usersLikingMovie1)-[:LIKES]->(moviesGen1)<-[:LIKES]-(usersGen2)
RETURN usersGen2;
Этот запрос занимает около 3 секунд и возвращает 1896 пользователей.
Теперь я беру этот вопрос один шаг дальше, чтобы получить фильмы понравившихся вышеупомянутых пользователей (поколения 2 видео)
START movie1=node:Movie("MovieId:88cacfca-3def-4b2c-acb2-8e7f4f28be04")
MATCH (movie1)<-[:LIKES]-(usersLikingMovie1)-[:LIKES]->(moviesGen1)<-[:LIKES]-(usersGen2)-[:LIKES]->(moviesGen2)
RETURN moviesGen2;
Этого запрос вызывает Neo4j вращаться в течение нескольких минут при 100% загрузке процессора и использование 4 Гб оперативной памяти , Затем он отправляет исключение «OutOfMemoryError: превышение верхнего предела GC».
Я надеялся, что кто-то сможет мне помочь и объяснить мне вопрос. Неужели Neo4j не предназначен для обработки запроса этой глубины в совершенной манере? Что-то не так с моим запросом Cypher?
Спасибо, что нашли время для чтения.
Любой шанс поделиться своим набором данных? –
Привет, пожалуйста, просмотрите комментарий выше. –
извините, не могу поделиться им. В любом случае, это не база фильмов. – HaterTot