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