SlideShare a Scribd company logo
1 of 16
Ifactory Solutions©2009
Solr
Marcelo Rodrigues
Ifactory Solutions ©2009
Introdução
• Projeto Apache Lucene
• Indexação e busca de alta performance
• Spell checking, hit highlighting, etc.
Ifactory Solutions ©2009
Instalação & Configuração
• Instalação simples (acompanha Jetty ou Tomcat embedded)
• Arquivos de configuração principais (~/solr/conf)
– schema.xml: Onde são definidos os tipos de dados que serão usados,
existem muitos tipos disponíveis OOTB
• String - solr.StrField
• Int - solr.TrieIntField
• Boolean - solr.BoolField
* Class names starting with "solr" refer to java classes in the
org.apache.solr.analysis package.
– solrconfig.xml: Descreve como os usuários devem interagir com os dados
indexados. Parâmetros de indexação, atualização, queries, caching e etc.
Ifactory Solutions ©2009
Painel de administração
• LucidWorks/Start.sh
Ifactory Solutions ©2009
Conceitos
• O Solr basicamente recebe dados (indexing, updating) e fornece
dados de acordo com a consulta (querying).
• Unidade básica de informação = Documento
• 1.000 receitas, como encontrar a que você quer?
– Índices! Ex: Ingredientes...
– Objetivo -> Responder perguntas:
“Que refeição asiática que possui laranjas
como ingrediente é preparada em menos
De 30 minutos?”
* Este 'field' deve ser definido no schema.xml
– Field Type
• Ingrediente: String
• Tempo de preparo: date/time
Ifactory Solutions ©2009
Conceitos
• UniqueKey – Para documentos que possuem chaves primárias
• Default Search Field – Caso nenhum 'field' seja especificado na
query
• Default operator – Busca elementos que atendem exatamente os
critérias da query (AND) ou apenas parcialmente (OR)
• Copy Field - Cria uma cópia de um 'field' caso seja necessário
<schema>
<types>
<fields>
<uniqueKey>
<defaultSearchField>
<solrQueryParser defaultOperator>
<copyField>
</schema>
Ifactory Solutions ©2009
Conceitos
• Analyzer – Cria um stream de tokens, processa o texto de um tipo
de campo.
<fieldType name="nametext" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>
</fieldType> * O processo de análise ocorre na indexação e na consulta.
• Tokenizer – Dividem o stream em tokens (unidades léxicas)
• Filter – Processa tokens para formar novos streams de tokens.
Ex: 2 Tokens, “Rio”,”Janeiro” = “RJ”
<fieldType name="nametext" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory"/>
</analyzer>
</fieldType>
* Este último filter usa Word Stemming (achar palavras semelhantes. ex: “hugging” > “hugged”)
Ifactory Solutions ©2009
Indexando
• Solr pode indexar:
– XML
– CSV (dados separados por vírgula)
– Informações recuperadas de Bancos de Dados
– Arquivos comuns como: MS Word e PDF
• Como indexar:
– Framework Solr Cell
– Enviar arquivos XML em requisições HTTP
– APIs Java (ex: SolrJ)
* Também é possível indexar arquivos com a ferramenta curl (Custom URL) do
Solr e através do comando 'wget' (unix).
Ifactory Solutions ©2009
Na prática - SolrJ
• Indexando 2 documentos
Ifactory Solutions ©2009
Na prática - SolrJ
• Dependências
Ifactory Solutions ©2009
Na prática - SolrJ
• Criando query para recuperar documento
Ifactory Solutions ©2009
Na prática - SolrJ
• Consulta do painel de Admin
Ifactory Solutions ©2009
Na prática - SolrJ
• Resultado em XML
Ifactory Solutions ©2009
Na prática - SolrJ
• Procurando Queijos cujo preço está acima de $ 20
•* Código comentado mostra como remover objetos do banco de dados de busca
Ifactory Solutions ©2009
Logging - SolrJ
Níveis de prioridade: [FINEST, FINE, CONFIG, INFO, WARNING, SEVERE]
INFO: [] webapp=/solr path=/select params={q=name:wheel&version=1&wt=javabin} hits=1 status=0 QTime=2
FINE: solrconfig.xml admin/defaultQuery/text()=solr
* Repare que o LOG LEVEL selecionado é replicado para os outros pacotes de acordo com a hierarquia.
Ifactory Solutions ©2009
Na prática - SolrJ
• Resultado em XML

More Related Content

Viewers also liked (6)

Link analysis - Análise de Links
Link analysis - Análise de LinksLink analysis - Análise de Links
Link analysis - Análise de Links
 
Reforma da Lei de Direitos Autorais
Reforma da Lei de Direitos AutoraisReforma da Lei de Direitos Autorais
Reforma da Lei de Direitos Autorais
 
Pesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoPesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundo
 
Buscas Poderosas Com Solr
Buscas Poderosas Com SolrBuscas Poderosas Com Solr
Buscas Poderosas Com Solr
 
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
 
Extração de informações de texto e cálculo de similaridade usando Apache Lucene
Extração de informações de texto e cálculo de similaridade usando Apache LuceneExtração de informações de texto e cálculo de similaridade usando Apache Lucene
Extração de informações de texto e cálculo de similaridade usando Apache Lucene
 

Similar to Solr - Indexação e Busca com ferramenta Open Source

55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
Stephen Chin
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
QuitriaSilva550
 

Similar to Solr - Indexação e Busca com ferramenta Open Source (20)

Presentation
PresentationPresentation
Presentation
 
