Neo4j LOAD CSV не может сопоставить и создать отношения - PullRequest
0 голосов
/ 10 декабря 2018

Я просматривал учебные примеры в примерах фильмов LOAD CSV, применяя их к тестовым данным моего проекта.(Я пытаюсь следовать примеру кода здесь: https://neo4j.com/docs/getting-started/current/cypher-intro/load-csv/)

Я пытаюсь создать отношения между ключевыми словами каждой статьи и, в свою очередь, найти другие статьи с некоторыми из тех же ключевых слов.

Представление моих CSV-файлов тестовых данных выглядит следующим образом: CSV используется для создания всех узлов титров:

title_id,title  
T1,Article Title 1  
T2,Article Title 2  

CSV, которые я хочу использовать для создания отношений:

title_id,keyword_id,keyword  
T1,K1,aaa  
T1,K2,bbb  
T1,K3,ccc  
T1,K4,ddd  
T2,K1,aaa  
T2,K5,eee  
T2,K6,fff  
T2,K4,ddd  

Сначала я попытался создать заголовочные узлы, используя следующий код:

LOAD CSV WITH HEADERS FROM "file:///1209_tet_titles.csv" AS csvLine1
WITH csvLine1
WHERE csvLine1.title_id IS NOT NULL
MERGE (a_title:title{t_id:csvLine1.title_id,Title:csvLine1.title})

Затем я попытался создать отдельные узлы ключевых слов вместе со связями, используя следующий код:

LOAD CSV WITH HEADERS FROM "file:///1209test_titleid_kwid_kw.csv" AS csvLine3
WITH csvLine3
WHERE csvLine3.title_id IS NOT NULL
MERGE(keywords:Keyword{k_id:csvLine3.keyword_id,Keyword:csvLine3.keyword})
WITH csvLine3
MATCH(title:Title{id:csvLine3.title_id}),(keyword:Keyword{id:csvLine3.keyword_id)})
CREATE (title)-[r1:HAS_KEYWORDS]->(keyword)

Узлы успешно созданы, но команда match ничего не находит, и поэтому никакие отношения не создаются. На этом этапе я не уверен, в чем разница между моей ситуацией и примером фильмов ...

1 Ответ

0 голосов
/ 10 декабря 2018

Похоже, здесь просто небольшая опечатка.

В вашем MERGE вы объединяете свойство k_id, но в своем MATCH вы соответствуете свойству id, котороене существуетЕсли вы изменили это значение на k_id, то вы увидите, что оно успешно выполнено.

Тем не менее, нет необходимости повторно сопоставлять узел, который вы только что создали, поскольку вы можете просто сохранить переменную в области видимости и использовать ее.когда вы создаете отношения:

LOAD CSV WITH HEADERS FROM "file:///1209test_titleid_kwid_kw.csv" AS csvLine3
WITH csvLine3
WHERE csvLine3.title_id IS NOT NULL
MERGE (keyword:Keyword{k_id:csvLine3.keyword_id, Keyword:csvLine3.keyword})
WITH csvLine3, keyword
MATCH (title:Title{t_id:csvLine3.title_id})
CREATE (title)-[:HAS_KEYWORDS]->(keyword)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...