Привет, я пытаюсь импортировать некоторые данные из CSV-файлов в Neo4j 2.3.1. Я уже импортировал некоторые узлы типа : Автор и : Статья.Cypher Neo4j - запрос, который использует предложение «IN» в коллекции, очень медленный
Автор узел состоит из свойств, как:
- ключа -> Строка
- principal_name -> Строка
- псевдоним -> Коллекция Строка
- ........
Я также добавил индекс на имя_имя, псевдоним и ключ.
Проблема возникает, когда я пытаюсь импортировать отношения между узлами типа Article и Author.
CSV-имеет этот тип структуры:
articleKey,authorName
имеет наивное решение я пытался создать связь, используя запрос, как этот:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///myPath.csv" AS line
MATCH (art:Article{key: line.key1})
MATCH (auth:Author) WHERE line.key2 IN (auth.alias)
CREATE UNIQUE (auth)-[:AUTHOR_OF]->(art);
Запроса мучительно медленно потому что второй MATCH действительно медленный, поскольку я обнаружил использование профилировщика. Требуется 10-12 секунд, чтобы создать каждое отношение, потому что у меня много авторов в db (около 1000000).
Так что я искал способ, чтобы выполнить запрос, как этот, чтобы получить более быстрое выполнение (пример для иллюстрации структуры, я хочу получить):
MATCH (auth:Author{principal_name: line.key2})
IF auth null THEN
MATCH (auth:Author) WHERE line.key2 IN (auth.alias)
END
Там есть способ сделать это с Сайфером?
Предлагаемое решение такое же, как я думал, для более быстрого выполнения запроса. Когда я смоделировал данные, наивно думал, что добавление индекса в сборник решит проблему. Вместо этого я вижу из профилировщика, что индекс в коллекции не используется для ответа на запрос. –