Top Banner
THE FUTURE IS NOW
30

Experiencias con Neo4j en InfoJobs

Jan 24, 2018

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Experiencias con Neo4j en InfoJobs

THE FUTURE IS NOW

Page 2: Experiencias con Neo4j en InfoJobs

EXPERIENCIAS CON NEO4J EN INFOJOBSMARC POU

Product Owner, InfoJobs

Page 3: Experiencias con Neo4j en InfoJobs

3

■ Marc Pou

■ En InfoJobs desde 2.016

■ Product Owner (Candidatos)

■ @marc_pou

[email protected]

■ Rubén Arana

■ En InfoJobs desde 2.013

■ Technical Leader

■ @RbnArana

[email protected]

¿QUIENES SOMOS?

Page 4: Experiencias con Neo4j en InfoJobs

4

“Hacer fácil a todas las personas encontrar el mejor empleo posible”■ 700.000 usuarios únicos al día

■ 36.5 millones de visitas al mes

■ 325 millones de páginas vistas al mes

■ + de 150.000 puestos vacantes disponibles

■ + de 1 millón de descargas de la App en 2.015

■ 831.000 contratos conseguidos en 2.015

SOBRE INFOJOBS

Page 5: Experiencias con Neo4j en InfoJobs

USOS DE NEO4J EN INFOJOBS

Page 6: Experiencias con Neo4j en InfoJobs

6

Plan de Carrera (2.012 / 2.013)

■ Portal de información estadística

■ Ayuda para mejorar la carrera

profesional de los candidatos

■ Múltiples filtros de información

InfoJobs Social (2.014 / 2.015)

■ Red social de InfoJobs

■ Aporta capa relacional sobre las

ofertas de empleo

■ Ofrece posibilidades

complementarias a la búsqueda de

empleo tradicional

PROYECTOS

Page 7: Experiencias con Neo4j en InfoJobs

PLAN DE CARRERA

7

Page 8: Experiencias con Neo4j en InfoJobs

8

■ ¿Cuál es el siguiente puesto más habitual al puesto <P>?

■ ¿Dónde van los empleados que dejan la empresa <E>?

■ ¿Cuáles son los conocimientos habituales de un candidato que trabaja de <P>?

■ ¿De qué centro de formación salen mejores profesionales?

¿A QUÉ RESPONDE PLAN DE CARRERA?

Page 9: Experiencias con Neo4j en InfoJobs

9

¿DE QUÉ DISPONEMOS?

■ Amplia BBDD de currículums

■ 4 Millones de candidatos

■ 8 Millones de experiencias

■ 8 Millones de estudios

■ 16 Millones de conocimientos

Page 10: Experiencias con Neo4j en InfoJobs

10

¿CÓMO LO SOLUCIONAMOS?

■ Responder a los retos planteados mediante una BBDD relacional es muy

costoso.

■ Modelamos el problema con un grafo

■ Transformamos el CV en Nodos y Relaciones

■ El grafo nos permite tener secuencialidad de las experiencias y estudios

■ Nos permite relacionar fácilmente elementos comunes

Page 11: Experiencias con Neo4j en InfoJobs

11

Page 12: Experiencias con Neo4j en InfoJobs

12

ESQUEMA SOLUCIÓN

In OutN

Dicc

ExplotaciónExportación

datos

Limpieza y

Normalización

Carga grafo

De base de datos

relacional a ficheros CSV

Warm up

Page 13: Experiencias con Neo4j en InfoJobs

EJEMPLO

13

■ Misma información, dos prismas.

■ Información para candidatos

■ Información para empresas

■ La clave está en recorrer el grafo por

un camino o por otro pero con el

mismo modelo.

Page 14: Experiencias con Neo4j en InfoJobs

14

■ Actualización mensual de datos (No Real Time)

■ Procesos de limpieza y normalización en ficheros CSV

■ Carga grafo off-line (mayor rapidez) mediante la API de

Neo4j

■ Uso intensivo de memoria para mantener nodos padres

y poder establecer relaciones

■ Ser estrictos en propiedades e información que se

carga en los nodos (menos es más). Evitar textos

■ 6Gb – 8Gb de tamaño del grafo

■ Warm Up (recorrer todo el grafo para cargar todos los

datos en memoria)

■ Queries:

■ Cypher: fácil de experimentar, leer, mantener.

■ API: óptimo para queries consolidadas, costosas,

críticas en rendimiento.

■ Grafo de solo lectura (no realizamos operaciones de

escritura)

■ Múltiples opciones de consulta y filtros. El grafo facilita

el modelo de cálculo. No es Use Case habitual.

■ Consultas costosas cuando se filtra por properties.

■ Múltiples capas de persistencia para agilizar

rendimiento. WarmUp de consultas habituales.

RESULTADOS / APRENDIZAJES

Page 15: Experiencias con Neo4j en InfoJobs

INFOJOBS SOCIAL

15

Page 16: Experiencias con Neo4j en InfoJobs

16

■ ¿Qué hacen los candidatos cuando ya han repasado todas las ofertas de

empleo del portal?

■ Activan su red de contactos (on-line / off-line) para encontrar

oportunidades, referencias, recomendaciones, etc…

■ Podemos añadir una capa social por encima de InfoJobs que ayude a los

candidatos a encontrar contactos en las ofertas que les interesen

