Пожалуйста, проверьте мой Cypher ниже, я получаю результат с запросом ниже() с низкими записями, но по мере увеличения записей требуется около 1601152 мс: Я нашел предложение добавить USING INDEX
, и я применил запрос USING INDEX
.Как я могу оптимизировать свой запрос neo4j cypher?
PROFILE MATCH (m:Movie)-[:IN_APP]->(a:App {app_id: '1'})<-[:USER_IN]-(p:Person)-[:WATCHED]->(ma:Movie)-[:HAS_TAG]->(t:Tag)<-[:HAS_TAG]-(mb:Movie)-[:IN_APP]->(a)
USING INDEX a:App(app_id) WHERE p.person_id= '1'
AND NOT (p:Person)-[:WATCHED]-(mb)
RETURN DISTINCT(mb.movie_id) , mb.title, mb.imdb_rating, mb.runtime, mb.award, mb.watch_count, COLLECT(DISTINCT(t.tag_id)) as Tag, count(DISTINCT(t.tag_id)) as matched_tags
ORDER BY matched_tags DESC SKIP 0 LIMIT 50
Помогите мне, что я могу сделать?
Я пытаюсь найти 100 фильмов для рекомендации на основе тегов, в том числе 100 фильмов, которые я не смотрю и не согласен с тегами фильмов, которые я смотрел.