Posted by Brunno Attorre On March - 3 - 2014 2 Comments

Seguindo nossa proposta de introdução ao Apache Solr, iniciaremos agora com um tutorial para a integração do Solr dentro da sua aplicação Java.

Como pré-requisitos, é necessário que todos os passos da parte 1 de nosso artigo (link aqui) tenham sido feitos e que se possua uma IDE de desenvolvimento (Eclipse de preferência). Uma vez o Solr tenha sido instalado, podemos começar com a construção de nossa integração com o SolrJ.

A API SolrJ foi criada pela Apache com o propósito de fornecer uma biblioteca que nos permita a comunicação com o servidor de buscas do Solr sem muito trabalho. Iremos demonstrar como criar uma consulta através dessa ferramenta, em nosso servidor iniciado anteriormente.

Adicionando as dependências do SolrJ

Podemos começar nosso exemplo criando um projeto Java normal e adicionando as dependências do SolrJ dentro desse projeto. Nesse post iremos realizar a configuração dessas dependências através da ferramenta Maven, um gerenciador de dependências da Apache que permite o download e gerenciamento das bibliotecas automaticamente. Para saber mais sobre o Maven ou como usá-lo dentro do eclipse, um tutorial pode ser visto nesse link, porém a grande maioria das versões do Eclipse mais recentes possuem o Maven já integrado.

Iniciamos nosso tutorial criando nosso projeto. O mesmo pode ser feito escolhendo a opção New-> New Project->Maven Project

Na próxima tela, escolheremos a criação de um projeto simples, sem nenhum archetype.

Na última tela de configuração do projeto, daremos o nome para nosso projeto. Abaixo segue um screen de exemplo:

Uma vez o projeto esteja criado, vamos editar o arquivo pom.xml. Esse arquivo contém todas as informações necessárias para o Maven gerenciar seu projeto e é nele que precisamos incluir as linhas referentes a biblioteca do SolrJ. Para isso, basta adicionar as linhas abaixo dentro do arquivo pom.

Iniciando uma conexão com o Solr.

Uma vez as dependências estejam configuradas, vamos criar nossa classe de conexão e consulta com o servidor do Solr. Primeiramente, precisamos nos certificar que o servidor do Solr esteja rodando e, após isso, criar nossa classe de conexão. Abaixo segue um exemplo da classe de conexão com o Solr, que também realiza algumas consultas:

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;

public class SolrJExample {
    public void consulta() throws SolrServerException{
        SolrServer server = new HttpSolrServer("http://localhost:8983/solr/");
        SolrQuery query = new SolrQuery();
        query.setQuery( "name:samsung" );
        QueryResponse queryResponse = server.query(query);
        for(SolrDocument document: queryResponse.getResults()){
            System.out.println(document);
        }
        
    }
    public static void main(String[] args) throws SolrServerException {
        new SolrJExample().consulta();
    }
}

Nossa classe, como se pode observar, é bem simples. Nela criamos uma conexão com a URL de nosso Solr Server (na máquina local) e criamos uma query com a string "name:samsung", ou seja, uma query para trazer todos as entradas que possuam "samsung" no campo "name". Ao final, iteramos pela lista de documentos de retorno (sendo esses implementações da interface Map do Java).

Adicionando documentos no Solr

Para finalizar essa parte de nosso conteúdo sobre o SolrJ, iremos demonstrar a criação de uma classe responsável por adicionar conteúdo no Solr.

 

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;

public class SolrJExample2 {

    public void post() throws Exception{
        SolrServer server = new HttpSolrServer("http://localhost:8983/solr/");
        SolrInputDocument doc1 = new SolrInputDocument();
        doc1.addField( "id", "id1" );
        doc1.addField( "name", "doc1");
        doc1.addField( "price", 10 );
        server.add(doc1);
    }
    public static void main(String[] args) throws Exception {
        new SolrJExample2().post();
    }
}

Nessa classe, simplesmente adicionamos um documento com o valor id = "id1", name="doc1" e preço ="10" a nossa coleção de documentos, finalizando nossa classe de exemplo e nossa segunda parte do artigo.

 

About the author

Brunno Attorre

Entusiasta de novas tecnologias, está sempre a procura de inovações que podem mudar o mundo. Desenvolvedor Java e C++, com certificados OCJP, OCWCD e OCEEJBD, seus interesses envolvem Inteligência Artificial, Big Data, Data Analysis, BI, sistemas distribuídos e sistemas de alta performance. Google+

Be Sociable, Share!

2 Responses so far.

  1. Henio Junior says:

    Novamente, excelente artigo Brunno!

  2. Henio Junior says:

    Brunno, no método post, para confirmar a inclusão do novo documento, faltou o server.commit() após o server.add(doc1). Abraços.


Protected by WP Anti Spam