Apache Solr - Dados de indexação

Em geral, indexingé um arranjo de documentos ou (outras entidades) sistematicamente. A indexação permite que os usuários localizem informações em um documento.

  • A indexação coleta, analisa e armazena documentos.

  • A indexação é feita para aumentar a velocidade e o desempenho de uma consulta de pesquisa ao localizar um documento necessário.

Indexação no Apache Solr

No Apache Solr, podemos indexar (adicionar, excluir, modificar) vários formatos de documento, como xml, csv, pdf, etc. Podemos adicionar dados ao índice do Solr de várias maneiras.

Neste capítulo, vamos discutir a indexação -

  • Usando a interface da Web do Solr.
  • Usando qualquer uma das APIs do cliente, como Java, Python, etc.
  • Usando o post tool.

Neste capítulo, discutiremos como adicionar dados ao índice do Apache Solr usando várias interfaces (linha de comando, interface da web e API cliente Java)

Adicionar documentos usando o Post Command

Solr tem um post comando em seu bin/diretório. Usando este comando, você pode indexar vários formatos de arquivos como JSON, XML, CSV no Apache Solr.

Navegue pelo bin diretório do Apache Solr e execute o –h option do comando post, conforme mostrado no bloco de código a seguir.

[Hadoop@localhost bin]$ cd $SOLR_HOME 
[Hadoop@localhost bin]$ ./post -h

Ao executar o comando acima, você obterá uma lista de opções do post command, como mostrado abaixo.

Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]> 
or post –help  
   collection name defaults to DEFAULT_SOLR_COLLECTION if not specified  
OPTIONS 
======= 
Solr options: 
   -url <base Solr update URL> (overrides collection, host, and port) 
   -host <host> (default: localhost) 
   -p or -port <port> (default: 8983) 
   -commit yes|no (default: yes)  

Web crawl options:  
   -recursive <depth> (default: 1) 
   -delay <seconds> (default: 10)  

Directory crawl options: 
   -delay <seconds> (default: 0)  

stdin/args options: 
   -type <content/type> (default: application/xml)  

Other options: 
   -filetypes <type>[,<type>,...] (default:   
   xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
   rtf,htm,html,txt,log) 
   -params "<key> = <value>[&<key> = <value>...]" (values must be 
   URL-encoded; these pass through to Solr update request) 
   -out yes|no (default: no; yes outputs Solr response to console) 
   -format Solr (sends application/json content as Solr commands 
   to /update instead of /update/json/docs)  

Examples: 
* JSON file:./post -c wizbang events.json 
* XML files: ./post -c records article*.xml 
* CSV file: ./post -c signals LATEST-signals.csv 
* Directory of files: ./post -c myfiles ~/Documents 
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1 
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d 
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'

Exemplo

Suponha que temos um arquivo chamado sample.csv com o seguinte conteúdo (no bin diretório).

Identidade estudantil Primeiro nome Último nome telefone Cidade
001 Rajiv Reddy 9848022337 Hyderabad
002 Siddharth Bhattacharya 9848022338 Calcutá
003 Rajesh Khanna 9848022339 Délhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 Bhubaneshwar
006 Archana Mishra 9848022335 Chennai

O conjunto de dados acima contém detalhes pessoais como id do aluno, nome, sobrenome, telefone e cidade. O arquivo CSV do conjunto de dados é mostrado abaixo. Aqui, você deve observar que precisa mencionar o esquema, documentando sua primeira linha.

id,    first_name,   last_name,   phone_no,      location 
001,   Pruthvi,      Reddy,       9848022337,    Hyderabad 
002,   kasyap,       Sastry,      9848022338,    Vishakapatnam 
003,   Rajesh,       Khanna,      9848022339,    Delhi 
004,   Preethi,      Agarwal,     9848022330,    Pune 
005,   Trupthi,      Mohanty,     9848022336,    Bhubaneshwar 
006,   Archana,      Mishra,      9848022335,    Chennai

Você pode indexar esses dados no núcleo denominado sample_Solr usando o post comando da seguinte forma -

[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv

Ao executar o comando acima, o documento fornecido é indexado no núcleo especificado, gerando a seguinte saída.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = Solr_sample -Ddata = files 
org.apache.Solr.util.SimplePostTool sample.csv 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/Solr_sample/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log 
POSTing file sample.csv (text/csv) to [base] 
1 files indexed. 
COMMITting Solr index changes to 
http://localhost:8983/Solr/Solr_sample/update... 
Time spent: 0:00:00.228

Visite a página inicial do Solr Web UI usando o seguinte URL -

http://localhost:8983/

Selecione o núcleo Solr_sample. Por padrão, o manipulador de solicitação é/selecte a consulta é “:”. Sem fazer nenhuma modificação, clique noExecuteQuery botão na parte inferior da página.

Ao executar a consulta, é possível observar o conteúdo do documento CSV indexado no formato JSON (padrão), conforme mostrado na captura de tela a seguir.

Note - Da mesma forma, você pode indexar outros formatos de arquivo, como JSON, XML, CSV, etc.

Adicionar documentos usando a interface da Web do Solr

Você também pode indexar documentos usando a interface da web fornecida pelo Solr. Vamos ver como indexar o seguinte documento JSON.

[ 
   { 
      "id" : "001", 
      "name" : "Ram", 
      "age" : 53, 
      "Designation" : "Manager", 
      "Location" : "Hyderabad", 
   }, 
   { 
      "id" : "002", 
      "name" : "Robert", 
      "age" : 43, 
      "Designation" : "SR.Programmer", 
      "Location" : "Chennai", 
   }, 
   { 
      "id" : "003", 
      "name" : "Rahim", 
      "age" : 25, 
      "Designation" : "JR.Programmer", 
      "Location" : "Delhi", 
   } 
]

Passo 1

Abra a interface da web do Solr usando o seguinte URL -

http://localhost:8983/

Step 2

Selecione o núcleo Solr_sample. Por padrão, os valores dos campos Request Handler, Common Within, Overwrite e Boost são / update, 1000, true e 1.0 respectivamente, conforme mostrado na captura de tela a seguir.

Agora, escolha o formato de documento desejado em JSON, CSV, XML, etc. Digite o documento a ser indexado na área de texto e clique no botão Submit Document botão, como mostrado na imagem a seguir.

Adicionar documentos usando a API do cliente Java

A seguir está o programa Java para adicionar documentos ao índice do Apache Solr. Salve este código em um arquivo com o nomeAddingDocument.java.

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.common.SolrInputDocument; 

public class AddingDocument { 
   public static void main(String args[]) throws Exception { 
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();   
      
      //Preparing the Solr document 
      SolrInputDocument doc = new SolrInputDocument(); 
   
      //Adding fields to the document 
      doc.addField("id", "003"); 
      doc.addField("name", "Rajaman"); 
      doc.addField("age","34"); 
      doc.addField("addr","vishakapatnam"); 
         
      //Adding the document to Solr 
      Solr.add(doc);         
         
      //Saving the changes 
      Solr.commit(); 
      System.out.println("Documents added"); 
   } 
}

Compile o código acima executando os seguintes comandos no terminal -

[Hadoop@localhost bin]$ javac AddingDocument 
[Hadoop@localhost bin]$ java AddingDocument

Ao executar o comando acima, você obterá a seguinte saída.

Documents added