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