Ir para o conteúdo principal

Solr - Estudo de ferramenta de busca


Data de elaboração  14/06/22
Responsável pelo estudo
  1. Rafael Passos dos Santos (Assessor)
  2. Lucas de Souza e Sousa (Assessor)
Equipe do estudo
  1. Gustavo Felix Gomes (Assessor)
  2. Rafael Passos dos Santos (Assessor)
  3. André Honório de Andrade Silva (Tecnico)
  4. Emanuel Rufino Alcantara de Lima (Analista)
  5. Alef Carvalho (Analista)
  6. Euriane Nogueira (Product Owner)
Alvo Portal do Cidadão
Origem

Implementação: Solr - Estudo de ferramenta de busca

Objetivo

Avaliar a possibilidade de utilização da ferramenta Apache Solr para o projeto Alpha conforme a User Story: Eu como vingadores, preciso realizar um estudo sobre a ferramenta Solr ou uma ferramenta melhor" presente na Sprint número 99 do time Vingadores.

Documentação correlata

https://briancaos.wordpress.com/2021/02/05/c-net-core-solr-search-read-from-a-solr-index/

https://cwiki.apache.org/confluence/display/solr/solrperformanceproblems

https://docs.cloudera.com/runtime/7.2.8/release-notes/topics/rt-pubc-known-issues-solr.html

https://stacksecrets.com/dot-net-core/integrate-solr-instance-with-net-core#Some_Benefits_Of_Using_Solr

https://www.xtivia.com/blog/apache-solr-introduction-and-advantages/

https://solr.apache.org/

Observações O presente estudo pretende também pretende levantar as Historias dos cars para a Sprint 

1. Objetivo

Avaliar a possibilidade de utilização da ferramenta Apache Solr para o projeto Alpha conforme a User Story: Eu como vingadores, preciso realizar um estudo sobre a ferramenta Solr ou uma ferramenta melhor" presente na Sprint número 99 do time Vingadores.

1.1 JUSTIFICATIVA

Tendo em vista que o Apache Solr é uma poderosa ferramenta de indexação e busca de dados a SETIC detém o interesse em fazer uso de tal tecnologia visando a redução de custos a fim de colaborar na economia do Governo do Estado e incentivar a cultura OpenSource. Deste modo, a demanda para estudo de possíveis casos de aplicação da tecnologia foi realizada para avaliar os impactos e benefícios na utilização da mesma.

1.2 RESULTADOS ESPERADOS

Levantar casos de uso adequados para as implementação das funcionalidades de pesquisa e indexação do Apache Solr no projeto Alpha, possibilitando uma avaliação melhor dos benefícios na utilização da ferramenta.

2. Introdução

Apache Solr (pronunciada como "solar") é uma popular ferramenta de busca gratuíta, de código aberto e altamente eficiente. Esta foi escrita em Java, e baseada no projeto Apache Lucene.

O Solr, no entanto, é mais do que um mecanismo de busca. Ele também é frequentemente usado como um banco de dados NoSQL baseado em documentos com suporte transacional que pode ser usado para fins de armazenamento e até mesmo um armazenamento baseado em chave-valor.

A ferramenta possui APIs com suporte aos protocolos XML/HTTP e JSON além de bibliotecas de clientes para muitas linguagens de programação como Java, Phyton, Ruby, C#, PHP.

3. Desenvolvimento - Solr - Estudo de ferramenta de busca

3.1 FUNCIONAMENTO

Seu funcionamento básico consiste na indexação de documentos via JSON, XML, CSV ou binários pelo HTTP. Ou seja, ao realizar consultas via HTTP GET, ela retornará resultados em JSON, XML, CSV ou resultados binários.

3.2 BENEFÍCIOS NA UTILIZAÇÃO

O Apache Solr conta com diversos benefícios em sua utilização, dentre eles estão:

  • Recursos avançados de pesquisa de texto completo (full-text search);
  • Suporte a pesquisas de alto volume;
  • Suporte a consultas baseadas em REST API;
  • Interface de administração avançada;
  • Fácil monitoramento
  • Altamente escalável;
  • Tolerante a falhas;
  • Cache altamente configurável;
  • Possibilidade de extensão das funcionalidades via plug-ins;

3.3 IMPLEMENTAÇÃO E HISTÓRIAS DE USUÁRIO

Para a devida implementação do Solr, é necessário levar em consideração as mudanças na arquitetura vigente.

Em uma típica aplicação cliente-server, a API recebe requisições que são convertidas para operações de CRUD pelo servidor que irá operar na base de dados:

1.png

Porém, ao implementar o Solr os dados passam a ser duplicados, então estes residirão na base de dados e no Solr, logo a arquitetura será mudada para:

2.png

Nem todos os dados serão duplicados, apenas os dados necessários para a consulta das aplicações. Sendo possível escolher realizar consultas na base de dados ou então no Solr.

Para a implementação do Solr no sistema Alpha, foram levantadas as seguintes histórias de usuário.

HISTÓRIA

PONTUAÇÃO

Configurar instância do Solr no OpenShift

13

Instalar e configurar no projeto Alpha Solicitações

34

Instalar e configurar no projeto Alpha Serviços

34

Integrar principais consultas do Alpha Solicitações com o Solr

13

Integrar principais consultas do Alpha Serviços com o Solr

13

TOTAL

94

3.4 POSSÍVEIS PROBLEMAS NA UTILIZAÇÃO

Existem algumas preocupações com possíveis problemas na utilização do Solr, algumas delas são:

  • Problemas de performance;
  • Custo de tempo/processamento até se tornar viável;
  • Problemas conhecidos com modificações na indexação;
  • No caso do Alpha, talvez não seja o mais apropriado, já que o mesmo não realiza tantas pesquisas;
    • O que faria bastante sentido em sistemas como o Sei ou Gov.doc;

3.5 PRINCIPAIS ALTERNATIVAS

Redis - Free/OpenSource

Elasticsearch – Freemium/Proprietário

Melisearch – Free/OpenSource

Apache Spark - Free/OpenSource

3.6 VALOR AGREGADO

A utilização de ferramentas como o Solr agrega muito valor aos softwares que os integram devido a sua praticidade e abordagem para resolução de grandes problemas empresariais, no entanto deve-se analisar muito bem antes de se implementar este tipo de solução aos produtos.

4. Conclusão

A ferramenta de busca Apache Solr se mostra satisfatoriamente rápida para busca/análise de texto devido à sua estrutura de indexação. Sua documentação é abrangente e sua estrutura consistente. Grandes companhias AT&T, Amazon e Netflix a utilizam para diversas soluções de larga escala, porém - até onde foi analisado, não haveria muito ganho na utilização desta ferramenta no Alpha.

5. Referências

https://briancaos.wordpress.com/2021/02/05/c-net-core-solr-search-read-from-a-solr-index/

https://cwiki.apache.org/confluence/display/solr/solrperformanceproblems

https://docs.cloudera.com/runtime/7.2.8/release-notes/topics/rt-pubc-known-issues-solr.html

https://stacksecrets.com/dot-net-core/integrate-solr-instance-with-net-core#Some_Benefits_Of_Using_Solr

https://www.xtivia.com/blog/apache-solr-introduction-and-advantages/

https://solr.apache.org/