Apache Solr - indeksowanie danych

Ogólnie, indexingto układ dokumentów lub (innych podmiotów) systematycznie. Indeksowanie umożliwia użytkownikom zlokalizowanie informacji w dokumencie.

  • Indeksowanie zbiera, analizuje i przechowuje dokumenty.

  • Indeksowanie ma na celu zwiększenie szybkości i wydajności zapytania wyszukiwania podczas znajdowania wymaganego dokumentu.

Indeksowanie w Apache Solr

W Apache Solr możemy indeksować (dodawać, usuwać, modyfikować) różne formaty dokumentów takie jak xml, csv, pdf itp. Dane do indeksu Solr możemy dodawać na kilka sposobów.

W tym rozdziale omówimy indeksowanie -

  • Korzystanie z interfejsu internetowego Solr.
  • Korzystanie z dowolnego interfejsu API klienta, takiego jak Java, Python itp.
  • Używając post tool.

W tym rozdziale omówimy, jak dodać dane do indeksu Apache Solr za pomocą różnych interfejsów (wiersz poleceń, interfejs WWW i API klienta Java)

Dodawanie dokumentów za pomocą polecenia Post

Solr ma post polecenie w jego bin/informator. Za pomocą tego polecenia możesz indeksować różne formaty plików, takie jak JSON, XML, CSV w Apache Solr.

Przejrzyj bin katalogu Apache Solr i wykonaj plik –h option polecenia post, jak pokazano w poniższym bloku kodu.

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

Wykonując powyższe polecenie, otrzymasz listę opcji pliku post command, jak pokazano niżej.

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'

Przykład

Załóżmy, że mamy plik o nazwie sample.csv z następującą zawartością (w bin informator).

legitymacja studencka Imię Nazwisko Telefon Miasto
001 Rajiv Reddy 9848022337 Hyderabad
002 Siddharth Bhattacharya 9848022338 Kalkuta
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 Bhubaneshwar
006 Archana Mishra 9848022335 Chennai

Powyższy zestaw danych zawiera dane osobowe, takie jak identyfikator ucznia, imię, nazwisko, telefon i miasto. Plik CSV zbioru danych przedstawiono poniżej. Tutaj musisz zauważyć, że musisz wspomnieć o schemacie, dokumentując jego pierwszą linię.

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

Możesz zindeksować te dane pod rdzeniem o nazwie sample_Solr używając post polecenie w następujący sposób -

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

Po wykonaniu powyższego polecenia, dany dokument jest indeksowany pod określonym rdzeniem, generując następujący wynik.

/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

Odwiedź stronę główną interfejsu użytkownika Solr, używając następującego adresu URL -

http://localhost:8983/

Wybierz rdzeń Solr_sample. Domyślną obsługą żądań jest/selecta zapytanie brzmi „:”. Nie wprowadzając żadnych modyfikacji, kliknij plikExecuteQuery przycisk u dołu strony.

Podczas wykonywania zapytania można obserwować zawartość zindeksowanego dokumentu CSV w formacie JSON (domyślnie), jak pokazano na poniższym zrzucie ekranu.

Note - W ten sam sposób możesz indeksować inne formaty plików, takie jak JSON, XML, CSV itp.

Dodawanie dokumentów za pomocą interfejsu internetowego Solr

Możesz także indeksować dokumenty za pomocą interfejsu internetowego dostarczonego przez Solr. Zobaczmy, jak zindeksować następujący dokument 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", 
   } 
]

Krok 1

Otwórz interfejs sieciowy Solr, używając następującego adresu URL -

http://localhost:8983/

Step 2

Wybierz rdzeń Solr_sample. Domyślnie wartości pól Request Handler, Common Within, Overwrite i Boost to odpowiednio / update, 1000, true i 1.0, jak pokazano na poniższym zrzucie ekranu.

Teraz wybierz żądany format dokumentu z JSON, CSV, XML itp. Wpisz dokument, który ma być indeksowany w polu tekstowym i kliknij Submit Document przycisk, jak pokazano na poniższym zrzucie ekranu.

Dodawanie dokumentów za pomocą Java Client API

Poniżej znajduje się program Java do dodawania dokumentów do indeksu Apache Solr. Zapisz ten kod w pliku o nazwieAddingDocument.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"); 
   } 
}

Skompiluj powyższy kod, wykonując następujące polecenia w terminalu -

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

Po wykonaniu powyższego polecenia otrzymasz następujące dane wyjściowe.

Documents added