turbinando sua aplicação com lucene, solr e hibernate search
TRANSCRIPT
Turbinando sua aplicação com Lucene
Solr & Hibernate Search
Paulo César M. Jeveaux - @jeveaux
sábado, 19 de setembro de 2009
Jeveaux• CEO da Giran
• Desenvolvedor Java há 8++ anos
• Fundador do ESJUG e Agile-ES
• Administrador do PortalJava.com
• Palestrante e evangelista Java
• Entusiasta Ruby, Rails, Python e Agile
• Curioso e estudando Erlang
sábado, 19 de setembro de 2009
Giran Soluções e Ensino
• Consultoria e Treinamento especialidados
• Java
• Ruby on Rails
• Desenvolvimento ágil
• Gerenciamento de projetos com SCRUM
• Profissionais altamente qualificados
• Participação ativa na comunidade
• http://www.giran.com.br
sábado, 19 de setembro de 2009
Giran Soluções e Ensino
• Consultoria e Treinamento especialidados
• Java
• Ruby on Rails
• Desenvolvimento ágil
• Gerenciamento de projetos com SCRUM
• Profissionais altamente qualificados
• Participação ativa na comunidade
• http://www.giran.com.br
sábado, 19 de setembro de 2009
Giran Soluções e Ensino
• Consultoria e Treinamento especialidados
• Java
• Ruby on Rails
• Desenvolvimento ágil
• Gerenciamento de projetos com SCRUM
• Profissionais altamente qualificados
• Participação ativa na comunidade
• http://www.giran.com.br
sábado, 19 de setembro de 2009
Sobre o que vamos falar hoje...
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
estável
seguro
e de fácilmanutenção
#ESFM
sábado, 19 de setembro de 2009
estável
seguro
e de fácilmanutenção
#ESFM
sábado, 19 de setembro de 2009
•Pesquisas
•Lucene
•Solr
•Hibernate Search
sábado, 19 de setembro de 2009
o que um softwarede pesquisa faz?
o que é um software de pesquisas?
sábado, 19 de setembro de 2009
FAZ
sábado, 19 de setembro de 2009
monta um índice
FAZ
sábado, 19 de setembro de 2009
monta um índice
responde a pesquisas baseando-se neste índice
FAZ
sábado, 19 de setembro de 2009
monta um índice
responde a pesquisas baseando-se neste índice
FAZ
Search Software?Eu faço LIKE
direto no banco de dados
sábado, 19 de setembro de 2009
OFERECE
sábado, 19 de setembro de 2009
relevância
OFERECE
sábado, 19 de setembro de 2009
relevância
escalabilidade
OFERECE
sábado, 19 de setembro de 2009
relevância
escalabilidade
OFERECE
integração com diversas fontesde dados
sábado, 19 de setembro de 2009
baseado em palavrasnão em substrings
má OU macho
carro OU automóvel
auto != automóvel
sábado, 19 de setembro de 2009
baseado em palavrasnão em substrings
má OU macho
carro OU automóvel
auto != automóvel
talvez aqui no Ceará não ;-)
sábado, 19 de setembro de 2009
baseado em palavrasnão em substrings
má OU macho
carro OU automóvel
auto != automóvel
talvez aqui no Ceará não ;-)
e agora!?como fazer no banco de dados?
sábado, 19 de setembro de 2009
ApacheLucene
sábado, 19 de setembro de 2009
SearchSoftware
sábado, 19 de setembro de 2009
Open Source
SearchSoftware
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
Lucene Java
Solr
sábado, 19 de setembro de 2009
Lucene Java
Lucene.Net
Droids
Lucy
Mahout
NutchOpen RelevanceProject
PyLucene
SolrTika
desde 2000
sábado, 19 de setembro de 2009
Lucene Java
indexação e pesquisa
nenhuma dependência, nenhuma!
java 1.4++
qualquer coisa é um documento
sábado, 19 de setembro de 2009
Lucene Java
indexação e pesquisa
nenhuma dependência, nenhuma!
java 1.4++
qualquer coisa é um documentofieldsfieldsfields{ }
sábado, 19 de setembro de 2009
Lucene Featuresindexação e pesquisa bastante rápidas
ordenação por relevância ou por campos (fields)
query syntax simples e poderosa
comunidade grande e ativa
Apache License 2.0
sábado, 19 de setembro de 2009
Lucene Query Syntaxcejug
“cejug”
*jug
café AND tapioca
café OR tapioca
café NOT tapioca
jug:cejug
sábado, 19 de setembro de 2009
Lucene Query Syntaxcejug
“cejug”
*jug
café AND tapioca
café OR tapioca
café NOT tapioca
jug:cejug
+café +tapioca
sábado, 19 de setembro de 2009
Lucene Query Syntaxcejug
“cejug”
*jug
café AND tapioca
café OR tapioca
café NOT tapioca
jug:cejug
+café +tapioca
+café -tapioca
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística
lowercase
stopwords
tokenizer
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística
lowercase
stopwords
tokenizer
guri => menino
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística
lowercase
stopwords
tokenizer
a, e, ou, para, de, etc ...
guri => menino
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística
lowercase
stopwords
tokenizer
a, e, ou, para, de, etc ...
ce-jug: java => ce, jug, java, cejug
guri => menino
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística
lowercase
stopwords
tokenizer
a, e, ou, para, de, etc ...
ce-jug: java => ce, jug, java, cejug
guri => menino
má => macho
sábado, 19 de setembro de 2009
Lucene Features++
Fuzzy search
distância de levenshtein
“ceará java ~ 0.75”
Proximidade
“ceará java” ~ 5
sábado, 19 de setembro de 2009
aprendendoo básico
sábado, 19 de setembro de 2009
aprendendoo básico
1. INDEXAR
sábado, 19 de setembro de 2009
aprendendoo básico
1. INDEXAR
sábado, 19 de setembro de 2009
aprendendoo básico
1. INDEXAR
2. PESQUISARsábado, 19 de setembro de 2009
1. crie um documento a. adicione os fields
2. adicione o documento ao index
3. o indexador irá analisar o documento e atualizar o index
index
sábado, 19 de setembro de 2009
1. crie um documento a. adicione os fields
2. adicione o documento ao index
3. o indexador irá analisar o documento e atualizar o index
index search
1. crie uma query
2. abra um index
3. pesquise no index
4. itere no resultado e exiba-o
sábado, 19 de setembro de 2009
hands on!
sábado, 19 de setembro de 2009
Solr
sábado, 19 de setembro de 2009
Search Serversábado, 19 de setembro de 2009
baseado no lucene
Search Serversábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
sábado, 19 de setembro de 2009
Solrsábado, 19 de setembro de 2009
caching
JSONXML
full-textsearch
replicação
Solr
administraçãoamigável
altaperformance
sábado, 19 de setembro de 2009
Solr
servidor web de indexação e pesquisa
possui o lucene em seu core
java 1.5++
sábado, 19 de setembro de 2009
Solr Featuresinterface web de administração
suporta caching e replication
otimizações para alta performance e muito tráfego
XML/HTTP e JSON API
faceted search
hit highlightingsábado, 19 de setembro de 2009
hands on!
sábado, 19 de setembro de 2009
Hibernate Search
sábado, 19 de setembro de 2009
o melhor dedois mundos?
sábado, 19 de setembro de 2009
talvez!
o melhor dedois mundos?
sábado, 19 de setembro de 2009
Hibernate Search Features
hibernate core + JPA
indexação baseada em eventos (transparente)
integração com seu modelo
baseado em anotações
sábado, 19 de setembro de 2009
Hibernate Search Features
hibernate core + JPA
indexação baseada em eventos (transparente)
lucene
integração com seu modelo
+baseado em anotações
sábado, 19 de setembro de 2009
Hibernate Search Features
elimina a conversão para documentos
depende do hibernate core e annotations
amigável com soluções JBoss*
mantém seu índice atualizado
também possui integração com Solr
sábado, 19 de setembro de 2009
hands on!
sábado, 19 de setembro de 2009
Conclusões
lucene
indexação e pesquisa
rápido e poderoso
simples e leve
sem dependências
não possui webcrawlers ou parsers
sábado, 19 de setembro de 2009
Conclusões
solr
servidor de indexação e pesquisa
Restful API (HTTP e XML)
cliente não precisa ser Java
administração fácil via web
construído sobre o lucene
sábado, 19 de setembro de 2009
Conclusões
hibernate search
integração com seu modelo de dados
sem manipulação direta de documentos
sincronização transparente do index
dependência do hibernate
sábado, 19 de setembro de 2009
Referências• http://search.hibernate.org
• http://lucene.apache.org
• http://lucene.apache.org/solr
• http://info.abril.com.br/noticias/ti/fbi-e-cia-vao-abracar-o-codigo-aberto-22062009-35.shl
• http://www.getopt.org/luke
• http://vitorpamplona.com/wiki/Introdução%20ao%20Apache%20Lucene
• http://www.lucenetutorial.com
• http://wikipedia.org
sábado, 19 de setembro de 2009
Exemplos & Códigos
• Lucene
• http://github.com/jeveaux/aprendendo-lucene
• Solr
• http://github.com/jeveaux/aprendendo-solr
• Hibernate Search
• http://github.com/jeveaux/aprendendo-hibernatesearch
sábado, 19 de setembro de 2009
dúvidas?sábado, 19 de setembro de 2009
http://www.cejug.org
Obrigado!
sábado, 19 de setembro de 2009
Turbinando sua aplicação com Lucene
Solr & Hibernate Search
Paulo César M. Jeveaux - @jeveaux
sábado, 19 de setembro de 2009