Как я могу оптимизировать этот шифрованный запрос? Это в 3-4 раза медленнее, чем аналогичный запрос с использованием Gremlin.
START movie=node:vertices(movieId="100")
MATCH genera1<--movie<--()-[ratedRel:rated]->anotherMovie-->genera1
WHERE ratedRel.stars > 3
RETURN anotherMovie.title as title, anotherMovie.movieId as id,
genera1.genera as genera,
COUNT(anotherMovie) as count ORDER BY count(anotherMovie) DESC LIMIT 20;
Я просто пытаюсь получить фильмы с рейтингом более 3 звезд и те же роды, что и узел START: http://markorodriguez.files.wordpress.com/2011/09/movielens-schema.png?w=350
Я запускаю запрос в консоли и использую Neo4j 1.9.
Запрос Гремлина:
m = [:];
x = [] as Set;
v = g.v(node_id);
v.out('hasGenera').aggregate(x).back(2).inE('rated').
filter{it.getProperty('stars') > 3}.outV.outE('rated').
filter{it.getProperty('stars') > 3}.
inV.filter{it != v}.
filter{it.out('hasGenera').toSet().equals(x)}.
groupCount(m){\"${it.id}:${it.title.replaceAll(',',' ')}\"}.iterate();
m.sort{a,b -> b.value <=> a.value}[0..24];