J'ai importé une table avec des milliers d'équipements. Puis importé une autre table avec des types d'équipements, qui contiennent environ 20 types. Lorsque j'ai écrit la requête chiffrée ci-dessous pour les associer, Neo4j m'a mis en garde contre un produit cartésien. Y a-t-il une meilleure façon de créer les associations? Dois-je l'avoir fait lors de l'importation CSV?Comment éviter le produit cartésien dans une requête chiffrée et créer des liens entre les objets?
MATCH (te:Equipment_Type),(e:Equipment)
WHERE te.type_id = e.type_id
CREATE (e)-[:TYPE_OF]→(te)
Mise à jour
I tryed ce que Brian sugested, lors de l'importation CSV, et a travaillé comme un charme.
- D'abord importé les types d'équipement;
- Puis créé et indexé sur Equipment (type_id);
- Modification du code à rechercher lors de l'importation au format CSV.
De Neo4j Console:
Ajouté 100812 étiquettes, créé 100812 nœuds, définissez les propriétés 414307, créé 100812 relations, instruction exécutée dans 33902 ms.
Le code:
CREATE INDEX ON :Equipment(type_id)
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "http://localhost/Equipments.csv" AS row
MERGE (e:Equipment {eqp_id: row.eqp_id, name: row.name, type_id: row.type_id})
WITH e, row
MATCH (te:Equipemnt_Type)
WHERE te.type_id = row.type_id
CREATE (e)-[:TYPE_OF]->(te)