Я работаю над проектом на Neo4j.У меня около 1 миллиона узлов и 4 миллиона взаимосвязей.
Когда я пытаюсь выполнить запрос, мне требуется около 15 секунд, чтобы получить результат.Я также установил индексы на email.createdAt
Запрос выглядит следующим образом:
MATCH (email:Email)
WITH email
ORDER BY email.createdAt
WHERE email.body CONTAINS "word"
RETURN email
SKIP 0
LIMIT 10
Итак, я пытаюсь выяснить, как я могу улучшить синтаксис и время, которое требуетсячтобы дать результат.
Пока у меня есть идея, но я не знаю, возможно ли это.
Я думаю, что запрос должен быть таким:
- Принесите все электронные письма, упорядоченные по дате. DESC
- Цикл по каждому из узлов электронной почты (desc), ищущих «слово» в email.body
- Когда он получает 10 совпадений,он останавливается и возвращает только эти 10 электронных писем.
Основная идея состоит не в том, чтобы пройтись по всем узлам, а только в том, чтобы найти первые 10 совпадений.Может быть, используя Unwind, For Each, я не знаю.
У кого-нибудь есть идеи о том, как написать этот запрос?Спасибо, ребята!