52
Eriksen Costa Paixão [email protected] Download em: <http://tinyurl.com/ecppcb2009>

Você quis dizer: buscas poderosas com Apache Solr, Lucene

Embed Size (px)

Citation preview

Page 1: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Eriksen Costa Paixã[email protected]

Download em: <http://tinyurl.com/ecppcb2009>

Page 2: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Eriksen Costa Paixão

● Analista Desenvolvedor na Cobra Tecnologia S.A.

● Mantenedor do i-Educar (software público de gestão escolar)

● 6 anos de experiência PHP

● 2º ano na PHPConf

eriksencosta.wordpress.com

br.linkedin.com/in/eriksencosta

@eriksencosta

tinyurl.com/ieducarspb

Page 3: Você quis dizer: buscas poderosas com Apache Solr, Lucene

SELECT *FROM tableWHERE field LIKE '%something%'

Page 4: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Isso escala?

Page 5: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Depende

● Dados estruturados● Dados não-estruturados

Page 6: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Dados estruturados

● Cadastro de clientes● Catálogo de livros● Tickets de help desk● HTML● HTML+RDF● XHTML● Documentos XML

Page 7: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Dados não-estruturados

● Cadastro de clientes● Catálogo de livros● Tickets de help desk● HTML● HTML+RDF● XHTML● Documentos XML

Page 8: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Como?

Page 9: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 10: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Contexto!

Page 11: Você quis dizer: buscas poderosas com Apache Solr, Lucene

SELECT *FROM tableWHERE field LIKE '%something%'

Page 12: Você quis dizer: buscas poderosas com Apache Solr, Lucene

SELECT o.conteudo, FROM Observacoes o, Clientes cWHERE (o.conteudo LIKE '%porcaria%' OR o.conteudo LIKE '%ruim%' OR o.conteudo LIKE '%insatisfeito%') AND o.cliente_id = c.id

Page 13: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Relevância!

Page 14: Você quis dizer: buscas poderosas com Apache Solr, Lucene

E por que me importar?!

Page 15: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Casos de uso

● Aumentar conversão de vendas● Aumentar o tempo de visita ao seu site● Redução de custo (auto-serviço)● Melhorar a usabilidade● Descoberta de novas informações

Page 16: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Full-text search

Page 17: Você quis dizer: buscas poderosas com Apache Solr, Lucene

In text retrieval, full text search refers to a technique for searching a computer-stored document or database.

Fonte: <http://en.wikipedia.org/wiki/Full_text_search>

Page 18: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Você as usa

● Google● Wikipedia● BuscaPé● Knowledge Tree● …● (LIKE, ILIKE, NOT LIKE)

Page 19: Você quis dizer: buscas poderosas com Apache Solr, Lucene

E que tal implementar?

Page 20: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 21: Você quis dizer: buscas poderosas com Apache Solr, Lucene

● Biblioteca de busca textual● Java● Indexing de alta performance● Algoritmo de busca eficiente● Ordenação● Diversos tipos de buscas (proximidade,

wilcards, range)● Busca em múltiplos índices

Page 22: Você quis dizer: buscas poderosas com Apache Solr, Lucene

● Servidor de buscas● Baseado no Lucene● Interface HTTP, XML e JSON● Highlighting● Faceted search● Cache, Replicação

Page 23: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Começando

● É uma aplicação Java (.war)● Faça o deploy em seu servidor de aplicação

(Tomcat, Jboss.org, Jetty)● Use a aplicação exemplo (“example”)

Page 24: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 25: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Vamos começar?Pequeno passo-a-passo inspirado em: <http://www.slideshare.net/pittaya/using-apache-solr>

Page 26: Você quis dizer: buscas poderosas com Apache Solr, Lucene

1

Page 27: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Configure o schema.xml

$ vim /caminho/solr/wiki_search/solr/conf/schema.xml

<field name="id" type="int" indexed="true" stored="true" required="true" /><field name="body" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true"/><field name="keywords" type="textgen" indexed="true" stored="true"/>

<field name="text" type="text" indexed="true" stored="false" multiValued="true"/> <copyField source="keywords" dest="text"/><copyField source="body" dest="text"/> <uniqueKey>id</uniqueKey>

Page 28: Você quis dizer: buscas poderosas com Apache Solr, Lucene

2

