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

Post on 28-May-2015

5.234 views 5 download

Transcript of 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

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

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

http://www.esjug.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.jeveaux@giran.com.br

Paulo César M. Jeveaux - @jeveaux

sábado, 19 de setembro de 2009