Apache Solr - Verileri Endeksleme

Genel olarak, indexingbelgelerin veya (diğer varlıkların) sistematik olarak düzenlenmesidir. İndeksleme, kullanıcıların bir belgedeki bilgileri bulmasını sağlar.

  • Dizin oluşturma, belgeleri toplar, ayrıştırır ve depolar.

  • İndeksleme, gerekli bir belgeyi bulurken arama sorgusunun hızını ve performansını artırmak için yapılır.

Apache Solr'da indeksleme

Apache Solr'da, xml, csv, pdf, vb. Gibi çeşitli belge formatlarını indeksleyebilir (ekleme, silme, değiştirme) yapabiliriz. Solr indeksine çeşitli şekillerde veri ekleyebiliriz.

Bu bölümde, indekslemeyi tartışacağız -

  • Solr Web Arayüzünün Kullanılması.
  • Java, Python vb. Gibi istemci API'lerinden herhangi birini kullanma
  • Kullanmak post tool.

Bu bölümde, çeşitli arayüzler (komut satırı, web arayüzü ve Java istemci API) kullanarak Apache Solr dizinine nasıl veri ekleneceğini tartışacağız.

Posta Komutu Kullanarak Belgeleri Ekleme

Solr bir post onun emri bin/dizin. Bu komutu kullanarak, Apache Solr'da JSON, XML, CSV gibi çeşitli dosya formatlarını indeksleyebilirsiniz.

Göz atın bin Apache Solr dizinini açın ve –h option Post komutunun aşağıdaki kod bloğunda gösterildiği gibi.

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

Yukarıdaki komutu yürütürken, aşağıdaki seçeneklerden oluşan bir liste göreceksiniz: post command, Aşağıda gösterildiği gibi.

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'

Misal

Adında bir dosyamız olduğunu varsayalım sample.csv aşağıdaki içeriğe sahip (içinde bin dizin).

Öğrenci Kimliği İsim Lasst Adı Telefon Kent
001 Rajiv Reddy 9848022337 Haydarabad
002 Siddharth Bhattacharya 9848022338 Kalküta
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 Bhubaneshwar
006 Archana Mishra 9848022335 Chennai

Yukarıdaki veri kümesi Öğrenci kimliği, adı, soyadı, telefonu ve şehri gibi kişisel ayrıntıları içerir. Veri kümesinin CSV dosyası aşağıda gösterilmektedir. Burada, ilk satırını belgeleyen şemadan bahsetmeniz gerektiğini unutmamalısınız.

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

Bu verileri adlı çekirdek altında indeksleyebilirsiniz. sample_Solr kullanmak post aşağıdaki gibi komut -

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

Yukarıdaki komut çalıştırıldığında, verilen belge belirtilen çekirdek altında indekslenir ve aşağıdaki çıktıyı oluşturur.

/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

Aşağıdaki URL'yi kullanarak Solr Web Kullanıcı Arayüzünün ana sayfasını ziyaret edin -

http://localhost:8983/

Çekirdeği seçin Solr_sample. Varsayılan olarak, istek işleyicisi/selectve sorgu ":". Herhangi bir değişiklik yapmadan,ExecuteQuery Sayfanın altındaki düğmesi.

Sorguyu yürütürken, aşağıdaki ekran görüntüsünde gösterildiği gibi, dizine alınmış CSV belgesinin içeriğini JSON biçiminde (varsayılan) gözlemleyebilirsiniz.

Note - Aynı şekilde JSON, XML, CSV vb. Diğer dosya formatlarını da indeksleyebilirsiniz.

Solr Web Arayüzünü Kullanarak Belge Ekleme

Solr tarafından sağlanan web arayüzünü kullanarak da belgeleri indeksleyebilirsiniz. Aşağıdaki JSON belgesini nasıl indeksleyeceğimizi görelim.

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

Aşama 1

Aşağıdaki URL'yi kullanarak Solr web arayüzünü açın -

http://localhost:8983/

Step 2

Çekirdeği seçin Solr_sample. Varsayılan olarak, aşağıdaki ekran görüntüsünde gösterildiği gibi İstek İşleyici, Ortak İçinde, Üzerine Yazma ve Yükseltme alanlarının değerleri sırasıyla / update, 1000, true ve 1.0'dır.

Şimdi, JSON, CSV, XML, vb. Arasından istediğiniz belge biçimini seçin. Metin alanına dizine eklenecek belgeyi yazın ve Submit Document düğmesi, aşağıdaki ekran görüntüsünde gösterildiği gibi.

Java Client API kullanarak Belge Ekleme

Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinAddingDocument.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"); 
   } 
}

Terminalde aşağıdaki komutları çalıştırarak yukarıdaki kodu derleyin -

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

Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.

Documents added