Page 29: Você quis dizer: buscas poderosas com Apache Solr, Lucene

$ java -jar wiki_search/start.jar

Page 30: Você quis dizer: buscas poderosas com Apache Solr, Lucene

3

Page 31: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Indexe alguns arquivos<?php

$xml = '<add> <doc> <field name="id">%d</field> <field name="title">%s</field> <field name="keywords">%s</field> <field name="body">%s</field> </doc></add><commit/>';$opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: text/xml; charset=UTF-8', 'content' => sprintf($xml, '' [...]); ));$context = stream_context_create($opts);file_get_contents('http://localhost:8983/solr/update', FALSE, $context);

Page 32: Você quis dizer: buscas poderosas com Apache Solr, Lucene

4

Page 33: Você quis dizer: buscas poderosas com Apache Solr, Lucene

http://localhost:8983/solr/select?q=brazil

Page 34: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 35: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Não gosta de XML?

Page 36: Você quis dizer: buscas poderosas com Apache Solr, Lucene

http://localhost:8983/solr/select?q=brazil&wt=json

Page 37: Você quis dizer: buscas poderosas com Apache Solr, Lucene

{ "responseHeader":{ "status":0, "QTime":22, "params":{

"fl":"id,title,keywords,score","indent":"on","wt":"json","q":"brazil"}},

"response":{"numFound":214,"start":0,"maxScore":0.76659626,"docs":[{ "id":725, "keywords":"Brazil,Brazil.ogg,.br,1519,1822,1825,1889,1 E12 m²,Acre

(state),Africa,African", "title":[ "Brazil - Wikipedia, the free encyclopedia"], "score":0.76659626},{ "id":3452, "keywords":"National Congress of Brazil,Argentine National

Congress,Bicameralism,Brasilia,Brasília,Brazil,Brazilian Communist Party,Brazilian Federal District,Brazilian Labour Party,Brazilian Socialist Party,Brazilian general elections, 2006",

"title":[ "National Congress of Brazil - Wikipedia, the free encyclopedia"], "score":0.5694134}

Page 38: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Highlighting

Page 39: Você quis dizer: buscas poderosas com Apache Solr, Lucene

http://localhost:8983/solr/select?q=brazil&wt=json

&hl=on&hl.fl=body&hl.simple.pre=<span>

&hl.simple.post=</span>

Page 40: Você quis dizer: buscas poderosas com Apache Solr, Lucene

"highlighting":{ "725":{

"body":["<span>Brazil</span> - Wikipedia, the free encyclopedia <span>Brazil</span> - Wikipedia, the free encyclopedia <span>Brazil</span>"]}, "3452":{

"body":["National Congress of <span>Brazil</span>- Wikipedia, the free encyclopedia National Congress of <span>Brazil</span>"]}

Page 41: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 42: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Faceted-search

Page 43: Você quis dizer: buscas poderosas com Apache Solr, Lucene

http://localhost:8983/solr/select?q=brazil&wt=json

&hl=on&hl.fl=body&hl.simple.pre=<span>

&hl.simple.post=</span>&facet=true

&facet.field=keywords

Page 44: Você quis dizer: buscas poderosas com Apache Solr, Lucene

"facet_counts":{ "facet_queries":{}, "facet_fields":{"keywords":[ "programming",106, "language",92, "computer",78, "c",54, "science",38, "2006",37

Page 45: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 46: Você quis dizer: buscas poderosas com Apache Solr, Lucene
Page 47: Você quis dizer: buscas poderosas com Apache Solr, Lucene

E tem muito mais...

Page 48: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Mais...

● Cache● Otimizações de performance● Replicação● Analyzers● Plugins

Page 49: Você quis dizer: buscas poderosas com Apache Solr, Lucene

E mais...

● Zend_Search_Lucene● Drupal Solr Module

Page 50: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Documentação

● Não extensa● Leia os arquivos de configuração● Solr está melhor documentado que o Lucene● Zend_Search_Lucene muito bem

documentado, auxilia no entendimento● Faça uma full-text search na Internet...

● Apache Solr● Apache Lucene =)

Page 51: Você quis dizer: buscas poderosas com Apache Solr, Lucene

?

Page 52: Você quis dizer: buscas poderosas com Apache Solr, Lucene

Obrigado!Eriksen Costa Paixã[email protected]

Download em: http://tinyurl.com/ecppcb2009