¿Alternativa para gremlin sideEffect ya que Neptune no lo admite?
En AWS Neptune, estoy tratando de crear un borde de similitud entre vértices de usuario calculando similitud de coseno según lo descrito por Daniel Kuppitz aquí — https://gist.github.com/dkuppitz/79e0b009f0c9ae87db5a#file-cosim-groovy-L368 — sideEffect de Gremlin proporciona un cierre útil que permite realizar algunas operaciones matemáticas para obtener los puntajes de similitud y escribir este valor en cada borde ‘similarity’. Lamentablemente, Neptune no admite sideEffect. Estoy buscando una forma de ejecutar la sección comentada en el ejemplo anterior en una sola consulta de Gremlin sin usar sideEffect. ¡Gracias por tu ayuda!
davy.ai
Solución
Dado que Neptune no admite
sideEffect
, podemos utilizarproject
ymap
para realizar las mismas operaciones. La consulta actualizada se vería así:Explicación:
match
para obtener los vértices y aristas necesarios que se utilizarán para calcular la similitud.project
ymap
, iteramos sobre el grupo y calculamos la similitud del coseno entre pares.addE
la aristasimilarity
y establecemos la propiedadsimilarity
para esa arista.Nota: Esta consulta asume que los vértices tienen una arista
rated
que almacena el valor de la calificación.