Apache Solr - Indicizzazione dei dati
In generale, indexingè un arrangiamento di documenti o (altre entità) sistematicamente. L'indicizzazione consente agli utenti di individuare le informazioni in un documento.
L'indicizzazione raccoglie, analizza e archivia i documenti.
L'indicizzazione viene eseguita per aumentare la velocità e le prestazioni di una query di ricerca durante la ricerca di un documento richiesto.
Indicizzazione in Apache Solr
In Apache Solr, possiamo indicizzare (aggiungere, eliminare, modificare) vari formati di documenti come xml, csv, pdf, ecc. Possiamo aggiungere dati all'indice Solr in diversi modi.
In questo capitolo, discuteremo dell'indicizzazione:
- Utilizzo dell'interfaccia Web di Solr.
- Utilizzando una qualsiasi delle API client come Java, Python, ecc.
- Usando il post tool.
In questo capitolo, discuteremo come aggiungere dati all'indice di Apache Solr utilizzando varie interfacce (riga di comando, interfaccia web e API client Java)
Aggiunta di documenti utilizzando Post Command
Solr ha un post comando nella sua bin/directory. Usando questo comando, puoi indicizzare vari formati di file come JSON, XML, CSV in Apache Solr.
Sfoglia il file bin directory di Apache Solr ed eseguire il file –h option del comando post, come mostrato nel seguente blocco di codice.
[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h
Eseguendo il comando precedente, otterrai un elenco di opzioni del file post command, come mostrato di seguito.
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'
Esempio
Supponiamo di avere un file denominato sample.csv con il seguente contenuto (in bin directory).
ID studente | Nome di battesimo | Cognome | Telefono | Città |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Calcutta |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
Il set di dati sopra contiene dettagli personali come ID studente, nome, cognome, telefono e città. Il file CSV del set di dati è mostrato di seguito. Qui, devi notare che devi menzionare lo schema, documentando la sua prima riga.
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
Puoi indicizzare questi dati sotto il core denominato sample_Solr usando il post comando come segue -
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
Quando si esegue il comando precedente, il documento dato viene indicizzato sotto il core specificato, generando il seguente output.
/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
Visita la home page dell'interfaccia utente Web di Solr utilizzando il seguente URL:
http://localhost:8983/
Seleziona il core Solr_sample. Per impostazione predefinita, il gestore delle richieste è/selecte la query è ":". Senza apportare modifiche, fare clic suExecuteQuery pulsante in fondo alla pagina.
Durante l'esecuzione della query, è possibile osservare il contenuto del documento CSV indicizzato in formato JSON (predefinito), come mostrato nello screenshot seguente.
Note - Allo stesso modo, puoi indicizzare altri formati di file come JSON, XML, CSV, ecc.
Aggiunta di documenti utilizzando l'interfaccia Web Solr
È inoltre possibile indicizzare i documenti utilizzando l'interfaccia web fornita da Solr. Vediamo come indicizzare il seguente 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
Apri l'interfaccia web di Solr utilizzando il seguente URL:
http://localhost:8983/
Step 2
Seleziona il core Solr_sample. Per impostazione predefinita, i valori dei campi Request Handler, Common Within, Overwrite e Boost sono rispettivamente / update, 1000, true e 1.0, come mostrato nello screenshot seguente.
Ora, scegli il formato del documento che desideri tra JSON, CSV, XML, ecc. Digita il documento da indicizzare nell'area di testo e fai clic sul pulsante Submit Document pulsante, come mostrato nella seguente schermata.
Aggiunta di documenti utilizzando Java Client API
Di seguito è riportato il programma Java per aggiungere documenti all'indice Apache Solr. Salva questo codice in un file con il 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");
}
}
Compilare il codice sopra eseguendo i seguenti comandi nel terminale:
[Hadoop@localhost bin]$ javac AddingDocument
[Hadoop@localhost bin]$ java AddingDocument
Eseguendo il comando precedente, otterrai il seguente output.
Documents added