SlideShare une entreprise Scribd logo
1  sur  43
Ricardo Almeida - Gonow

Buscas Poderosas com
         Solr
Quem sou?
Solr
• Engine de Busca
• Open Source (Apache)
• Baseado no Lucene
• Java Servlet container (Jetty)
• XML/HTTP e JSON APIs
• Faceted Search, caching, replicação.
• Web adm Interface
Lucene
• Full Search Text
• Search and Index (Busca Index ao invés
  de textos)
• Document (Unidade de Pesquisa e
  Index)
• Fields
• Queries
acts_as_taggable_on
•   script/plugin install
    git://github.com/mbleigh/acts-as-taggable-on.git

•   script/generate acts_as_taggable_on_migration

•   rake db:migrate
Solr - Atributos Dinâmicos



   DynamicAttribute.new :name => “hora_extra”,
                        :value => “A definir”
Solr - Atributos Dinâmicos

  • script/generate dynamic_attributes_migration
  • rake db:migrate
Solr - Geo-Distância
Solr - Geo-Localização

• script/generate local_migration
• rake db:migrate
Integrando Solr e plugin
 acts_as_solr com Rails
        (5 min)
Requerimentos:
Java Runtime Environment (JRE) 5.0

Passos:
1. Criar aplicação Rails
2. Instalar plugin acts_as_solr_reloaded

   script/plugin install git://github.com/ricardoalmeida/acts_as_solr_reloaded.git

3. Criar um modelo Palestrante
5. Executar a migração
6. Editar o modelo
7. rake solr:start
    http://0.0.0.0:8982/solr/admin

8. Usar o script/console
Acts_as_solr

• query = “Palestrante devinsampa”
• palestrante.find_by_solr(query, options)
• palestrante.search(query, options)
• evento.palestrantes.search(query)
Por que Solr?

• JVM
Por que Solr?

• JVM
• Performance /Cache / Replicação
Por que Solr?

• JVM
• Performance /Cache / Replicação
• Usa Lucene
Por que Solr?

• JVM
• Performance /Cache / Replicação
• Usa Lucene
• Boa integração com Rails
Performance de
         Indexação

• multithread / multiprocessos
• solrconfig.xml
Performance de Busca

• Index Otimizado
• Cache tuning (solrconfig.xml)
• Replicação de Busca
Por que Solr?
Acts_as_solr   Sphinx   Acts_as_ferret
Sai Sphinx entra Solr
Acts_as_solr X Sphinx
• Acts_as_solr trabalha com Sqlite3 e Sphinx
  exigia Mysql
• Acts_as_solr indexa documento no
  after_create
• Atributos Dinâmicos
• Faceting e Geo-localizacao
acts_as_taggable_on
•   script/plugin install
    git://github.com/mbleigh/acts-as-taggable-on.git

•   script/generate acts_as_taggable_on_migration

•   rake db:migrate
Solr - Faceting
   • Número de vezes que um
     termo aparece em um
     documento
Lucene - Relevance

             :tag => 0
           :nome => 2

 Palestrante.search “Ricardo”

 palestrante1.tag_list = “Ricardo”
 palestrante2.nome = “Ricardo”
Lucene - Query Parser
       Sintaxe


• title:ipod* AND price:[0 TO 100]
Testes


• rake solr:start RAILS_ENV=test
• Porta 8981
Por que reloaded?

• Plugin de Thiago Jackiw
  (http://www.railsfreaks.com/)
• acts_as_solr_reloaded de Diego Carrion
  (www.mouseoverstudio.com)
Por que reloaded?

• Solr 1.4
• Geo-Localização
• Relevance
• Highlighting
Novas Features
       (Meu fork)

• Migrate para DynamicAttribute e Local
• DynamicAttribute e Local internos
Lucene

• WhitespaceAnalyser
• StopAnalizers
• SynonymAnalyser
• I18n (Internacionalização)
http://www.workingwithrails.com/person/17033-ricardo-almeida
Agradecimentos
Referências
•   http://www.mouseoverstudio.com/blog/2009/08/27/sai-sphinx-entra-solr-
    actsassolrreloaded/

•   http://github.com/mbleigh/acts-as-taggable-on/tree/master

•   http://github.com/dcrec1/acts_as_solr_reloaded/tree

•   http://lucene.apache.org/solr/

•   http://wiki.apache.org/solr/

•   http://lucene.apache.org/solr/tutorial.html

•   http://github.com/jeveaux/aprendendo-solr/tree/master/solrServer/

•   http://solrjs.solrstuff.org/test/reuters/

•   http://www.lucenetutorial.com/
Duvidas?
http://manifestonaweb.wordpress.com
           @almeidaricardo
    http://visaoagil.wordpress.com
           www.infoq.com/br
Obrigado!

Contenu connexe

Similaire à Buscas Poderosas com Solr

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações djangoAndrews Medina
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeStefan Teixeira
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Daniel Sobral
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosBruno Ghisi
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 

Similaire à Buscas Poderosas com Solr (20)

Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
escalando aplicações django
escalando aplicações djangoescalando aplicações django
escalando aplicações django
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
 
Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker ComposeScrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
Scrum Gathering Rio 2016 - Conteinerizando Testes com Docker Compose
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
 
Cloud search avancado
Cloud search avancadoCloud search avancado
Cloud search avancado
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Presentation
PresentationPresentation
Presentation
 
Como um grande sistema REST funciona
Como um grande sistema REST funcionaComo um grande sistema REST funciona
Como um grande sistema REST funciona
 
Ferramentas open-source
Ferramentas open-sourceFerramentas open-source
Ferramentas open-source
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 

Plus de almeidaricardo

Plus de almeidaricardo (6)

Pipeline - Continuous Delivery
Pipeline - Continuous DeliveryPipeline - Continuous Delivery
Pipeline - Continuous Delivery
 
Excelencia puc
Excelencia pucExcelencia puc
Excelencia puc
 
Excelência - PUC
Excelência - PUCExcelência - PUC
Excelência - PUC
 
Event machine
Event machineEvent machine
Event machine
 
Canaries in the air #gurusorocaba
Canaries in the air #gurusorocabaCanaries in the air #gurusorocaba
Canaries in the air #gurusorocaba
 
Bdd e ci
Bdd e ciBdd e ci
Bdd e ci
 

Buscas Poderosas com Solr