Extração de informação no StackOverflow Careers

Preview:

DESCRIPTION

Presented at DNAD 2014 (NetArchitects Days), in Sao Paulo, Brazil

Citation preview

EXTRAÇÃO DE INFORMAÇÃO NOSTACKOVERFLOW CAREERS

Roberta Arcoverde / @rla4.Net Architects Days 2014

/WHOIS ROBERTArecifensecientista da computação, UFPE, 2008mestre em informática, PUC-Rio, 2012participante do DNA desde 2008developer, Radix, 2010-2014full-stack web developer, Stack Exchange, 20141a mulher palestrando no DNAD :O :O :O

começou em 20083MM usuários registrados50MM visitantes únicos por mês2000-3000 hits por segundotop 50 sites mais acessados do mundo*

*segundo o Alexa. sei lá se é verdade. deve ser.

TUDO ISSO COM APENAS 9 SERVIDORES

350k usuários registrados (~200k com um perfil/CV)

~3000 vagas ativas/dia

PRINCIPAL OBJETIVOAjudar empresas diferenciadas a encontrar profissionais

também diferenciados(e vice-versa!)

...MAS AINDA SÃO MUITOS USUÁRIOS!

TAG ENGINE FOR THE RESCUE!Perguntas no StackOverflow são associadas a tags

Mesma ideia aplicada ao Careers, mas ao invés de perguntas erespostas, taggeamos CVs!

NEM SÓ DE TAG VIVE O CANDIDATO1. Como buscar por OSS? E por empregador?2. Mike and also Michael?3. Google and not Google?4. Por que este candidato foi retornado na minha busca?

CV == DOCUMENTO

ELASTICSEARCHEngine de análise, indexação e busca

Usa Lucene internamente

Restful API, document database (JSON)

Cluster de 3 servidores

"_source": { "cvId": 195731, "stackExchangeAnswersTags": [ "c#", "javascript", ".net" ], "likeTags": [ "c#", "programming-languages", "functional-programming", "compiler", "java", "haskell", "javascript", "tdd", "aspect-oriented", "asp.net-mvc" ], "projects": [], "yearsOfExperienceTags": [ "aop", "architecture", "asp.net", "asp.net-mvc", "c#", "html5", "iis", "javascript", "jquery", "knockout.js", "msbuild", "nunit",

HABEMUS DOCUMENTOSterm queries vs filters

contexto (snippets)

rankingmike == michael, ruby on rails == ror

...mas nada de busca avançada

CQLBuscas mais poderosas e flexíveis lembram do Google and not Google?

gmail search

google drive search

trello search

FINALMENTE, A 'ARQUITETURA'

CQLBoolean queries

Operadores específicos

Include/exclude

(c# or java) and not manager

education:(Stanford, MIT, Xavier's School for Gifted Yougsters)

ex:students,remote

IMPLEMENTAÇÃO(c# or java) and employer:microsoft

LEXERchar-buffering

(c# or java) and employer:microsoft

LPAREN Term OR RPAREN AND OperatorCOLON Term

PARSERtop-down, descendente recursivo

LPAREN Term OR RPAREN AND OperatorCOLON Term

CQL(c# or java) and

employer:microsoft

TERM QUERY"query":"((c# OR java)ANDexperienceName:microsoft)"

exclude:student

"must":["term": {"isStudent": { "value":"false" }} ]

FRESCURINHAS FINAISSYNTAX HIGHLIGHTING

AUTOCOMPLETE1-WAY BINDING

RESULTADOS LEGAISBUSCA FICOU > 30% MAIS RÁPIDA

NÚMERO DE CANDIDATE SEARCH SUBSCRIPTIONS DOBROU (!)

OBRIGADA :)