Turbinando sua aplicação com Lucene, Solr e Hibernate Search - Presentation Transcript
Turbinando sua aplicação com Lucene
Solr & Hibernate Search
Paulo César M. Jeveaux - @jeveaux
paulo.jeveaux@giran.com.br
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
#ESFM
estável
seguro
e de fácil
manutenção
sábado, 19 de setembro de 2009
#ESFM
estável
seguro
e de fácil
manutenção
sábado, 19 de setembro de 2009
• Pesquisas
• Lucene
• Solr
• Hibernate Search
sábado, 19 de setembro de 2009
o que é um software de
pesquisas?
o que um software
de pesquisa faz?
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
FAZ responde a pesquisas
baseando-se neste índice
sábado, 19 de setembro de 2009
monta um índice
FAZ responde a pesquisas
baseando-se neste índice
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
OFERECE
relevância
sábado, 19 de setembro de 2009
OFERECE
relevância
escalabilidade
sábado, 19 de setembro de 2009
OFERECE
relevância
escalabilidade
integração com diversas fontes
de dados
sábado, 19 de setembro de 2009
baseado em palavras
não em substrings
carro OU automóvel
auto != automóvel
má OU macho
sábado, 19 de setembro de 2009
baseado em palavras
não em substrings
carro OU automóvel
auto != automóvel
má OU macho talvez aqui no Ceará não ;-)
sábado, 19 de setembro de 2009
baseado em palavras
não em substrings
carro OU automóvel
auto != automóvel
má OU macho talvez aqui no Ceará não ;-)
e agora!?
como fazer no banco de dados?
sábado, 19 de setembro de 2009
Apache
Lucene
sábado, 19 de setembro de 2009
Search
Software
sábado, 19 de setembro de 2009
Open Source
Search
Software
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
Mahout PyLucene
Lucene Java desde 2000
Lucy
Tika
Solr Lucene.Net
Open Relevance Nutch
Project
Droids
sábado, 19 de setembro de 2009
Lucene Java
indexação e pesquisa
java 1.4++
nenhuma dependência, nenhuma!
qualquer coisa é um documento
sábado, 19 de setembro de 2009
Lucene Java
indexação e pesquisa
java 1.4++
nenhuma dependência, nenhuma!
qualquer coisa é um documento
{ }
fields
fields
fields
sábado, 19 de setembro de 2009
Lucene Features
indexação e pesquisa bastante rápidas
query syntax simples e poderosa
ordenação por relevância ou por campos (fields)
comunidade grande e ativa
Apache License 2.0
sábado, 19 de setembro de 2009
Lucene Query Syntax
cejug
“cejug”
*jug
café AND tapioca
café OR tapioca
café NOT tapioca
jug:cejug
sábado, 19 de setembro de 2009
Lucene Query Syntax
cejug
“cejug”
*jug
café AND tapioca +café +tapioca
café OR tapioca
café NOT tapioca
jug:cejug
sábado, 19 de setembro de 2009
Lucene Query Syntax
cejug
“cejug”
*jug
café AND tapioca +café +tapioca
café OR tapioca
café NOT tapioca +café -tapioca
jug:cejug
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 guri => menino
lowercase
stopwords
tokenizer
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística guri => menino
lowercase
stopwords a, e, ou, para, de, etc ...
tokenizer
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística guri => menino
lowercase
stopwords a, e, ou, para, de, etc ...
tokenizer ce-jug: java => ce, jug, java, cejug
sábado, 19 de setembro de 2009
Lucene Features++
normalização de textos (Analyzer)
normalização linguística guri => menino
má => macho
lowercase
stopwords a, e, ou, para, de, etc ...
tokenizer ce-jug: java => ce, jug, java, cejug
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
aprendendo
o básico
sábado, 19 de setembro de 2009
aprendendo
o básico
1. INDEXAR
sábado, 19 de setembro de 2009
aprendendo
o básico
1. INDEXAR
sábado, 19 de setembro de 2009
aprendendo
o básico
1. INDEXAR
2. PESQUISAR
sábado, 19 de setembro de 2009
index
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
sábado, 19 de setembro de 2009
index search
1. crie um documento 1. crie uma query
a. adicione os fields
2. abra um index
2. adicione o documento
ao index 3. pesquise no index
3. o indexador irá analisar 4. itere no resultado e
o documento e atualizar exiba-o
o index
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 Server
sábado, 19 de setembro de 2009
baseado no lucene
Search Server
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
Solr
sábado, 19 de setembro de 2009
caching replicação
XML
JSON
alta
performance administração
amigável
full-text
search Solr
sábado, 19 de setembro de 2009
Solr
servidor web de indexação e pesquisa
java 1.5++
possui o lucene em seu core
sábado, 19 de setembro de 2009
Solr Features
interface web de administração
otimizações para alta performance e muito tráfego
suporta caching e replication
XML/HTTP e JSON API
faceted search
hit highlighting
sá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 de
dois mundos?
sábado, 19 de setembro de 2009
talvez!
o melhor de
dois mundos?
sábado, 19 de setembro de 2009
Hibernate Search Features
hibernate core + JPA
baseado em anotações
indexação baseada em eventos (transparente)
integração com seu modelo
sábado, 19 de setembro de 2009
Hibernate Search Features
hibernate core + JPA + lucene
baseado em anotações
indexação baseada em eventos (transparente)
integração com seu modelo
sábado, 19 de setembro de 2009
Hibernate Search Features
elimina a conversão para documentos
mantém seu índice atualizado
depende do hibernate core e annotations
também possui integração com Solr
amigável com soluções JBoss*
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
http://www.esjug.org
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
Obrigado!
http://www.cejug.org
sábado, 19 de setembro de 2009
Turbinando sua aplicação com Lucene
Solr & Hibernate Search
Paulo César M. Jeveaux - @jeveaux
paulo.jeveaux@giran.com.br
sábado, 19 de setembro de 2009
0 comments
Post a comment