В настоящее время я работаю над рекомендацией запросом фильма, который должен вернуть фильмы с самым «воздействием рекомендации», используя следующий запрос: CypherNeo4j высчитывать вопрос производительности запросов с рекомендацией фильма запросом
match (m:Movie)
with m, size((m)<-[:LIKED]-(:User)-[:LIKED]->(:Movie)) as score
order by score desc
limit 10
return m.title, score
После прочтения В моей книге было написано, что это будет простой запрос для neo4j, но время выполнения заняло 32737 мс, чего я не ожидал. Есть ли у кого-нибудь опыт работы с этими типами запросов и какие-либо предложения по повышению производительности? Или должен ли этот запрос работать хорошо, и мне нужно выполнить некоторую настройку конфигурации neo4j/java?
Профиль запроса:
Результат:
В этом конкретном сценарии предварительный расчет, по-видимому, является способом перехода, поскольку операторы реального времени занимают не менее 30 секунд. Я думаю, что маркетинг вокруг диаграммы neo4j db немного вводит в заблуждение, поскольку (после прочтения книги db графика) я ожидал, что neo4j с легкостью справится с такими запросами в реальном времени. Спасибо за помощь! –
Я думаю, что когда подграф, рассмотренный по запросу, попадает в десятки миллионов, что все замедляется. Существует также разница между выполнением такого рода запросов в каждом фильме в вашем db (из которых около 10 000), а также для получения оценки для одного фильма или даже нескольких, что, вероятно, будет рассматривать подграфы тысяч узлов, а чем миллионы. – InverseFalcon