Parte 1: Configurando um único nó
Hoje, armazenar eletronicamente seus documentos ou dados em um dispositivo de armazenamento é rápido e fácil, e também é comparativamente barato. Em uso está uma referência de nome de arquivo que se destina a descrever do que trata o documento. Como alternativa, os dados são mantidos em um sistema de gerenciamento de banco de dados (DBMS) como PostgreSQL, MariaDB ou MongoDB para citar apenas algumas opções. Vários meios de armazenamento estão localmente ou remotamente conectados ao computador, como pen drive, disco rígido interno ou externo, Network Attached Storage (NAS), Cloud Storage ou GPU / Flash-based, como em um Nvidia V100 [10].
Em contraste, o processo inverso, encontrar os documentos certos em uma coleção de documentos, é bastante complexo. Em geral, requer a detecção do formato do arquivo sem falhas, a indexação do documento e a extração dos conceitos-chave (classificação do documento). É aqui que entra o framework Apache Solr. Ele oferece uma interface prática para realizar as etapas mencionadas - construir um índice de documentos, aceitar consultas de pesquisa, fazer a pesquisa real e retornar um resultado de pesquisa. Apache Solr, portanto, forma o núcleo para pesquisas eficazes em um banco de dados ou silo de documentos.
Neste artigo, você aprenderá como o Apache Solr funciona, como configurar um único nó, indexar documentos, fazer uma pesquisa e recuperar o resultado.
Os artigos de acompanhamento se baseiam neste e, neles, discutimos outros casos de uso mais específicos, como integração de um DBMS PostgreSQL como fonte de dados ou balanceamento de carga em vários nós.
Sobre o projeto Apache Solr
Apache Solr é uma estrutura de mecanismo de pesquisa baseada no poderoso servidor de índice de pesquisa Lucene [2]. Escrito em Java, é mantido sob a égide da Apache Software Foundation (ASF) [6]. Ele está disponível gratuitamente sob a licença Apache 2.
O tópico “Encontrar documentos e dados novamente” desempenha um papel muito importante no mundo do software, e muitos desenvolvedores lidam com ele intensamente. O site Awesomeopensource [4] lista mais de 150 projetos de mecanismo de busca de código aberto. No início de 2021, ElasticSearch [8] e Apache Solr / Lucene são os dois principais cães quando se trata de pesquisar conjuntos de dados maiores. Desenvolver seu mecanismo de pesquisa requer muito conhecimento, Frank faz isso com a biblioteca AdvaS Advanced Search [3] baseada em Python desde 2002.
Configurando o Apache Solr:
A instalação e operação do Apache Solr não são complicadas, é simplesmente uma série de etapas a serem realizadas por você. Reserve cerca de 1 hora para o resultado da primeira consulta de dados. Além disso, o Apache Solr não é apenas um projeto de hobby, mas também é usado em um ambiente profissional. Portanto, o ambiente de sistema operacional escolhido é projetado para uso de longo prazo.
Como ambiente base para este artigo, usamos o Debian GNU / Linux 11, que é o próximo lançamento do Debian (no início de 2021) e deverá estar disponível em meados de 2021. Para este tutorial, esperamos que você já o tenha instalado, seja como o sistema nativo, em uma máquina virtual como o VirtualBox, ou um contêiner AWS.
Além dos componentes básicos, você precisa que os seguintes pacotes de software sejam instalados no sistema:
- Ondulação
- Java-padrão
- Libcommons-cli-java
- Libxerces2-java
- Libtika-java (uma biblioteca do projeto Apache Tika [11])
Estes pacotes são componentes padrão do Debian GNU / Linux. Se ainda não estiver instalado, você pode pós-instalá-los de uma vez como um usuário com direitos administrativos, por exemplo, root ou via sudo, mostrado a seguir:
# apt-get install curl default-java libcommons-cli-java libxerces2-java libtika-javaTendo preparado o ambiente, o 2º passo é a instalação do Apache Solr. A partir de agora, o Apache Solr não está disponível como um pacote Debian regular. Portanto, é necessário recuperar o Apache Solr 8.8 da seção de download do site do projeto [9] primeiro. Use o comando wget abaixo para armazená-lo no diretório / tmp do seu sistema:
$ wget -O / tmp https: // downloads.apache.org / lucene / solr / 8.8.0 / solr-8.8.0.tgzA opção -O encurta -output-document e faz com que o wget armazene o tar recuperado.arquivo gz no diretório fornecido. O arquivo tem um tamanho de aproximadamente 190M. Em seguida, descompacte o arquivo no diretório / opt usando tar. Como resultado, você encontrará dois subdiretórios - / opt / solr e / opt / solr-8.8.0, enquanto / opt / solr é configurado como um link simbólico para o último. O Apache Solr vem com um script de configuração que você executa em seguida:
# / opt / solr-8.8.0 / bin / install_solr_service.shIsso resulta na criação do usuário do Linux solr executado no serviço Solr mais seu diretório inicial em / var / solr estabelece o serviço Solr, adicionado com seus nós correspondentes e inicia o serviço Solr na porta 8983. Estes são os valores padrão. Se não estiver satisfeito com eles, você pode modificá-los durante a instalação ou até mais tarde, pois o script de instalação aceita as opções correspondentes para ajustes de configuração. Recomendamos que você dê uma olhada na documentação do Apache Solr sobre esses parâmetros.
O software Solr está organizado nos seguintes diretórios:
- bin
contém os binários e arquivos do Solr para executar o Solr como um serviço - contrib
bibliotecas Solr externas, como manipulador de importação de dados e as bibliotecas Lucene - dist
bibliotecas Solr internas - docs
link para a documentação do Solr disponível online - exemplo
conjuntos de dados de exemplo ou vários casos de uso / cenários - licenças
licenças de software para os vários componentes do Solr - servidor
arquivos de configuração do servidor, como servidor / etc para serviços e portas
Em mais detalhes, você pode ler sobre esses diretórios na documentação do Apache Solr [12].
Gerenciando Apache Solr:
Apache Solr é executado como um serviço em segundo plano. Você pode iniciá-lo de duas maneiras, usando systemctl (primeira linha) como um usuário com permissões administrativas ou diretamente do diretório Solr (segunda linha). Listamos os dois comandos do terminal abaixo:
# systemctl start solr$ solr / bin / solr start
Parar o Apache Solr é feito de forma semelhante:
# systemctl stop solr$ solr / bin / solr stop
A mesma maneira acontece ao reiniciar o serviço Apache Solr:
# systemctl restart solr$ solr / bin / solr restart
Além disso, o status do processo Apache Solr pode ser exibido da seguinte forma:
# systemctl status solrstatus $ solr / bin / solr
A saída lista o arquivo de serviço que foi iniciado, o carimbo de data / hora e as mensagens de log correspondentes. A figura abaixo mostra que o serviço Apache Solr foi iniciado na porta 8983 com o processo 632. O processo está sendo executado com sucesso por 38 minutos.
Para ver se o processo Apache Solr está ativo, você também pode fazer uma verificação cruzada usando o comando ps em combinação com grep. Isso limita a saída do ps para todos os processos do Apache Solr que estão atualmente ativos.
# ps ax | grep --color solrA figura abaixo demonstra isso para um único processo. Você vê a chamada de Java que é acompanhada por uma lista de parâmetros, por exemplo, portas de uso de memória (512M) para escutar em 8983 para consultas, 7983 para solicitações de parada e tipo de conexão (http).
Adicionando usuários:
Os processos do Apache Solr são executados com um usuário específico chamado solr. Este usuário é útil no gerenciamento de processos Solr, upload de dados e envio de solicitações. Após a configuração, o usuário solr não tem uma senha e espera-se que tenha uma para fazer login para prosseguir. Defina uma senha para o usuário solr, como usuário root, é mostrado da seguinte forma:
# passwd solrAdministração Solr:
O gerenciamento do Apache Solr é feito usando o painel Solr. Ele pode ser acessado via navegador da web em http: // localhost: 8983 / solr. A figura abaixo mostra a visão principal.
À esquerda, você vê o menu principal que o leva às subseções para registro, administração dos núcleos do Solr, a configuração do Java e as informações de status. Escolha o núcleo desejado usando a caixa de seleção abaixo do menu. No lado direito do menu, as informações correspondentes são exibidas. A entrada do menu Dashboard mostra mais detalhes sobre o processo Apache Solr, bem como a carga atual e o uso de memória.
Saiba que o conteúdo do painel muda dependendo do número de núcleos Solr e dos documentos que foram indexados. As mudanças afetam os itens do menu e as informações correspondentes que são visíveis à direita.
Compreender como funcionam os motores de pesquisa:
Simplificando, os mecanismos de pesquisa analisam documentos, categorizam-nos e permitem que você faça uma pesquisa com base em sua categorização. Basicamente, o processo consiste em três estágios, que são denominados como rastreamento, indexação e classificação [13].
Rastejando é o primeiro estágio e descreve um processo pelo qual o conteúdo novo e atualizado é coletado. O mecanismo de pesquisa usa robôs que também são conhecidos como spiders ou crawlers, daí o termo rastreamento para percorrer os documentos disponíveis.
A segunda fase é chamada indexação. O conteúdo coletado anteriormente torna-se pesquisável transformando os documentos originais em um formato que o mecanismo de pesquisa entende. Palavras-chave e conceitos são extraídos e armazenados em bancos de dados (massivos).
A terceira fase é chamada classificação e descreve o processo de classificação dos resultados da pesquisa de acordo com sua relevância com uma consulta de pesquisa. É comum exibir os resultados em ordem decrescente para que o resultado com maior relevância para a consulta do pesquisador venha primeiro.
Apache Solr funciona de forma semelhante ao processo de três estágios descrito anteriormente. Como o popular mecanismo de busca Google, o Apache Solr usa uma sequência de coleta, armazenamento e indexação de documentos de diferentes fontes e os torna disponíveis / pesquisáveis quase em tempo real.
Apache Solr usa diferentes maneiras de indexar documentos, incluindo o seguinte [14]:
- Usando um manipulador de solicitação de índice ao enviar os documentos diretamente para o Solr. Esses documentos devem estar nos formatos JSON, XML / XSLT ou CSV.
- Usando o manipulador de solicitação de extração (célula Solr). Os documentos devem estar nos formatos PDF ou Office, que são suportados pelo Apache Tika.
- Usando o manipulador de importação de dados, que transporta dados de um banco de dados e os cataloga usando nomes de coluna. O manipulador de importação de dados busca dados de e-mails, feeds RSS, dados XML, bancos de dados e arquivos de texto simples como fontes.
Um manipulador de consulta é usado no Apache Solr quando uma solicitação de pesquisa é enviada. O manipulador de consulta analisa a consulta fornecida com base no mesmo conceito do manipulador de índice para corresponder à consulta e aos documentos indexados anteriormente. As correspondências são classificadas de acordo com sua adequação ou relevância. Um breve exemplo de consulta é demonstrado abaixo.
Carregando documentos:
Para simplificar, usamos um conjunto de dados de amostra para o exemplo a seguir que já é fornecido pelo Apache Solr. O upload de documentos é feito como o solr do usuário. A etapa 1 é a criação de um núcleo com o nome techproducts (para uma série de itens de tecnologia).
$ solr / bin / solr create -c techproducts
Tudo está bem se você vir a mensagem “Created new core 'techproducts'”. A etapa 2 é adicionar dados (dados XML de exampledocs) aos produtos de tecnologia centrais criados anteriormente. Em uso está a ferramenta post que é parametrizada por -c (nome do núcleo) e os documentos a serem carregados.
$ solr / bin / post -c techproducts solr / example / exampledocs / *.xmlIsso resultará na saída mostrada abaixo e conterá a chamada inteira mais os 14 documentos que foram indexados.
Além disso, o painel mostra as mudanças. Uma nova entrada chamada techproducts é visível no menu suspenso do lado esquerdo, e o número de documentos correspondentes alterado no lado direito. Infelizmente, uma visão detalhada dos conjuntos de dados brutos não é possível.
Caso o núcleo / coleção precise ser removido, use o seguinte comando:
$ solr / bin / solr delete -c techproductsConsultando dados:
Apache Solr oferece duas interfaces para consultar dados: por meio do painel baseado na web e linha de comando. Explicaremos os dois métodos abaixo.
O envio de consultas por meio do painel Solr é feito da seguinte maneira:
- Escolha os produtos de tecnologia do nó no menu suspenso.
- Escolha a entrada Consulta no menu abaixo do menu suspenso.
Os campos de entrada aparecem no lado direito para formular a consulta como manipulador de solicitação (qt), consulta (q) e a ordem de classificação (classificação). - Escolha o campo de entrada Consulta e altere o conteúdo da entrada de “*: *” para “manu: Belkin”. Isso limita a pesquisa de "todos os campos com todas as entradas" a "conjuntos de dados que têm o nome Belkin no campo manual". Neste caso, o nome manu abrevia fabricante no conjunto de dados de exemplo.
- Em seguida, pressione o botão com Executar Consulta. O resultado é uma solicitação HTTP impressa na parte superior e um resultado da consulta de pesquisa no formato de dados JSON abaixo.
A linha de comando aceita a mesma consulta do Painel. A diferença é que você deve saber o nome dos campos da consulta. Para enviar a mesma consulta acima, você deve executar o seguinte comando em um terminal:
$ curlhttp: // localhost: 8983 / solr / techproducts / query?q = ”manu”: ”Belkin
A saída está no formato JSON, conforme mostrado abaixo. O resultado consiste em um cabeçalho de resposta e a resposta real. A resposta consiste em dois conjuntos de dados.
Empacotando:
Parabéns! Você alcançou o primeiro estágio com sucesso. A infraestrutura básica está configurada e você aprendeu como fazer upload e consultar documentos.
A próxima etapa cobrirá como refinar a consulta, formular consultas mais complexas e compreender os diferentes formulários da web fornecidos pela página de consulta do Apache Solr. Além disso, discutiremos como pós-processar o resultado da pesquisa usando diferentes formatos de saída, como XML, CSV e JSON.
Sobre os autores:
Jacqui Kabeta é ambientalista, ávida pesquisadora, treinadora e mentora. Em vários países africanos, ela trabalhou na indústria de TI e ambientes de ONGs.
Frank Hofmann é desenvolvedor, instrutor e autor de TI e prefere trabalhar em Berlim, Genebra e Cidade do Cabo. Co-autor do Livro de gerenciamento de pacotes Debian disponível em dpmb.org
- [1] Apache Solr, https: // lucene.apache.org / solr /
- [2] Biblioteca de pesquisa Lucene, https: // lucene.apache.org /
- [3] Pesquisa avançada AdvaS, https: // pypi.org / project / AdvaS-Advanced-Search /
- [4] Os 165 principais projetos de código aberto para mecanismos de pesquisa, https: // awesomeopensource.com / projetos / motor de busca
- [5] ElasticSearch, https: // www.elástico.co / de / elasticsearch /
- [6] Apache Software Foundation (ASF), https: // www.apache.org /
- [7] FESS, https: // fess.codelibs.org / index.html
- [8] ElasticSearch, https: // www.elástico.código/
- [9] Apache Solr, seção de download, https: // lucene.apache.org / solr / downloads.htm
- [10] Nvidia V100, https: // www.nvidia.com / en-us / data-center / v100 /
- [11] Apache Tika, https: // tika.apache.org /
- [12] Layout do diretório Apache Solr, https: // lucene.apache.org / solr / guide / 8_8 / installation-solr.html # directory-layout
- [13] Como funcionam os mecanismos de pesquisa: rastreamento, indexação e classificação. O guia para iniciantes em SEO https: // moz.com / beginners-guide-to-seo / how-search-engines-operam
- [14] Comece a usar o Apache Solr, https: // sematext.com / guide / solr / #: ~: text = Solr% 20works% 20by% 20gathering% 2C% 20storing, com% 20huge% 20volumes% 20of% 20data