Apache Solr - Indexation des données

En général, indexingest un agencement de documents ou (d'autres entités) systématiquement. L'indexation permet aux utilisateurs de localiser des informations dans un document.

  • L'indexation collecte, analyse et stocke les documents.

  • L'indexation est effectuée pour augmenter la vitesse et les performances d'une requête de recherche tout en trouvant un document requis.

Indexation dans Apache Solr

Dans Apache Solr, nous pouvons indexer (ajouter, supprimer, modifier) ​​divers formats de documents tels que xml, csv, pdf, etc. Nous pouvons ajouter des données à l'index Solr de plusieurs manières.

Dans ce chapitre, nous allons discuter de l'indexation -

  • Utilisation de l'interface Web Solr.
  • Utilisation de l'une des API clientes telles que Java, Python, etc.
  • En utilisant le post tool.

Dans ce chapitre, nous verrons comment ajouter des données à l'index d'Apache Solr à l'aide de diverses interfaces (ligne de commande, interface Web et API client Java)

Ajout de documents à l'aide de la commande Post

Solr a un post commande dans son bin/annuaire. À l'aide de cette commande, vous pouvez indexer différents formats de fichiers tels que JSON, XML, CSV dans Apache Solr.

Parcourez le bin répertoire d'Apache Solr et exécutez le –h option de la commande post, comme indiqué dans le bloc de code suivant.

[[email protected] bin]$ cd $SOLR_HOME 
[[email protected] bin]$ ./post -h

En exécutant la commande ci-dessus, vous obtiendrez une liste d'options du post command, comme indiqué ci-dessous.

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'

Exemple

Supposons que nous ayons un fichier nommé sample.csv avec le contenu suivant (dans le bin annuaire).

Carte d'étudiant Prénom Nom de famille Téléphone Ville
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

L'ensemble de données ci-dessus contient des informations personnelles telles que l'identifiant de l'étudiant, le prénom, le nom, le téléphone et la ville. Le fichier CSV de l'ensemble de données est illustré ci-dessous. Ici, vous devez noter que vous devez mentionner le schéma, en documentant sa première ligne.

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

Vous pouvez indexer ces données sous le noyau nommé sample_Solr en utilisant le post commande comme suit -

[[email protected] bin]$ ./post -c Solr_sample sample.csv

Lors de l'exécution de la commande ci-dessus, le document donné est indexé sous le noyau spécifié, générant la sortie suivante.

/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

Visitez la page d'accueil de Solr Web UI en utilisant l'URL suivante -

http://localhost:8983/

Sélectionnez le noyau Solr_sample. Par défaut, le gestionnaire de requêtes est/selectet la requête est «:». Sans apporter de modifications, cliquez sur leExecuteQuery bouton en bas de page.

Lors de l'exécution de la requête, vous pouvez observer le contenu du document CSV indexé au format JSON (par défaut), comme illustré dans la capture d'écran suivante.

Note - De la même manière, vous pouvez indexer d'autres formats de fichiers tels que JSON, XML, CSV, etc.

Ajout de documents à l'aide de l'interface Web Solr

Vous pouvez également indexer des documents à l'aide de l'interface Web fournie par Solr. Voyons comment indexer le document JSON suivant.

[ 
   { 
      "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", 
   } 
]

Étape 1

Ouvrez l'interface Web Solr à l'aide de l'URL suivante -

http://localhost:8983/

Step 2

Sélectionnez le noyau Solr_sample. Par défaut, les valeurs des champs Request Handler, Common Within, Overwrite et Boost sont / update, 1000, true et 1.0 respectivement, comme illustré dans la capture d'écran suivante.

Maintenant, choisissez le format de document souhaité parmi JSON, CSV, XML, etc. Tapez le document à indexer dans la zone de texte et cliquez sur le bouton Submit Document bouton, comme indiqué dans la capture d'écran suivante.

Ajout de documents à l'aide de l'API client Java

Voici le programme Java pour ajouter des documents à l'index Apache Solr. Enregistrez ce code dans un fichier avec le nomAddingDocument.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"); 
   } 
}

Compilez le code ci-dessus en exécutant les commandes suivantes dans le terminal -

[[email protected] bin]$ javac AddingDocument 
[[email protected] bin]$ java AddingDocument

En exécutant la commande ci-dessus, vous obtiendrez la sortie suivante.

Documents added