Ferramentas open-source
Ferramentas open-sourceFerramentas open-source
Ferramentas open-source
 
JWT - Json Web Token
JWT - Json Web TokenJWT - Json Web Token
JWT - Json Web Token
 
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
 
Tag Libraries e JSTL
Tag Libraries e JSTLTag Libraries e JSTL
Tag Libraries e JSTL
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_soxAuditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
 
VIII TechTalk - Spring 3
VIII TechTalk - Spring 3VIII TechTalk - Spring 3
VIII TechTalk - Spring 3
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Broker
 
Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
Orm android
Orm androidOrm android
Orm android
 
Java20141218 19
Java20141218 19Java20141218 19
Java20141218 19
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
SisBib - Library Control System - January 2005
SisBib - Library Control System - January 2005SisBib - Library Control System - January 2005
SisBib - Library Control System - January 2005
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 

Solr - Indexação e Busca com ferramenta Open Source

  • 2. Ifactory Solutions ©2009 Introdução • Projeto Apache Lucene • Indexação e busca de alta performance • Spell checking, hit highlighting, etc.
  • 3. Ifactory Solutions ©2009 Instalação & Configuração • Instalação simples (acompanha Jetty ou Tomcat embedded) • Arquivos de configuração principais (~/solr/conf) – schema.xml: Onde são definidos os tipos de dados que serão usados, existem muitos tipos disponíveis OOTB • String - solr.StrField • Int - solr.TrieIntField • Boolean - solr.BoolField * Class names starting with "solr" refer to java classes in the org.apache.solr.analysis package. – solrconfig.xml: Descreve como os usuários devem interagir com os dados indexados. Parâmetros de indexação, atualização, queries, caching e etc.
  • 4. Ifactory Solutions ©2009 Painel de administração • LucidWorks/Start.sh
  • 5. Ifactory Solutions ©2009 Conceitos • O Solr basicamente recebe dados (indexing, updating) e fornece dados de acordo com a consulta (querying). • Unidade básica de informação = Documento • 1.000 receitas, como encontrar a que você quer? – Índices! Ex: Ingredientes... – Objetivo -> Responder perguntas: “Que refeição asiática que possui laranjas como ingrediente é preparada em menos De 30 minutos?” * Este 'field' deve ser definido no schema.xml – Field Type • Ingrediente: String • Tempo de preparo: date/time
  • 6. Ifactory Solutions ©2009 Conceitos • UniqueKey – Para documentos que possuem chaves primárias • Default Search Field – Caso nenhum 'field' seja especificado na query • Default operator – Busca elementos que atendem exatamente os critérias da query (AND) ou apenas parcialmente (OR) • Copy Field - Cria uma cópia de um 'field' caso seja necessário <schema> <types> <fields> <uniqueKey> <defaultSearchField> <solrQueryParser defaultOperator> <copyField> </schema>
  • 7. Ifactory Solutions ©2009 Conceitos • Analyzer – Cria um stream de tokens, processa o texto de um tipo de campo. <fieldType name="nametext" class="solr.TextField"> <analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/> </fieldType> * O processo de análise ocorre na indexação e na consulta. • Tokenizer – Dividem o stream em tokens (unidades léxicas) • Filter – Processa tokens para formar novos streams de tokens. Ex: 2 Tokens, “Rio”,”Janeiro” = “RJ” <fieldType name="nametext" class="solr.TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StandardFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPorterFilterFactory"/> </analyzer> </fieldType> * Este último filter usa Word Stemming (achar palavras semelhantes. ex: “hugging” > “hugged”)
  • 8. Ifactory Solutions ©2009 Indexando • Solr pode indexar: – XML – CSV (dados separados por vírgula) – Informações recuperadas de Bancos de Dados – Arquivos comuns como: MS Word e PDF • Como indexar: – Framework Solr Cell – Enviar arquivos XML em requisições HTTP – APIs Java (ex: SolrJ) * Também é possível indexar arquivos com a ferramenta curl (Custom URL) do Solr e através do comando 'wget' (unix).
  • 9. Ifactory Solutions ©2009 Na prática - SolrJ • Indexando 2 documentos
  • 10. Ifactory Solutions ©2009 Na prática - SolrJ • Dependências
  • 11. Ifactory Solutions ©2009 Na prática - SolrJ • Criando query para recuperar documento
  • 12. Ifactory Solutions ©2009 Na prática - SolrJ • Consulta do painel de Admin
  • 13. Ifactory Solutions ©2009 Na prática - SolrJ • Resultado em XML
  • 14. Ifactory Solutions ©2009 Na prática - SolrJ • Procurando Queijos cujo preço está acima de $ 20 •* Código comentado mostra como remover objetos do banco de dados de busca
  • 15. Ifactory Solutions ©2009 Logging - SolrJ Níveis de prioridade: [FINEST, FINE, CONFIG, INFO, WARNING, SEVERE] INFO: [] webapp=/solr path=/select params={q=name:wheel&version=1&wt=javabin} hits=1 status=0 QTime=2 FINE: solrconfig.xml admin/defaultQuery/text()=solr * Repare que o LOG LEVEL selecionado é replicado para os outros pacotes de acordo com a hierarquia.
  • 16. Ifactory Solutions ©2009 Na prática - SolrJ • Resultado em XML

Editor's Notes

  1. Field Analysis: Semelhante as &amp;apos;stop words&amp;apos; do Autonomy, retira preposições e palavras comuns que não trazem relevância ao conteúdo &amp;apos;digerido&amp;apos;.