2. Agenda
●
Introdução;
●
Propriedades a Serem Exploradas;
●
Instalação;
●
Modelos de Documentos (Schema);
●
Adicionar, Buscar e Remover Documentos;
●
Utilizando Java com Solr (Solrj)
●
Utilizando PHP com Solr;
●
Scaling, Limitações e Alternativas.
3. O que é Solr?
●
●
Solr é uma plataforma de busca open source do
projeto Lucene;
Solr usa Lucene;
–
Lucene (http://lucene.apache.org/core/): Engenharia de
busca textual de alta performance escrito inteiramente em
Java.
●
Escrito em Java;
●
Interface HTTP – XML, JSON e outros formatos;
4. Quem está Usando?
●
●
●
●
●
●
Netflix – para otimizar seu sistema de busca;
AOL – para otimizar seus canais (Música, Esportes,
Carros etc.);
Instagram – utiliza para otimizar buscas geoespacial;
Casa Branca – para buscas com agrupamento e
destaque de termos de busca;
Sears – auto-suggest e navegação por agrupamentos;
Uma lista completa por ser encontrada em:
http://wiki.apache.org/solr/PublicServers
5. Porque utilizar Solr?
●
●
●
( - ) A criação de índices é um processo demorado;
( - ) Visibilidade das mudanças não é imediata
(NRT);
( - ) Geralmente requer re-indexação quando
modificado o modelo de dados;
6. Porque utilizar Solr?
●
( + ) Busca textual sofisticada com uma variedade de
parâmetros possíveis;
–
Sugestões;
–
Boosting;
–
Aproximação;
–
Dependente de Idioma.
●
( + ) Suporte a Faceting e Pivot;
●
( + ) Baseado nas tecnologias Web.
8. Introdução
●
Para os exemplos aqui demonstrados a seguinte lista
de recursos foi empregada:
–
Solr 4.4 - Indexing http://lucene.apache.org/solr/downloads.html
–
Eclipse – Java Dev - http://www.springsource.org/sts
–
Maven – Gerenciamento de Dependência
http://maven.apache.org/
9. Propriedades a Serem Exploradas
●
●
●
Interface HTTP – XML, JSON, PHP, Velocity, Ruby
e outros formatos são suportados;
Fulltext Search – busca textual;
Faceting – capacidade de executar agrupamento de
dados com contagem;
●
Pivot – visão de dados em cubo;
●
Expressões de busca grifadas;
12. Instalação
●
●
Diferentes guias de instalação para cada container
podem ser encontrados aqui:
http://wiki.apache.org/solr/SolrInstall
Para fins da apresentação utilizaremos a instalação
de exemplo distribuída com o próprio pacote Solr
para uma abordagem mais pragmática:
–
java -Dsolr.solr.home=/some/dir -jar start.jar
●
http://localhost:8983/solr/
14. Schema
●
●
Definição de um modelo para os documentos a
serem armazenados.
Schema.xml
–
Configuração de campos;
–
Configuração de tipos de dados;
–
Cópia de valores para campos tipo “catch all”;
15. Definição de um Schema
●
Propriedades básicas para declaração de campos:
–
name;
–
type (string, int, float, text_general ...);
–
indexed;
–
stored;
–
multiValued;
<field name="title" type="text_general"
indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_s" type="string"
indexed="true" stored="true" />
18. Busca de Documentos
●
Conceito de queries:
–
Baseado em Lucene Queries: field : value
–
Wildcard Search: * e ?
–
Fuzzy Search: “termo”~[similaridade entre 0 e 1]
–
Busca por Proximidade (posição): “termos”~[número de palavras]
–
Busca por Faixa: [, ], { e }
–
Boosting (peso): “termo”^[peso]
–
Requer e Proíbe: +field:value -field:value
–
Operadores Lógicos: AND &&, OR || e NOT !
–
Agrupamento: ( )
20. Novo Core
●
Quando criar um novo core?
●
Criando um Novo Core
–
–
●
cp solr/collection1 solr/{new_core_name}
edit solr/{new_core_name}/core.properties
solr/{new_core_name}/conf/schema.xml
31. Alternativas
●
ElasticSearch – similar a Solr;
–
Suporte a Documentos Estruturados;
–
Expressividade na Elaboração de Queries;
–
Não possui suporte a pivot;