Je veux retourner pour chaque mot-clé dans la collection deux utilisateurs les plus liés au mot-clé. La requête ci-dessous fonctionne correctement avec un seul mot-clé.neo4j boucle de chiffrement pour renvoyer deux correspondances pour chaque élément de collection
WITH
'meeting' AS keyword
MATCH
(k:keywords)<-[r1:RELATED]-(u:users)
WHERE
k.keyword = keyword
AND NOT u:deactivated
AND NOT u.userid1 = 'administrator'
AND NOT k:deleted
AND r1.datedeleted = 0
AND r1.datedeleted IS NOT NULL
WITH
DISTINCT u.userid1 AS user,
r1.weight AS rel
ORDER BY
rel DESC
LIMIT 2
RETURN
user
LIMIT 20
Comment faire une boucle à la même requête ci-dessus pour chaque élément de collection? (Par exemple la collecte ci-dessous)
WITH
['meeting', 'new', 'tool', 'training', 'it', 'process', 'server'] AS kw_my_channels
Plus précisément, je besoin d'une boucle Cypher pour faire ma requête pour chaque élément de collection (mots-clés) de retour d'une requête effectuée avant (définie ici manuellement kw_my_channels). Le problème consiste à implémenter une boucle "for", qui exécute un MATCH pour chaque élément de collection. Dans ce cas, les éléments sont des mots-clés liés aux utilisateurs. La relation a des poids (pertinence du mot-clé pour cet utilisateur). Ces poids indiquent à quelle fréquence un mot-clé a été utilisé par l'utilisateur (nombre). Pour chaque mot clé, deux utilisateurs avec les poids les plus élevés doivent être trouvés.
Un exemple de sortie devrait ressembler à:
Keyword | Users | Weight
-------------------------------
meeting | user1, user2 | 80, 75
new | user1, user4 | 40, 34
tool | user5, user8 | 33, 22
À l'avenir, vous serez en mesure d'utiliser UNWIND pour ceci: 'UNWIND [....] comme mot-clé MATCH ....' –