Apache SOLR


SOLR: INDEXAÇÃO E BUSCAS DE ALTA PERFORMANCE USANDO SOFTWARE OPEN SOURCE

Solr é um projeto Open Source de um servidor de buscas de alta performance do projeto Apache Lucene.

É desenvolvido em Java e utiliza o Lucene Core como base para indexação e busca, além de fornecer APIs baseadas em REST o que lhe permite ser integrado a praticamente qualquer linguagem de programação.

PRINCIPAIS CARACTERÍSTICAS

  • Altamente escalável através da replicação de dados para outros servidores;
  • Fácil configuração através de configuração XML, sem necessidade de codificação;
  • Fácil extensão através de plugins;
  • Otimizado para alto volume de tráfego;
  • Interfaces padrão de integração: XML, JSON e HTTP;
  • Ferramenta de administração de fácil compreensão;
  • Estatísticas providas via JMX para monitoramento;

PRINCIPAIS RECURSOS

  • Busca Textual;
  • Busca Geoespacial;
  • Destaque de Termos;
  • Busca facetada;
  • Integração com Banco de Dados;
  • Manipulação de rich documents como PDFs ou DOCs;

Dentre os principais recursos, alguns serão detalhados posteriormente.

DESTAQUE DE TERMOS

Permite destacar o termo buscado dentro do documento encontrado, como pode ser visto na imagem a seguir, onde simulamos o funcionamento do recurso buscando pelo termo Solr no seu site oficial:

BUSCA FACETADAS

Permite agrupar os resultados de acordo com qualquer atributo publicado.

O exemplo mais comum que podemos citar sobre o uso desse recurso é a contagem e agrupamento de produtos por categorias, características ou fabricantes existente em sites de compras.

FUNCIONAMENTO BÁSICO

INSTALAÇÃO

O procedimento de instalação do Solr varia de acordo com o ambiente desejado, mas pode ser instalado como uma aplicação web convencional em um Servlet Container como o Tomcat.

O processo detalhado pode ser visto diretamente na Solr Wiki. Além disso é possível executar uma versão standalone apenas executando os scripts contidos no pacote obtido durante o download.

CONFIGURAÇÃO

O processo de configuração consiste em configurar o schema utilizado de modo a refletir o modelo de dados que se deseja indexar. Dessa maneira é necessário configurar e, se necessário, criar types e fields.

TYPES

Através da configuração de tipos é possível determinar o tipo de cada dado (intfloatchar, etc) e seus atributos (classe, precisão, etc).

Para tipos textuais é possível configurar analisadores e filtros de modo a customizar o comportamento de acordo com especificidades do idioma com, por exemplo, busca fonética.

Abaixo segue exemplo de configuração básica de tipos:

[xml]<types>

<fieldType name=”boolean” class=”solr.BoolField” sortMissingLast=”true”/>
<fieldType name=”float” class=”solr.TrieFloatField” precisionStep=”0″ omitNorms=”true” positionIncrementGap=”0″/>
<fieldType name=”long” class=”solr.TrieLongField” precisionStep=”0″ omitNorms=”true” positionIncrementGap=”0″/>
<fieldType name=”string” class=”solr.TextField” omitNorms=”true”/>
<fieldType name=”date” class=”solr.DateField” omitNorms=”true”/>

<fieldType name=”text” class=”solr.TextField” omitNorms=”false”>

<analyzer>
<tokenizer class=”solr.StandardTokenizerFactory”/>
<charFilter class=”solr.HTMLStripCharFilterFactory”/>
<filter class=”solr.LowerCaseFilterFactory”/>
<filter class=”solr.BrazilianStemFilterFactory”/>
</analyzer>
</fieldType>

</types>[/xml]

FIELDS

Através da configuração de campos é possível definir o modelo de dados utilizado. O schema é flexível o suficiente para configurar campos obrigatórios, opcionais, dinâmicos e calculados.

Abaixo segue exemplo de configuração básica de campos, mostrando campos obrigatórios, opcionais e multivalorados:

[xml]<fields>

<field name=”id” type=”long” indexed=”true” stored=”true” required=”true”/>
<field name=”nome” type=”text” indexed=”true” stored=”true” required=”true”/>
<field name=”descricao” type=”text” indexed=”true” stored=”true” required=”false” />
<field name=”preco” type=”float” indexed=”true” stored=”true” required=”true” />
<field name=”categoria” type=”long” indexed=”true” stored=”true” multiValued=”true” required=”false” />
<field name=”fabricante” type=”long” indexed=”true” stored=”true” multiValued=”false” required=”true” />

</fields>[/xml]

CAMPOS DINÂMICOS

Campos dinâmicos são campos criados quando não se precisa criar um conjunto de campos seguindo determinado padrão mas não é possível determinar esse padrão em tempo de configuração, dessa maneira cria-se um campo dinâmico e utiliza-se o caracter coringa (*);

Abaixo segue exemplo de configuração de um campo dinâmico que permite que sejam publicados campos chamados ordem_1, ordem_2, ordem_3 e assim por diante:

[xml]<fields>

<dynamicField name=”ordem_*” type=”long” indexed=”true” stored=”true”/>

</fields>[/xml]

CAMPOS CALCULADOS

Campos calculados são campos criados a partir de um processamento (cópia, cálculos matemáticos, etc) realizado nos valores de outros campos e campos opcionais.

Abaixo segue exemplo de configuração de um campo calculado (texto) criado a partir da cópia do conteúdo de dois outros campos (nome e descricao):

[xml]<fields>

<field name=”texto” type=”text” indexed=”true” stored=”false” multiValued=”true”/>

</fields>

<copyField source=”nome” dest=”texto”/>
<copyField source=”descricao” dest=”texto”/>[/xml]

ADMINISTRAÇÃO

O Solr fornece uma interface de administração Web, onde pode-se verificar a configuração realizada e realizar operações administrativas como alteração de nível de logging, testes de queries e análise de estatísticas.

Segue abaixo a tela inicial da ferramenta de administração:

PUBLICAÇÃO

A publicação de conteúdo deve seguir o modelo definido previamente na configuração do schema. É possível publicar conteúdo através de requisições HTTP ou usando a API fornecida diretamente para cada linguagem. Em Java é possível utilizar a API Solrj.

BUSCA

A busca é realizada usando a sintaxe já definida pela ferramenta semelhante à sintaxe utilizada pelo Lucene. Assim como a publicação, as buscas podem ser realizadas através de requisições HTTP ou das APIs fornecidas.

REFERÊNCIAS

Um comentário em “Apache SOLR

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s