¿A QUÉ RESPONDE INFOJOBS SOCIAL?

Page 17: Experiencias con Neo4j en InfoJobs

17

■ Mostrar contactos de 1er o 2º nivel

en ofertas de empleo

■ Mostrar sugerencias de contactos

con alta probabilidad de conocerse

■ Gestión de mi red de contactos

■ Invitaciones recibidas

■ Mis contactos

■ Generar confianza en la red

■ Contactos en común entre dos

candidatos

■ Elementos en común entre dos

candidatos

■ Buscador de contactos

EJEMPLOS DE SERVICIOS A OFRECER

Page 18: Experiencias con Neo4j en InfoJobs

18

Page 19: Experiencias con Neo4j en InfoJobs

19

■ Sistema vivo

■ Tiempo real

■ Lectura / Escritura

■ Alta disponibilidad

■ Mecanismo de recuperación rápida

■ Gran volumen de datos

■ Tiempo de respuesta estable con

independencia del volumen de datos

■ Pesos en relaciones

■ “Independencia” del Site de Empleo

REQUISITOS

Page 20: Experiencias con Neo4j en InfoJobs

MODELO

20

Sugerencias de contactos

■ Personas que han trabajado en la misma empresa en un mismo periodo de tiempo

■ Personas que han realizado un mismo estudio en un mismo centro de formación en un mismo periodo de tiempo.

■ Ponderar sugerencias en función de tiempo de coincidencia y antigüedad de la coincidencia.

Page 21: Experiencias con Neo4j en InfoJobs

EVOLUCIÓN MODELO

21

Excluir candidatos que…

■ …hemos enviado invitaciones

■ …hemos hemos rechazado

■ ....con los que ya estamos

conectados

Page 22: Experiencias con Neo4j en InfoJobs

EVOLUCIÓN MODELO

22

Incluir nodos de otras redes

■ Incluimos contactos de Facebook

■ Sugerimos amigos de amigos de

Facebook

Page 23: Experiencias con Neo4j en InfoJobs

EVOLUCIÓN MODELO

23

Incluir contactos del teléfono

Incrementar red social en base a red

social real existente

■ Emails

■ Teléfonos

Page 24: Experiencias con Neo4j en InfoJobs

ARQUITECTURA

24

■ Cluster Neo4j

■ Master (W) / Slave (R)

■ Cambios en IJ se aplican a Grafo mediante sistema de colas

■ API Rest

■ Operaciones Neo4j mediante plugins

■ Importer externo. Carga de BD

Page 25: Experiencias con Neo4j en InfoJobs

25

■ Carga directa de BBDD

■ Multithreading para reducir tiempos

de carga y tiempos de espera

■ Grafo de dependencias en el

proceso de carga

■ Proceso de limpieza incorporado

■ Tiempo de carga “reducido”

■ 60Gb tamaño

■ 14M candidatos

■ 2.5M contactos

■ 2.2M invitaciones

■ 4M contactos rechazados

■ 32M sugerencias por email

■ 18M estudios

■ 40M experiencias

■ 75M emails del móvil

■ 180M telfs del móvil

IMPORTER

Page 26: Experiencias con Neo4j en InfoJobs

26

ALGORITMO DE

RECOMENDACIONES

■ Operaciones muy sencillas y

rápidas.

■ Obtener recomendaciones

■ Obtener rewards

■ Eliminar nodos

■ Aplicar reglas de negocio

■ Aplicar pesos a nodos y

resultados

Page 27: Experiencias con Neo4j en InfoJobs

27

SEARCH ENGINE

■ Usamos el índice de Neo4j

para buscar contactos por

texto.

■ Funciona bastante rápido.

Page 28: Experiencias con Neo4j en InfoJobs

28

■ Super nodos

■ Teléfonos => Limpiar y limitar teléfonos muy comunes

■ Empresas => Mercadona, Carrefour, … => Nos falta información de localización => Sugerencias en super nodos son poco relevantes

■ Rotación de candidatos

■ No acción en sugerencias => No interés => Rotar

■ Sugerencias de emails

■ Evitar repeticiones de sugerencias

■ Gestión del cambio del modelo de InfoJobs => Entorno cerrado a entorno abierto

PROBLEMAS ENCONTRADOS

Page 29: Experiencias con Neo4j en InfoJobs

29

ALGUNOS RESULTADOS

0

20000

40000

60000

80000

100000

120000

20

14

/20

20

14

/24

20

14

/28

20

14

/32

20

14

/36

20

14

/40

20

14

/45

20

14

/49

20

15

/01

20

15

/05

20

15

/09

20

15

/13

20

15

/17

20

15

/21

20

15

/25

20

15

/29

20

15

/33

20

15

/37

20

15

/41

Invitations vs Suggestionsweek by week

Ignore

Connect

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

20

1…

% Application rate

Without Contacts

With Contacts

0.0%

5.0%

10.0%

15.0%

20.0%

25.0%

30.0%

W+1 W+2 W+3 W+4

% of Updated CVsweek by week after registration

Candidates (Week 38)

Social Candidates (Week38)

■ 2,6M de conexiones

■ 7% de las recuperaciones de candidatos

■ +12% de opciones de actualizar el CV

Page 30: Experiencias con Neo4j en InfoJobs

GRACIAS