Your SlideShare is downloading. ×
Pesquisa do Sapo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Pesquisa do Sapo

4,353
views

Published on

Iniciação ao mundo da Pesquisa, o que há num motor de Pesquisa moderno, APIs da Pesquisa do SAPO.

Iniciação ao mundo da Pesquisa, o que há num motor de Pesquisa moderno, APIs da Pesquisa do SAPO.

Published in: Technology, Business

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,353
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
50
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. pesquisa.sapo.pt João Pedro Gonçalves Codebits, 14 de Novembro 2007
  • 2. Agenda A Pesquisa do SAPO Como funciona um motor de Pesquisa APIs de acesso à Pesquisa
  • 3. A Pesquisa do SAPO • 40 milhões Pesquisas por mês. • 50 Queries por Segundo (QPS). • Acordo com Google desde 1999. • Indexador FAST com cerca de 75 milhões de páginas indexadas.
  • 4. A Pesquisa do SAPO • Frontend em mod_perl • Perl, Python, PHP, C e C++ • Equipa de 10 programadores nas áreas de Pesquisa, Anúncios contextualizados e Directório
  • 5. A Pesquisa do SAPO • Interface com menus contextuais. • Preview e Gravar página como PDF. • Pesquisa de Notícias e Blogs portugueses.
  • 6. Como funciona um motor de Pesquisa Desafios Tempo de Resposta Ranking Volume de Informação
  • 7. Tempo de resposta - ciclo Search, Find, Obtain Mindstorms Acesso rápido à caixa de Pesquisa. Resultado Tempo de pretendido rápido carregamento da de encontrar na páginas de destino página. está fora de controle do motor de busca.
  • 8. Autoridade e Relevância - Desafios • Análise estrutural da Web. • Autoridade nem sempre qualidade • Comportamento dos utilizadores ajuda no ranking. • Problemas com Spam.
  • 9. Volume da Informação - Desafios ~15 KB 75 1 Terabyte de Indice por documento milhões de páginas de Pesquisa Objectivo: No caso Português, garantir 50 QPS em menos de 500ms por Pesquisa, com um Índice de 1 Terabyte.
  • 10. Como funciona um motor de Pesquisa Fases da Pesquisa Crawling e análise de conteúdo Indexação Query
  • 11. Crawlers • Percorrem as páginas que irão ser indexadas. • Limite de pedidos por site. • Vários sites em simultâneo, optimizado para a largura de banda disponível. • Crawling distribuído. • Master distribui tarefas, cada nó é responsável pelo seu armazenamento.
  • 12. Document Pipeline • Conteúdo dos crawlers é enviado para a Document Pipeline. • Envio em batch dos documentos. • Cada url é um objecto Document. • No início do processo, apenas sabemos a url e o conteúdo do documento não processado.
  • 13. DOCInit Document Pipeline EncodingNormalizer Preparar Documento PDF/Flash / doc Converter HTMLParsing LinkExtractor Analizar estrutura LinkAnalyzer LanguageDetector Vectorizer Análise linguística Lemmatizer GetLocations GetPersonNames • Cada componente na Extracção de Entidades cadeia é um módulo GetDateAndTime QualityBoosting isolado que altera o Controle de Qualidade RankTuning objecto Document. SerializeDocument • Módulos desenvolvidos Send to Indexer em Python. Índice
  • 14. Vectorizer: Clustering de conteúdo [senado aprova, 1] [michael mukasey, 1] [posições controversas, 1] [attorney general, 1] [aprova responsável, 1] [estados unidos, 1] [senado aprova, 1] [justiça, 1] [attorney general, 0.707107] [aprova responsável, 1] [attorney, 0.707107] [alberto gonzales, 0.707107] [oito procuradores, 0.707107] [reformado michael, 0.707107] [procuradores públicos, 0.707107] [mukasey substitui, 0.707107] [interrogatório waterboarding, 0.707107] [unidos confirmou, 0.707107] [debate duro, 0.707107] [oito procuradores, 0.707107] [michael mukasey, 0.707107] [opiniões controversas, 0.707107] [substitui alberto gonzales, 0.707107] [juiz reformado, 0.707107] [procuradores públicos, 0.707107] [substitui alberto gonzales, 0.707107] • Essencial para evitar resultados semelhantes. • Vector do documento permite efectuar análise de clusters.
  • 15. Indexação doc1, (pos1,pos2, .., posN) doc2, (pos1,pos2, .., posN) termo docN, (pos1,pos2, .., posN) • Índices invertidos optimizados para a intersecção de termos. • Posição relativa dos termos é guardada.
  • 16. Indexação 5, (90,125,324) mindstorm 34, (5, 46) 23, (1,25,34) 34, (4, 45, 925) doc34 lego ..... ...... ... 45, (2, 322) ... lego mindstorm ... ..... 9, (10023) U = lego mindstorm doc34
  • 17. Indexação • Cada índice é gerado localmente. • Perfil do Índice permite definir quais os campos mais relevantes e qual o peso.
  • 18. Pesquisa em paralelo Publicidade Mindstorms Contextualizada Correcção ortográfica Módulos Contextualizados Pesquisa Distribuída
  • 19. Pesquisa distribuída • Cada nó de Pesquisa tem uma porção do índice total de Pesquisa. • A um conjunto de nós com o mesmo índice chamamos de Coluna. • Uma pesquisa na Coluna devolve sempre os mesmos resultados.
  • 20. Query • Ao conjunto de nós que perfazem a totalidade do Índice, mas sem redundância chamamos de Linha. • Cada Linha responde a um número limitado de QPS. • Uma pesquisa é efectuada em todas as colunas presentes numa Linha.
  • 21. Query • A Matriz da Pesquisa é o número de nós [Linhas x Colunas ] • Cada Pesquisa é balanceada dentro de cada Coluna para ser servida por um dos nós com o mesmo Índice. • O algoritmo de MergeSort ordena os resultados que vêm de cada nó.
  • 22. Query Mindstorms Col 2 Col 0 Merge(Col0, Col1, Col2) Col 1
  • 23. Open source • Lucene • Motor em Java. • Suporte perfis de índices e pesquisa em campos. • SolR • Baseado no Lucene. • Optimizado para conteúdo web. • APIs JSON e XML/RPC
  • 24. Agenda A Pesquisa do SAPO Como funciona um motor de Pesquisa APIs de acesso à Pesquisa
  • 25. OpenSearch • Protocolo Opensearch da A9 • RSS para a Pesquisa. • Auto-discovery suportada em Browsers modernos.
  • 26. OpenSearch <?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?> <OpenSearchDescription xmlns=quot;http://a9.com/-/spec/opensearchdescription/1.0/quot;> <Url>http://pesquisa.sapo.pt/openSearch? q={searchTerms}&amp;count={count}&amp;fs={startIndex}&amp;rss=1</Url> <Format>http://a9.com/-/spec/opensearchrss/1.0/</Format> <ShortName>SAPO</ShortName> <LongName>Pesquisa SAPO</LongName> <Description>Pesquisa no Directorio SAPO - Portuguese only</Description> <Tags>sapo portugal directorio pesquisa</Tags> <Image>http://imgs.sapo.pt/images/c2/www.sapo.pt/icones_topo/logotipo/logo_b.gif</Image> <SampleSearch>sapo</SampleSearch> <Developer>Joao Pedro Goncalves</Developer> <Contact>joaop@co.sapo.pt</Contact> <Attribution>SAPO - Portugal Online, PT.COM</Attribution> <SyndicationRight>open</SyndicationRight> <AdultContent>false</AdultContent> </OpenSearchDescription> http://services.sapo.pt/Metadata/Service/Search
  • 27. OpenSearch em Perl use WWW::OpenSearch; my $url = quot;http://services.sapo.pt/Metadata/OpenSearch/Searchquot;; my $engine = WWW::OpenSearch->new($url); # Perform search for quot;sapoquot; my $response = $engine->search(quot;sapoquot;); for my $item ($response->feed->items) { print $item->title, quot;ntquot;, $item->link, quot;nquot;; } http://services.sapo.pt/Metadata/Service/Search
  • 28. Query completion - Collective Intelligence • Análise dos queries efectuados na Pesquisa do SAPO • Ordenar as pesquisas mais frequentes devolve comportamentos dos Portugueses, um sistema de sugestões de Pesquisa • Fonte de informação valiosa para previsão de comportamento dos utilizadores
  • 29. Query completion • Integração com Firefox • Serviço já disponível • Extremamente rápido • Interface em JSON e XML [quot;quarteiraquot;,[quot;quarteiraquot;,quot;apartamentos quarteiraquot;,quot;ferias quarteiraquot;,quot;hoteis quarteiraquot;,quot;mapa quarteiraquot;,quot;hoteis em quarteiraquot;,quot;quarteira apartamentosquot;,quot;quarteira nomes de cafesquot;,quot;hotel quarteira solquot;,quot;apartamentos na quarteiraquot;,quot;quarteiraturquot;,quot;quarteiraoquot;,quot;orbitur quarteiraquot;,quot;quartos quarteiraquot;,quot;camping quarteiraquot;,quot;parque campismo quarteiraquot;],[],[]] http://pesquisa.sapo.pt/livesapo?q={query}
  • 30. Obrigado! Perguntas? joaop@co.sapo.pt João Pedro Gonçalves Codebits, 14 de Novembro 2007