Solr - Indexação e Busca com ferramenta Open Source
-
Upload
marcelo-rodrigues -
Category
Technology
-
view
4.287 -
download
0
description
Transcript of Solr - Indexação e Busca com ferramenta Open Source
Ifactory Solutions©2009
SolrMarcelo 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 laranjascomo ingrediente é preparada em menosDe 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