79
Turbinando sua aplicação com Lucene Solr & Hibernate Search Paulo César M. Jeveaux - @jeveaux [email protected] sábado, 19 de setembro de 2009

Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Embed Size (px)

Citation preview

Page 1: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Turbinando sua aplicação com Lucene

Solr & Hibernate Search

Paulo César M. Jeveaux - @jeveaux

[email protected]

sábado, 19 de setembro de 2009

Page 2: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 3: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 4: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 5: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 6: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Sobre o que vamos falar hoje...

sábado, 19 de setembro de 2009

Page 7: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 8: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 9: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 10: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

estável

seguro

e de fácilmanutenção

#ESFM

sábado, 19 de setembro de 2009

Page 11: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

estável

seguro

e de fácilmanutenção

#ESFM

sábado, 19 de setembro de 2009

Page 12: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

•Pesquisas

•Lucene

•Solr

•Hibernate Search

sábado, 19 de setembro de 2009

Page 13: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

o que um softwarede pesquisa faz?

o que é um software de pesquisas?

sábado, 19 de setembro de 2009

Page 14: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

FAZ

sábado, 19 de setembro de 2009

Page 15: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

monta um índice

FAZ

sábado, 19 de setembro de 2009

Page 16: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

monta um índice

responde a pesquisas baseando-se neste índice

FAZ

sábado, 19 de setembro de 2009

Page 17: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 18: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

OFERECE

sábado, 19 de setembro de 2009

Page 19: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

relevância

OFERECE

sábado, 19 de setembro de 2009

Page 20: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

relevância

escalabilidade

OFERECE

sábado, 19 de setembro de 2009

Page 21: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

relevância

escalabilidade

OFERECE

integração com diversas fontesde dados

sábado, 19 de setembro de 2009

Page 22: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

baseado em palavrasnão em substrings

má OU macho

carro OU automóvel

auto != automóvel

sábado, 19 de setembro de 2009

Page 23: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 24: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 25: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

ApacheLucene

sábado, 19 de setembro de 2009

Page 26: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

SearchSoftware

sábado, 19 de setembro de 2009

Page 27: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Open Source

SearchSoftware

sábado, 19 de setembro de 2009

Page 28: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 29: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 30: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 31: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 32: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Java

Solr

sábado, 19 de setembro de 2009

Page 33: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Java

Lucene.Net

Droids

Lucy

Mahout

NutchOpen RelevanceProject

PyLucene

SolrTika

desde 2000

sábado, 19 de setembro de 2009

Page 34: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Java

indexação e pesquisa

nenhuma dependência, nenhuma!

java 1.4++

qualquer coisa é um documento

sábado, 19 de setembro de 2009

Page 35: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Java

indexação e pesquisa

nenhuma dependência, nenhuma!

java 1.4++

qualquer coisa é um documentofieldsfieldsfields{ }

sábado, 19 de setembro de 2009

Page 36: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 37: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Query Syntaxcejug

“cejug”

*jug

café AND tapioca

café OR tapioca

café NOT tapioca

jug:cejug

sábado, 19 de setembro de 2009

Page 38: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 39: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 40: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Features++

normalização de textos (Analyzer)

normalização linguística

lowercase

stopwords

tokenizer

sábado, 19 de setembro de 2009

Page 41: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Features++

normalização de textos (Analyzer)

normalização linguística

lowercase

stopwords

tokenizer

guri => menino

sábado, 19 de setembro de 2009

Page 42: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 43: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 44: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 45: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Lucene Features++

Fuzzy search

distância de levenshtein

“ceará java ~ 0.75”

Proximidade

“ceará java” ~ 5

sábado, 19 de setembro de 2009

Page 46: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

aprendendoo básico

sábado, 19 de setembro de 2009

Page 47: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

aprendendoo básico

1. INDEXAR

sábado, 19 de setembro de 2009

Page 48: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

aprendendoo básico

1. INDEXAR

sábado, 19 de setembro de 2009

Page 49: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

aprendendoo básico

1. INDEXAR

2. PESQUISARsábado, 19 de setembro de 2009

Page 50: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 51: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 52: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

hands on!

sábado, 19 de setembro de 2009

Page 53: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Solr

sábado, 19 de setembro de 2009

Page 54: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Search Serversábado, 19 de setembro de 2009

Page 55: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

baseado no lucene

Search Serversábado, 19 de setembro de 2009

Page 56: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 57: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 58: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

sábado, 19 de setembro de 2009

Page 59: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Solrsábado, 19 de setembro de 2009

Page 60: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

caching

JSONXML

full-textsearch

replicação

Solr

administraçãoamigável

altaperformance

sábado, 19 de setembro de 2009

Page 61: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Solr

servidor web de indexação e pesquisa

possui o lucene em seu core

java 1.5++

sábado, 19 de setembro de 2009

Page 62: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 63: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

hands on!

sábado, 19 de setembro de 2009

Page 64: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Hibernate Search

sábado, 19 de setembro de 2009

Page 65: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

o melhor dedois mundos?

sábado, 19 de setembro de 2009

Page 66: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

talvez!

o melhor dedois mundos?

sábado, 19 de setembro de 2009

Page 67: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 68: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 69: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 70: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

hands on!

sábado, 19 de setembro de 2009

Page 71: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 72: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 73: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 74: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

http://www.esjug.org

sábado, 19 de setembro de 2009

Page 76: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

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

Page 77: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

dúvidas?sábado, 19 de setembro de 2009

Page 78: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

http://www.cejug.org

Obrigado!

sábado, 19 de setembro de 2009

Page 79: Turbinando sua aplicação com Lucene, Solr e Hibernate Search

Turbinando sua aplicação com Lucene

Solr & Hibernate Search

[email protected]

Paulo César M. Jeveaux - @jeveaux

sábado, 19 de setembro de 2009