Apache Solr - Hızlı Kılavuz

Solr oluşturmak için kullanılan açık kaynaklı bir arama platformudur search applications. Üzerine inşa edildiLucene(tam metin arama motoru). Solr, kurumsal kullanıma hazırdır, hızlıdır ve yüksek oranda ölçeklenebilir. Solr kullanılarak oluşturulan uygulamalar karmaşıktır ve yüksek performans sağlar.

Öyleydi Yonik SeelyCNET Networks'ün şirket web sitesine arama yetenekleri eklemek için 2004 yılında Solr'ı kurdu. Ocak 2006'da Apache Yazılım Vakfı altında açık kaynaklı bir proje yapıldı. En son sürümü olan Solr 6.0, paralel SQL sorgularının yürütülmesi desteği ile 2016 yılında piyasaya sürüldü.

Solr, Hadoop ile birlikte kullanılabilir. Hadoop büyük miktarda veriyi işlediğinden, Solr gerekli bilgileri bu kadar büyük bir kaynaktan bulmamıza yardımcı oluyor. Solr sadece arama değil, aynı zamanda depolama amacıyla da kullanılabilir. Diğer NoSQL veritabanları gibi, birnon-relational data storage ve processing technology.

Kısaca Solr, büyük hacimli metin merkezli verileri aramak için optimize edilmiş ölçeklenebilir, dağıtıma hazır bir arama / depolama motorudur.

Apache Solr'un Özellikleri

Solr, Lucene'nin Java API'sinin etrafını sarıyor. Bu nedenle, Solr kullanarak Lucene'nin tüm özelliklerinden yararlanabilirsiniz. Solr'un en belirgin özelliklerinden bazılarına bir göz atalım -

  • Restful APIs- Solr ile iletişim kurmak için Java programlama becerisine sahip olmak zorunlu değildir. Onun yerine onunla iletişim kurmak için dinlendirici hizmetleri kullanabilirsiniz. XML, JSON ve .CSV gibi dosya formatlarında Solr'a belgeler giriyor ve sonuçları aynı dosya formatlarında alıyoruz.

  • Full text search - Solr, belirteçler, ifadeler, yazım denetimi, joker karakter ve otomatik tamamlama gibi tam metin araması için gereken tüm yetenekleri sağlar.

  • Enterprise ready - Solr, organizasyonun ihtiyacına göre bağımsız, dağıtılmış, bulut vb. Her türlü sistemde (büyük veya küçük) konuşlandırılabilir.

  • Flexible and Extensible - Java sınıflarını genişleterek ve buna göre yapılandırarak Solr bileşenlerini kolayca özelleştirebiliriz.

  • NoSQL database - Solr, arama görevlerini bir küme boyunca dağıtabileceğimiz büyük veri ölçekli NOSQL veritabanı olarak da kullanılabilir.

  • Admin Interface - Solr, günlükleri yönetme, ekleme, silme, güncelleme ve belge arama gibi tüm olası görevleri gerçekleştirebileceğimiz, kullanımı kolay, kullanıcı dostu, özelliklerle güçlendirilmiş bir kullanıcı arayüzü sağlar.

  • Highly Scalable - Solr'ı Hadoop ile kullanırken replikalar ekleyerek kapasitesini ölçeklendirebiliriz.

  • Text-Centric and Sorted by Relevance - Solr çoğunlukla metin belgelerini aramak için kullanılır ve sonuçlar, kullanıcının sorgusuyla alaka düzeyine göre sırayla teslim edilir.

Lucene'den farklı olarak, Apache Solr ile çalışırken Java programlama becerilerine sahip olmanıza gerek yoktur. Lucene'nin sağlamadığı otomatik tamamlamayı içeren bir arama kutusu oluşturmak için harika bir dağıtıma hazır hizmet sağlar. Solr kullanarak, büyük ölçekli (Büyük Veri) uygulamalar için indeksi ölçeklendirebilir, dağıtabilir ve yönetebiliriz.

Arama Uygulamalarında Lucene

Lucene, basit ama güçlü Java tabanlı arama kitaplığıdır. Arama yeteneği eklemek için herhangi bir uygulamada kullanılabilir. Lucene, neredeyse her tür metni dizine eklemek ve aramak için kullanılan, ölçeklenebilir ve yüksek performanslı bir kitaplıktır. Lucene kitaplığı, herhangi bir arama uygulaması için gerekli olan temel işlemleri sağlar.Indexing ve Searching.

Büyük miktarda veriye sahip bir web portalımız varsa, büyük olasılıkla büyük veri havuzundan ilgili bilgileri çıkarmak için portalımızda bir arama motoruna ihtiyaç duyacağız. Lucene, herhangi bir arama uygulamasının kalbi olarak çalışır ve indeksleme ve aramayla ilgili hayati işlemleri sağlar.

Arama Motoru, web sayfaları, haber grupları, programlar, resimler vb. Gibi büyük bir İnternet kaynakları veritabanını ifade eder. World Wide Web'de bilgilerin bulunmasına yardımcı olur.

Kullanıcılar, sorguları Arama Motoruna anahtar sözcükler veya tümcecikler biçiminde ileterek bilgi arayabilirler. Arama Motoru daha sonra veritabanında arama yapar ve kullanıcıya ilgili bağlantıları döndürür.

Arama Motoru Bileşenleri

Genel olarak, bir arama motorunun aşağıda listelendiği gibi üç temel bileşeni vardır -

  • Web Crawler - Web tarayıcıları aynı zamanda spiders veya bots. Bilgi toplamak için internette dolaşan bir yazılım bileşenidir.

  • Database- Web'deki tüm bilgiler veri tabanlarında saklanır. Çok sayıda web kaynağı içerirler.

  • Search Interfaces- Bu bileşen, kullanıcı ve veritabanı arasındaki bir arayüzdür. Kullanıcının veritabanında arama yapmasına yardımcı olur.

Arama Motorları Nasıl Çalışır?

Aşağıdaki işlemlerin bir kısmını veya tamamını gerçekleştirmek için herhangi bir arama uygulaması gereklidir.

Adım Başlık Açıklama

1

Ham İçeriği Edin

Herhangi bir arama uygulamasının ilk adımı, aramanın gerçekleştirileceği hedef içeriği toplamaktır.

2

Belgeyi oluşturun

Bir sonraki adım, arama uygulamasının kolayca anlayabileceği ve yorumlayabileceği ham içeriklerden belge (ler) oluşturmaktır.

3

Belgeyi analiz edin

İndeksleme başlamadan önce belge analiz edilmelidir.

4

Belgeyi indeksleme

Belgeler oluşturulduktan ve analiz edildikten sonra, bir sonraki adım, bu belgenin belgenin tüm içeriği yerine belirli anahtarlara dayalı olarak geri alınabilmesi için onları dizine almaktır.

İndeksleme, kitabın tamamında arama yapmak yerine bu kelimelerin hızlı bir şekilde izlenebilmesi için yaygın kelimelerin sayfa numaralarıyla gösterildiği bir kitabın sonunda sahip olduğumuz indekslere benzer.

5

Arama için Kullanıcı Arayüzü

Bir dizin veritabanı hazır olduğunda, uygulama arama işlemlerini gerçekleştirebilir. Kullanıcının arama yapmasına yardımcı olmak için uygulama, kullanıcının metin girebileceği ve arama sürecini başlatabileceği bir kullanıcı arayüzü sağlamalıdır.

6

Sorgu Oluştur

Kullanıcı bir metni aramak için bir talepte bulunduğunda, uygulama bu metni kullanarak bir sorgu nesnesi hazırlamalıdır, bu daha sonra ilgili ayrıntıları almak için dizin veritabanını sorgulamak için kullanılabilir.

7

Arama Sorgusu

Sorgu nesnesini kullanarak, ilgili ayrıntıları ve içerik belgelerini almak için indeks veritabanı kontrol edilir.

8

Sonuçları Oluştur

Gerekli sonuç alındığında, uygulama, Kullanıcı Arayüzünü kullanarak sonuçların kullanıcıya nasıl görüntüleneceğine karar vermelidir.

Aşağıdaki resme bir göz atın. Arama Motorlarının nasıl çalıştığının genel bir görünümünü gösterir.

Bu temel işlemlerin yanı sıra, arama uygulamaları, yöneticilerin kullanıcı profillerine dayalı arama düzeyini kontrol etmelerine yardımcı olmak için yönetim-kullanıcı arabirimi de sağlayabilir. Arama sonucunun analizi, herhangi bir arama uygulamasının bir başka önemli ve gelişmiş yönüdür.

Bu bölümde, Windows ortamında Solr'ın nasıl kurulacağını tartışacağız. Solr'ı Windows sisteminize kurmak için aşağıda verilen adımları izlemeniz gerekir -

  • Apache Solr ana sayfasını ziyaret edin ve indirme düğmesine tıklayın.

  • Apache Solr indeksini almak için aynalardan birini seçin. Oradan adlı dosyayı indirinSolr-6.2.0.zip.

  • Dosyayı şuradan taşıyın: downloads folder gerekli dizine getirin ve açın.

Solr dosyasını indirdiğinizi ve C sürücüsüne çıkardığınızı varsayalım. Böyle bir durumda, Solr'ı aşağıdaki ekran görüntüsünde gösterildiği gibi başlatabilirsiniz.

Kurulumu doğrulamak için tarayıcınızda aşağıdaki URL'yi kullanın.

http://localhost:8983/

Kurulum işlemi başarılı olursa, aşağıda gösterildiği gibi Apache Solr kullanıcı arayüzünün kontrol panelini göreceksiniz.

Java Ortamını Ayarlama

Java kitaplıklarını kullanarak Apache Solr ile de iletişim kurabiliriz; ancak Solr'a Java API kullanarak erişmeden önce, bu kitaplıklar için sınıf yolunu ayarlamanız gerekir.

Sınıf Yolunu Ayarlama

Yı kur classpath Solr kitaplıklarına .bashrcdosya. Açık.bashrc aşağıda gösterildiği gibi herhangi bir editörde.

$ gedit ~/.bashrc

Solr kitaplıkları için sınıf yolu ayarlayın (lib HBase'deki klasör) aşağıda gösterildiği gibi.

export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*

Bu, Java API kullanarak HBase'e erişirken "sınıf bulunamadı" istisnasını önlemek içindir.

Solr, Hadoop ile birlikte kullanılabilir. Hadoop büyük miktarda veriyi işlediğinden, Solr gerekli bilgileri bu kadar büyük bir kaynaktan bulmamıza yardımcı oluyor. Bu bölümde, Hadoop'u sisteminize nasıl kurabileceğinizi öğrenelim.

Hadoop'u indirme

Hadoop'u sisteminize indirmek için izlenecek adımlar aşağıda verilmiştir.

Step 1- Hadoop'un ana sayfasına gidin. Bağlantıyı kullanabilirsiniz - www.hadoop.apache.org/ . Linke tıklayınızReleases, aşağıdaki ekran görüntüsünde vurgulandığı gibi.

Sizi şuraya yönlendirecek Apache Hadoop Releases Hadoop'un çeşitli sürümlerinin kaynak ve ikili dosyalarının aynalarının bağlantılarını içeren sayfa aşağıdaki gibidir -

Step 2 - Hadoop'un en son sürümünü seçin (eğitimimizde 2.6.4'tür) ve binary link. Sizi Hadoop ikili programının aynalarının bulunduğu bir sayfaya götürecektir. Hadoop'u indirmek için bu aynalardan birine tıklayın.

Hadoop'u Komut İsteminden İndirin

Linux terminalini açın ve süper kullanıcı olarak oturum açın.

$ su 
password:

Hadoop'u kurmanız gereken dizine gidin ve aşağıdaki kod bloğunda gösterildiği gibi, daha önce kopyalanan bağlantıyı kullanarak dosyayı buraya kaydedin.

# cd /usr/local 
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz

Hadoop'u indirdikten sonra, aşağıdaki komutları kullanarak onu çıkarın.

# tar zxvf hadoop-2.6.4.tar.gz  
# mkdir hadoop 
# mv hadoop-2.6.4/* to hadoop/ 
# exit

Hadoop'u Yükleme

Yüklemek için aşağıda verilen adımları izleyin Hadoop sözde dağıtılmış modda.

1. Adım: Hadoop'u Kurma

Aşağıdaki komutları ekleyerek Hadoop ortam değişkenlerini ayarlayabilirsiniz. ~/.bashrc dosya.

export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export 
HADOOP_HDFS_HOME = $HADOOP_HOME export 
YARN_HOME = $HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native 
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_INSTALL = $HADOOP_HOME

Ardından, tüm değişiklikleri mevcut çalışan sisteme uygulayın.

$ source ~/.bashrc

2. Adım: Hadoop Yapılandırması

Tüm Hadoop yapılandırma dosyalarını “$ HADOOP_HOME / etc / hadoop” konumunda bulabilirsiniz. Bu yapılandırma dosyalarında Hadoop altyapınıza göre değişiklik yapmanız gerekir.

$ cd $HADOOP_HOME/etc/hadoop

Java'da Hadoop programları geliştirmek için, Java ortam değişkenlerini sıfırlamanız gerekir. hadoop-env.sh değiştirerek dosya JAVA_HOME sisteminizdeki Java konumu ile değer.

export JAVA_HOME = /usr/local/jdk1.7.0_71

Hadoop'u yapılandırmak için düzenlemeniz gereken dosyaların listesi aşağıdadır -

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml

core-site.xml

core-site.xml dosyası, Hadoop örneği için kullanılan bağlantı noktası numarası, dosya sistemi için ayrılan bellek, verileri depolamak için bellek sınırı ve Okuma / Yazma arabelleklerinin boyutu gibi bilgileri içerir.

Core-site.xml dosyasını açın ve aşağıdaki özellikleri <configuration>, </configuration> etiketlerinin içine ekleyin.

<configuration> 
   <property>     
      <name>fs.default.name</name>     
      <value>hdfs://localhost:9000</value>   
   </property> 
</configuration>

hdfs-site.xml

hdfs-site.xml dosya, çoğaltma verilerinin değeri gibi bilgileri içerir, namenode yol ve datanodeyerel dosya sistemlerinizin yolları. Hadoop altyapısını depolamak istediğiniz yer anlamına gelir.

Aşağıdaki verileri varsayalım.

dfs.replication (data replication value) = 1  

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode  

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Bu dosyayı açın ve <configuration>, </configuration> etiketlerinin içine aşağıdaki özellikleri ekleyin.

<configuration> 
   <property>     
      <name>dfs.replication</name>     
      <value>1</value>   
   </property>  
   
   <property>     
      <name>dfs.name.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>   
   </property>  
   
   <property>     
      <name>dfs.data.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>   
   </property> 
</configuration>

Note - Yukarıdaki dosyada tüm özellik değerleri kullanıcı tanımlıdır ve Hadoop altyapınıza göre değişiklik yapabilirsiniz.

yarn-site.xml

Bu dosya, ipliği Hadoop'ta yapılandırmak için kullanılır. İplik-site.xml dosyasını açın ve bu dosyadaki <configuration>, </configuration> etiketleri arasına aşağıdaki özellikleri ekleyin.

<configuration> 
   <property>     
      <name>yarn.nodemanager.aux-services</name>     
      <value>mapreduce_shuffle</value>   
   </property> 
</configuration>

mapred-site.xml

Bu dosya hangi MapReduce çerçevesini kullandığımızı belirtmek için kullanılır. Varsayılan olarak, Hadoop bir iplik-site.xml şablonu içerir. Öncelikle dosyanın kopyalanması gerekir.mapred-site,xml.template -e mapred-site.xml aşağıdaki komutu kullanarak dosya.

$ cp mapred-site.xml.template mapred-site.xml

Açık mapred-site.xml dosyasını açın ve <configuration>, </configuration> etiketlerinin içine aşağıdaki özellikleri ekleyin.

<configuration> 
   <property>     
      <name>mapreduce.framework.name</name>     
      <value>yarn</value>   
   </property> 
</configuration>

Hadoop Kurulumunu Doğrulama

Aşağıdaki adımlar Hadoop kurulumunu doğrulamak için kullanılır.

Adım 1: Düğüm Kurulumu Adlandırın

"Hdfs namenode –format" komutunu kullanarak ad kodunu aşağıdaki gibi ayarlayın.

$ cd ~ 
$ hdfs namenode -format

Beklenen sonuç aşağıdaki gibidir.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] STARTUP_MSG:   version = 2.6.4 
... 
... 
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1 
images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

2. Adım: Hadoop dfs'yi doğrulama

Aşağıdaki komut Hadoop dfs'yi başlatmak için kullanılır. Bu komutu çalıştırmak Hadoop dosya sisteminizi başlatacaktır.

$ start-dfs.sh

Beklenen çıktı aşağıdaki gibidir -

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

Adım 3: İplik Komut Dosyasını Doğrulama

İplik komut dosyasını başlatmak için aşağıdaki komut kullanılır. Bu komutu yürütmek İplik şeytanlarınızı başlatacaktır.

$ start-yarn.sh

Beklenen çıktı aşağıdaki gibidir -

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out

4. Adım: Tarayıcıda Hadoop'a Erişim

Hadoop'a erişmek için varsayılan bağlantı noktası numarası 50070'tir. Tarayıcıda Hadoop hizmetlerini almak için aşağıdaki URL'yi kullanın.

http://localhost:50070/

Solr'ı Hadoop'a Kurmak

Solr'ı indirmek ve kurmak için aşağıda verilen adımları izleyin.

Aşama 1

Aşağıdaki bağlantıya tıklayarak Apache Solr ana sayfasını açın - https://lucene.apache.org/solr/

Adım 2

Tıkla download button(yukarıdaki ekran görüntüsünde vurgulanmıştır). Tıkladığınızda, Apache Solr'ın çeşitli aynalarının bulunduğu sayfaya yönlendirileceksiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi, sizi Apache Solr'un kaynak ve ikili dosyalarını indirebileceğiniz bir sayfaya yönlendirecek bir ayna seçin ve üzerine tıklayın.

Aşama 3

Tıklandığında, adlı bir klasör Solr-6.2.0.tqzsisteminizin indirilenler klasörüne indirilecektir. İndirilen klasörün içeriğini çıkarın.

4. adım

Hadoop ana dizininde Solr adlı bir klasör oluşturun ve aşağıda gösterildiği gibi çıkarılan klasörün içeriğini bu klasöre taşıyın.

$ mkdir Solr 
$ cd Downloads 
$ mv Solr-6.2.0 /home/Hadoop/

Doğrulama

Göz atın bin Solr Home dizininin klasörüne gidin ve kurulumu kullanarak version seçeneği, aşağıdaki kod bloğunda gösterildiği gibi.

$ cd bin/ 
$ ./Solr version 
6.2.0

Ev ve yolu belirleme

.bashrc aşağıdaki komutu kullanarak dosya -

[Hadoop@localhost ~]$ source ~/.bashrc

Şimdi Apache Solr için ev ve yol dizinlerini aşağıdaki gibi ayarlayın -

export SOLR_HOME = /home/Hadoop/Solr  
export PATH = $PATH:/$SOLR_HOME/bin/

Terminali açın ve aşağıdaki komutu uygulayın -

[Hadoop@localhost Solr]$ source ~/.bashrc

Artık Solr komutlarını herhangi bir dizinden çalıştırabilirsiniz.

Bu bölümde Apache Solr'un mimarisini tartışacağız. Aşağıdaki çizim Apache Solr mimarisinin bir blok diyagramını göstermektedir.

Solr Mimarlık ─ Yapı Taşları

Apache Solr'un ana yapı taşları (bileşenleri) aşağıdadır -

  • Request Handler- Apache Solr'a gönderdiğimiz istekler bu istek işleyicileri tarafından işlenir. İstekler, sorgu istekleri veya dizin güncelleme istekleri olabilir. Gereksinimimize bağlı olarak, istek işleyicisini seçmemiz gerekir. Solr'a bir istek iletmek için, genellikle işleyiciyi belirli bir URI uç noktasına eşleriz ve belirtilen istek onun tarafından sunulur.

  • Search Component- Arama bileşeni, Apache Solr'da sağlanan bir arama türüdür (özelliğidir). Yazım denetimi, sorgu, modelleme, tıklama vurgulama vb. Olabilir. Bu arama bileşenleri şu şekilde kaydedilir:search handlers. Bir arama işleyicisine birden fazla bileşen kaydedilebilir.

  • Query Parser- Apache Solr sorgu ayrıştırıcısı, Solr'a ilettiğimiz sorguları ayrıştırır ve sözdizimsel hatalar için sorguları doğrular. Sorguları ayrıştırdıktan sonra, onları Lucene'nin anlayacağı bir biçime çevirir.

  • Response Writer- Apache Solr'daki bir yanıt yazıcısı, kullanıcı sorguları için biçimlendirilmiş çıktı üreten bileşendir. Solr, XML, JSON, CSV, vb. Gibi yanıt biçimlerini destekler. Her yanıt türü için farklı yanıt yazarlarımız vardır.

  • Analyzer/tokenizer- Lucene, verileri belirteçler biçiminde tanır. Apache Solr içeriği analiz eder, bunları belirteçlere böler ve bu belirteçleri Lucene'ye iletir. Apache Solr'daki bir analizör, alanların metnini inceler ve bir belirteç akışı oluşturur. Bir jetonlaştırıcı, analizör tarafından hazırlanan jeton akışını jetonlara böler.

  • Update Request Processor - Apache Solr'a bir güncelleme isteği gönderdiğimizde, istek topluca olarak bilinen bir dizi eklenti (imza, günlük kaydı, indeksleme) aracılığıyla çalıştırılır. update request processor. Bu işlemci, bir alanı düşürmek, bir alan eklemek gibi değişikliklerden sorumludur.

Bu bölümde, Solr üzerinde çalışırken sıklıkla kullanılan bazı terimlerin gerçek anlamını anlamaya çalışacağız.

Genel Terminoloji

Aşağıda, tüm Solr kurulum türlerinde kullanılan genel terimlerin bir listesi verilmiştir -

  • Instance - Tıpkı bir tomcat instance veya a jetty instancebu terim, bir JVM içinde çalışan uygulama sunucusunu ifade eder. Solr'un ana dizini, bir veya daha fazla çekirdeğin her durumda çalışacak şekilde yapılandırılabildiği bu Solr örneklerinin her birine referans sağlar.

  • Core - Uygulamanızda birden çok dizin çalıştırırken, her biri bir çekirdeğe sahip birden çok örnek yerine her durumda birden çok çekirdeğiniz olabilir.

  • Home - $ SOLR_HOME terimi, çekirdekler ve bunların indeksleri, konfigürasyonları ve bağımlılıkları ile ilgili tüm bilgileri içeren ana dizini ifade eder.

  • Shard - Dağıtılmış ortamlarda, veriler, her veri parçasının bir veri yığını olarak adlandırılabildiği birden çok Solr örneği arasında bölümlenir. Shard. Tüm dizinin bir alt kümesini içerir.

SolrCloud Terminolojisi

Daha önceki bir bölümde, Apache Solr'un bağımsız modda nasıl kurulacağını tartışmıştık. Solr'ı ayrıca bir master-slave modelinde Solr'un kurulu olduğu dağıtılmış modda (bulut ortamı) kurabileceğimizi unutmayın. Dağıtılmış modda, dizin ana sunucuda oluşturulur ve bir veya daha fazla bağımlı sunucuya kopyalanır.

Solr Cloud ile ilişkili temel terimler aşağıdaki gibidir -

  • Node - Solr bulutunda, her bir Solr örneği bir node.

  • Cluster - Ortamın tüm düğümleri bir araya geldiğinde bir cluster.

  • Collection - Bir kümenin bir mantıksal indeksi vardır ve collection.

  • Shard - Parça, dizinin bir veya daha fazla kopyasına sahip olan koleksiyonun bir parçasıdır.

  • Replica - Solr Core'da, bir düğümde çalışan bir parçanın kopyası, replica.

  • Leader - Ayrıca Solr Cloud'un isteklerini kalan kopyalara dağıtan bir parçanın kopyasıdır.

  • Zookeeper - Solr Cloud'un merkezi konfigürasyon ve koordinasyon, kümeyi yönetmek ve bir lider seçmek için kullandığı bir Apache projesidir.

Yapılandırma Dosyaları

Apache Solr'daki ana yapılandırma dosyaları aşağıdaki gibidir -

  • Solr.xml- Solr Cloud ile ilgili bilgileri içeren $ SOLR_HOME dizinindeki dosyadır. Çekirdekleri yüklemek için Solr, onları tanımlamaya yardımcı olan bu dosyaya başvurur.

  • Solrconfig.xml - Bu dosya, istek işleme ve yanıt biçimlendirmeyle ilgili tanımları ve çekirdeğe özgü yapılandırmaları, ayrıca indeksleme, yapılandırma, bellek yönetimi ve taahhütleri içerir.

  • Schema.xml - Bu dosya, alanlar ve alan türleriyle birlikte tüm şemayı içerir.

  • Core.properties- Bu dosya çekirdeğe özel konfigürasyonları içerir. İçin yönlendirilircore discovery, çekirdek adını ve veri dizininin yolunu içerdiğinden. Herhangi bir dizinde kullanılabilir ve daha sonracore directory.

Solr Başlangıç

Solr'u kurduktan sonra, bin Solr ana dizinindeki klasörü ve aşağıdaki komutu kullanarak Solr'ı başlatın.

[Hadoop@localhost ~]$ cd   
[Hadoop@localhost ~]$ cd Solr/ 
[Hadoop@localhost Solr]$ cd bin/ 
[Hadoop@localhost bin]$ ./Solr start

Bu komut arka planda Solr'ı başlatır ve aşağıdaki mesajı görüntüleyerek 8983 numaralı bağlantı noktasını dinler.

Waiting up to 30 seconds to see Solr running on port 8983 [\]   
Started Solr server on port 8983 (pid = 6035). Happy searching!

Solr'ı ön planda başlatma

Eğer başlarsan Solr kullanmak startkomut, ardından Solr arka planda başlayacaktır. Bunun yerine, Solr'ı ön planda kullanarak başlatabilirsiniz.–f option.

[Hadoop@localhost bin]$ ./Solr start –f  

5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/extraction/lib/xmlbeans-2.6.0.jar' to 
classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/dist/Solr-cell-6.2.0.jar' to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/carrot2-guava-18.0.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/attributes-binder1.3.1.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/simple-xml-2.7.1.jar' 
to classloader 
…………………………………………………………………………………………………………………………………………………………………………………………………………… 
…………………………………………………………………………………………………………………………………………………………………………………………………. 
12901 INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] o.a.s.u.UpdateLog 
Took 24.0ms to seed version buckets with highest version 1546058939881226240 12902 
INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] 
o.a.s.c.CoreContainer registering core: Solr_sample 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.u.UpdateLog Took 
16.0ms to seed version buckets with highest version 1546058939894857728 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.c.CoreContainer 
registering core: my_core

Solr'ı başka bir bağlantı noktasında başlatma

Kullanma –p option of start komutunda Solr'ı aşağıdaki kod bloğunda gösterildiği gibi başka bir portta başlatabiliriz.

[Hadoop@localhost bin]$ ./Solr start -p 8984  

Waiting up to 30 seconds to see Solr running on port 8984 [-]   
Started Solr server on port 8984 (pid = 10137). Happy searching!

Solr Durduruluyor

Solr'ı kullanarak durdurabilirsiniz. stop komut.

$ ./Solr stop

Bu komut Solr'u durdurur ve aşağıda gösterildiği gibi bir mesaj görüntüler.

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6035 to stop gracefully.

Solr yeniden başlatılıyor

restartSolr komutu Solr'u 5 saniye durdurur ve yeniden başlatır. Solr'ı aşağıdaki komutu kullanarak yeniden başlatabilirsiniz -

./Solr restart

Bu komut, aşağıdaki mesajı görüntüleyerek Solr'ı yeniden başlatır -

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6671 to stop gracefully. 
Waiting up to 30 seconds to see Solr running on port 8983 [|]  [/]   
Started Solr server on port 8983 (pid = 6906). Happy searching!

Solr ─ yardım Komutu

help Solr komutu, Solr komut isteminin ve seçeneklerinin kullanımını kontrol etmek için kullanılabilir.

[Hadoop@localhost bin]$ ./Solr -help  

Usage: Solr COMMAND OPTIONS        
   where COMMAND is one of: start, stop, restart, status, healthcheck, 
create, create_core, create_collection, delete, version, zk  
Standalone server example (start Solr running in the background on port 8984):  
   ./Solr start -p 8984  
SolrCloud example (start Solr running in SolrCloud mode using localhost:2181 
to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):  
   ./Solr start -c -m 1g -z localhost:2181 -a "-Xdebug -
   Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 1044"  
Pass -help after any COMMAND to see command-specific usage information,   
such as: ./Solr start -help or ./Solr stop -help

Solr ─ durum Komutu

Bu statusSolr komutu, bilgisayarınızda çalışan Solr örneklerini aramak ve bulmak için kullanılabilir. Size bir Solr örneği hakkında sürümü, bellek kullanımı vb. Bilgiler sağlayabilir.

Aşağıdaki durum komutunu kullanarak bir Solr örneğinin durumunu kontrol edebilirsiniz -

[Hadoop@localhost bin]$ ./Solr status

Yürütüldüğünde, yukarıdaki komut Solr'nin durumunu aşağıdaki gibi gösterir -

Found 1 Solr nodes:   

Solr process 6906 running on port 8983 {   
   "Solr_home":"/home/Hadoop/Solr/server/Solr",   
   "version":"6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 - 
   mike - 2016-08-20 05:41:37",   
   "startTime":"2016-09-20T06:00:02.877Z",   
   "uptime":"0 days, 0 hours, 5 minutes, 14 seconds",   
   "memory":"30.6 MB (%6.2) of 490.7 MB"
}

Solr Yöneticisi

Apache Solr'u başlattıktan sonra, ana sayfasını ziyaret edebilirsiniz. Solr web interface aşağıdaki URL'yi kullanarak.

Localhost:8983/Solr/

Solr Admin'in arayüzü aşağıdaki gibi görünür -

Bir Solr Çekirdeği, onu kullanmak için gerekli tüm Solr yapılandırma dosyalarını içeren bir Lucene dizininin çalışan bir örneğidir. İndeksleme ve analiz gibi işlemleri gerçekleştirmek için bir Solr Core oluşturmamız gerekiyor.

Bir Solr uygulaması bir veya birden fazla çekirdek içerebilir. Gerekirse, bir Solr uygulamasındaki iki çekirdek birbiriyle iletişim kurabilir.

Bir Çekirdek Oluşturmak

Solr'ı kurup başlattıktan sonra, Solr istemcisine (web arayüzü) bağlanabilirsiniz.

Aşağıdaki ekran görüntüsünde vurgulandığı gibi, başlangıçta Apache Solr'da çekirdek yoktur. Şimdi, Solr'da nasıl çekirdek oluşturulacağını göreceğiz.

Oluştur komutunu kullanma

Bir çekirdek oluşturmanın bir yolu, schema-less core kullanmak create komut, aşağıda gösterildiği gibi -

[Hadoop@localhost bin]$ ./Solr create -c Solr_sample

Burada adında bir çekirdek oluşturmaya çalışıyoruz Solr_sampleApache Solr'da. Bu komut, aşağıdaki mesajı görüntüleyen bir çekirdek oluşturur.

Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/Solr_sample 

Creating new core 'Solr_sample' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=Solr_sample&instanceD 
ir = Solr_sample {  
   "responseHeader":{    
      "status":0,    
      "QTime":11550
   },  
   "core":"Solr_sample" 
}

Solr'da birden fazla çekirdek oluşturabilirsiniz. Solr Admin'in sol tarafında, bircore selector Aşağıdaki ekran görüntüsünde gösterildiği gibi yeni oluşturulan çekirdeği seçebilirsiniz.

Create_core komutunu kullanma

Alternatif olarak, kullanarak bir çekirdek oluşturabilirsiniz. create_corekomut. Bu komut aşağıdaki seçeneklere sahiptir -

–C core_name Oluşturmak istediğiniz çekirdeğin adı
-p port_name Çekirdeği oluşturmak istediğiniz bağlantı noktası
-d conf_dir Bağlantı noktasının yapılandırma dizini

Nasıl kullanabileceğinizi görelim create_corekomut. Burada adında bir çekirdek oluşturmaya çalışacağız.my_core.

[Hadoop@localhost bin]$ ./Solr create_core -c my_core

Yürütüldüğünde, yukarıdaki komut aşağıdaki mesajı görüntüleyen bir çekirdek oluşturur -

Copying configuration to new core instance directory: 
/home/Hadoop/Solr/server/Solr/my_core  

Creating new core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=my_core&instanceD
ir = my_core {  
   "responseHeader":{  
      "status":0,  
      "QTime":1346
   },  
   "core":"my_core" 
}

Bir Çekirdeği Silme

Bir çekirdeği silebilirsiniz. deleteApache Solr komutu. Diyelim ki bir çekirdeğimiz varmy_core Solr'de, aşağıdaki ekran görüntüsünde gösterildiği gibi.

Bu çekirdeği kullanarak silebilirsiniz. delete Çekirdeğin adını bu komuta aşağıdaki gibi ileterek komut verin -

[Hadoop@localhost bin]$ ./Solr delete -c my_core

Yukarıdaki komutu yürütürken, belirtilen çekirdek aşağıdaki mesajı görüntüleyerek silinecektir.

Deleting core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=UNLOAD&core = my_core&deleteIndex
   = true&deleteDataDir = true&deleteInstanceDir = true  {
   
   "responseHeader" :{    
      "status":0,    
      "QTime":170
   }
}

Çekirdeğin silinip silinmediğini doğrulamak için Solr'ın web arayüzünü açabilirsiniz.

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 bir 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 kullanmak.
  • Kullanmak post tool.

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

Posta Komutu Kullanarak Belgeleri Ekleme

Solr bir post onun içinde komut 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 belgesinin nasıl indeksleneceğini 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 İçeride, Ü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ı uygulayarak 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

Önceki bölümde JSON ve .CSV dosya formatlarında olan Solr'a nasıl veri ekleneceğini anlatmıştık. Bu bölümde, XML belge biçimini kullanarak Apache Solr dizinine nasıl veri ekleneceğini göstereceğiz.

Örnek veri

XML dosya formatını kullanarak aşağıdaki verileri Solr indeksine eklememiz gerektiğini varsayalım.

Öğrenci Kimliği İsim Soyadı 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

XML Kullanarak Belge Ekleme

Yukarıdaki verileri Solr indeksine eklemek için aşağıda gösterildiği gibi bir XML belgesi hazırlamamız gerekiyor. Bu belgeyi şu adla bir dosyaya kaydedinsample.xml.

<add> 
   <doc> 
      <field name = "id">001</field> 
      <field name = "first name">Rajiv</field> 
      <field name = "last name">Reddy</field> 
      <field name = "phone">9848022337</field> 
      <field name = "city">Hyderabad</field> 
   </doc>  
   <doc> 
      <field name = "id">002</field> 
      <field name = "first name">Siddarth</field> 
      <field name = "last name">Battacharya</field> 
      <field name = "phone">9848022338</field> 
      <field name = "city">Kolkata</field> 
   </doc>  
   <doc> 
      <field name = "id">003</field> 
      <field name = "first name">Rajesh</field> 
      <field name = "last name">Khanna</field> 
      <field name = "phone">9848022339</field> 
      <field name = "city">Delhi</field> 
   </doc>  
   <doc> 
      <field name = "id">004</field> 
      <field name = "first name">Preethi</field> 
      <field name = "last name">Agarwal</field> 
      <field name = "phone">9848022330</field> 
      <field name = "city">Pune</field> 
   </doc>  
   <doc> 
      <field name = "id">005</field> 
      <field name = "first name">Trupthi</field> 
      <field name = "last name">Mohanthy</field> 
      <field name = "phone">9848022336</field> 
      <field name = "city">Bhuwaeshwar</field> 
   </doc> 
   <doc> 
      <field name = "id">006</field> 
      <field name = "first name">Archana</field> 
      <field name = "last name">Mishra</field> 
      <field name = "phone">9848022335</field> 
      <field name = "city">Chennai</field> 
   </doc> 
</add>

Gördüğünüz gibi, dizine veri eklemek için yazılan XML dosyası, <add> </add>, <doc> </doc> ve <field> </ field> olmak üzere üç önemli etiket içerir.

  • add- Bu, dizine belge eklemek için kullanılan kök etikettir. Eklenecek bir veya daha fazla belge içerir.

  • doc- Eklediğimiz belgeler <doc> </doc> etiketleri arasına yerleştirilmelidir. Bu belge, alanlar biçiminde verileri içerir.

  • field - Alan etiketi, belgenin alanlarının adını ve değerini içerir.

Belgeyi hazırladıktan sonra, önceki bölümde tartışılan yöntemlerden herhangi birini kullanarak bu belgeyi dizine ekleyebilirsiniz.

XML dosyasının şu dosyada olduğunu varsayalım: bin Solr dizini ve adlı çekirdekte indekslenecek my_core, ardından bunu kullanarak Solr dizinine ekleyebilirsiniz. post aşağıdaki gibi araç -

[Hadoop@localhost bin]$ ./post -c my_core sample.xml

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

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-
core6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool sample.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.201

Doğrulama

Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği seçin my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, istenen verilerin Solr indeksine eklendiğini görebilirsiniz.

Belgeyi XML Kullanarak Güncelleme

Mevcut belgedeki bir alanı güncellemek için kullanılan XML dosyası aşağıdadır. Bunu adıyla bir dosyaya kaydedinupdate.xml.

<add>   
   <doc>     
      <field name = "id">001</field>     
      <field name = "first name" update = "set">Raj</field>     
      <field name = "last name" update = "add">Malhotra</field>     
      <field name = "phone" update = "add">9000000000</field>    
      <field name = "city" update = "add">Delhi</field>   
   </doc> 
</add>

Gördüğünüz gibi, verileri güncellemek için yazılan XML dosyası, tıpkı belge eklemek için kullandığımız dosya gibidir. Ancak tek fark,update alanın özelliği.

Örneğimizde yukarıdaki belgeyi kullanacağız ve belgenin alanlarını id ile güncellemeye çalışacağız. 001.

XML belgesinin binSolr dizini. Adlı çekirdekte bulunan dizini güncellediğimiz içinmy_core, kullanarak güncelleyebilirsiniz post aşağıdaki gibi araç -

[Hadoop@localhost bin]$ ./post -c my_core update.xml

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

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool update.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 update.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.159

Doğrulama

Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütüldüğünde, belgenin güncellendiğini görebilirsiniz.

Belgeyi Java Kullanarak Güncelleme (İstemci API)

Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinUpdatingDocument.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.client.Solrj.request.UpdateRequest; 
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;  

public class UpdatingDocument { 
   public static void main(String args[]) throws SolrServerException, IOException { 
      //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(); 
   
      UpdateRequest updateRequest = new UpdateRequest();  
      updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);    
      SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();  
      
      myDocumentInstantlycommited.addField("id", "002"); 
      myDocumentInstantlycommited.addField("name", "Rahman"); 
      myDocumentInstantlycommited.addField("age","27"); 
      myDocumentInstantlycommited.addField("addr","hyderabad"); 
      
      updateRequest.add( myDocumentInstantlycommited);  
      UpdateResponse rsp = updateRequest.process(Solr); 
      System.out.println("Documents Updated"); 
   } 
}

Terminalde aşağıdaki komutları uygulayarak yukarıdaki kodu derleyin -

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

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

Documents updated

Belgeyi Silme

Belgeleri Apache Solr dizininden silmek için, silinecek belgelerin kimliklerini <delete> </delete> etiketleri arasında belirtmemiz gerekir.

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete>

Burada, bu XML kodu kimlikli belgeleri silmek için kullanılır. 003 ve 005. Bu kodu adıyla bir dosyaya kaydedindelete.xml.

Adlı çekirdeğe ait olan dizinden belgeleri silmek isterseniz my_core, sonra gönderebilirsiniz delete.xml kullanarak dosya post aracı aşağıda gösterildiği gibi.

[Hadoop@localhost bin]$ ./post -c my_core delete.xml

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

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.179

Doğrulama

Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütüldüğünde, belirtilen belgelerin silindiğini görebilirsiniz.

Bir Alanı Silme

Bazen kimlik dışındaki alanlara göre belgeleri silmemiz gerekir. Örneğin şehrin Chennai olduğu belgeleri silmemiz gerekebilir.

Bu tür durumlarda, <query> </query> etiket çifti içindeki alanın adını ve değerini belirtmeniz gerekir.

<delete> 
   <query>city:Chennai</query> 
</delete>

Olarak kaydedin delete_field.xml ve adlı çekirdek üzerinde silme işlemini gerçekleştirin my_core kullanmak post Solr aracı.

[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml

Yukarıdaki komutu yürütürken, aşağıdaki çıktıyı üretir.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete_field.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 delete_field.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.084

Doğrulama

Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, belirtilen alan değeri çiftini içeren belgelerin silindiğini görebilirsiniz.

Tüm Belgelerin Silinmesi

Tıpkı belirli bir alanı silmek gibi, bir dizindeki tüm belgeleri silmek istiyorsanız, aşağıda gösterildiği gibi <query> </ query> etiketleri arasına “:” simgesini iletmeniz yeterlidir.

<delete> 
   <query>*:*</query> 
</delete>

Olarak kaydedin delete_all.xml ve adlı çekirdek üzerinde silme işlemini gerçekleştirin my_core kullanmak post Solr aracı.

[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml

Yukarıdaki komutu yürütürken, aşağıdaki çıktıyı üretir.

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool deleteAll.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/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 deleteAll.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.138

Doğrulama

Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, belirtilen alan değeri çiftini içeren belgelerin silindiğini görebilirsiniz.

Java (İstemci API) kullanarak tüm belgeleri silme

Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinUpdatingDocument.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 DeletingAllDocuments { 
   public static void main(String args[]) throws SolrServerException, IOException {
      //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();   
          
      //Deleting the documents from Solr 
      Solr.deleteByQuery("*");        
         
      //Saving the document 
      Solr.commit(); 
      System.out.println("Documents deleted"); 
   } 
}

Terminalde aşağıdaki komutları uygulayarak yukarıdaki kodu derleyin -

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

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

Documents deleted

Bu bölümde, Java İstemci API kullanılarak verilerin nasıl alınacağını tartışacağız. Adında bir .csv belgemiz olduğunu varsayalımsample.csv aşağıdaki içeriğe sahip.

001,9848022337,Hyderabad,Rajiv,Reddy  
002,9848022338,Kolkata,Siddarth,Battacharya 
003,9848022339,Delhi,Rajesh,Khanna

Bu verileri, adlı çekirdek altında indeksleyebilirsiniz. sample_Solr kullanmak post komut.

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

Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu, isimli bir dosyaya kaydedin.RetrievingData.java.

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrQuery; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.client.Solrj.response.QueryResponse; 
import org.apache.Solr.common.SolrDocumentList;  

public class RetrievingData { 
   public static void main(String args[]) throws SolrServerException, IOException  { 
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();  
      
      //Preparing Solr query 
      SolrQuery query = new SolrQuery();  
      query.setQuery("*:*");  
   
      //Adding the field to be retrieved 
      query.addField("*");  
   
      //Executing the query 
      QueryResponse queryResponse = Solr.query(query);  
   
      //Storing the results of the query 
      SolrDocumentList docs = queryResponse.getResults();    
      System.out.println(docs); 
      System.out.println(docs.get(0)); 
      System.out.println(docs.get(1)); 
      System.out.println(docs.get(2));   
         
      //Saving the operations 
      Solr.commit();         
   } 
}

Terminalde aşağıdaki komutları uygulayarak yukarıdaki kodu derleyin -

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

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

{numFound = 3,start = 0,docs = [SolrDocument{id=001, phone = [9848022337], 
city = [Hyderabad], first_name = [Rajiv], last_name = [Reddy], 
_version_ = 1547262806014820352}, SolrDocument{id = 002, phone = [9848022338], 
city = [Kolkata], first_name = [Siddarth], last_name = [Battacharya], 

_version_ = 1547262806026354688}, SolrDocument{id = 003, phone = [9848022339], 
city = [Delhi], first_name = [Rajesh], last_name = [Khanna], 

_version_ = 1547262806029500416}]} 

SolrDocument{id = 001, phone = [9848022337], city = [Hyderabad], first_name = [Rajiv], 
last_name = [Reddy], _version_ = 1547262806014820352} 

SolrDocument{id = 002, phone = [9848022338], city = [Kolkata], first_name = [Siddarth], 
last_name = [Battacharya], _version_ = 1547262806026354688} 

SolrDocument{id = 003, phone = [9848022339], city = [Delhi], first_name = [Rajesh], 
last_name = [Khanna], _version_ = 1547262806029500416}

Verileri depolamanın yanı sıra, Apache Solr, gerektiğinde ve gerektiğinde geri sorgulama olanağı da sağlar. Solr, içinde depolanan verileri sorgulayabileceğimiz belirli parametreleri sağlar.

Aşağıdaki tabloda, Apache Solr'da bulunan çeşitli sorgu parametrelerini listeledik.

Parametre Açıklama
q Bu, Apache Solr'un ana sorgu parametresidir, belgeler bu parametredeki terimlere benzerlikleriyle puanlanır.
fq Bu parametre, Apache Solr'ın filtre sorgusunu temsil eder ve sonuç kümesini bu filtreyle eşleşen belgeler ile sınırlar.
Başlat Başlangıç ​​parametresi, bir sayfa sonuçları için başlangıç ​​ofsetlerini temsil eder, bu parametrenin varsayılan değeri 0'dır.
satırlar Bu parametre, sayfa başına alınacak belgelerin sayısını temsil eder. Bu parametrenin varsayılan değeri 10'dur.
çeşit Bu parametre, sorgu sonuçlarının sıralanması temel alınarak virgülle ayrılmış alanların listesini belirtir.
fl Bu parametre, sonuç kümesindeki her belge için döndürülecek alanların listesini belirtir.
ağırlık Bu parametre, sonucu görmek istediğimiz yanıt yazıcısının türünü temsil eder.

Apache Solr'u sorgulamak için tüm bu parametreleri seçenek olarak görebilirsiniz. Apache Solr ana sayfasını ziyaret edin. Sayfanın sol tarafında Sorgu seçeneğine tıklayın. Burada, bir sorgunun parametreleri için alanları görebilirsiniz.

Kayıtları Geri Alma

Adlı çekirdekte 3 kaydımız olduğunu varsayalım my_core. Seçili çekirdekten belirli bir kaydı almak için, belirli bir belgenin alanlarının ad ve değer çiftlerini iletmeniz gerekir. Örneğin, alan değeriyle kaydı almak istiyorsanızid, alanın ad-değer çiftini şu şekilde geçirmeniz gerekir - Id:001 parametre değeri olarak q ve sorguyu yürütün.

Aynı şekilde, *: * parametresine bir değer olarak ileterek bir dizindeki tüm kayıtları alabilirsiniz. q, aşağıdaki ekran görüntüsünde gösterildiği gibi.

2 den alınıyor nd rekor

Parametreye değer olarak 2'yi geçerek ikinci kayıttaki kayıtları alabiliriz. start, aşağıdaki ekran görüntüsünde gösterildiği gibi.

Kayıt Sayısının Sınırlandırılması

Kayıt sayısını, bir değer belirterek sınırlayabilirsiniz. rowsparametre. Örneğin, 2 değerini parametreye geçirerek sorgu sonucundaki toplam kayıt sayısını 2 ile sınırlayabiliriz.rows, aşağıdaki ekran görüntüsünde gösterildiği gibi.

Yanıt Yazarı Türü

Parametrenin sağlanan değerlerinden birini seçerek gerekli belge türünde yanıtı alabilirsiniz. wt.

Yukarıdaki örnekte, biz seçtik .csv yanıtı almak için format.

Alanların Listesi

Elde edilen belgelerde belirli alanlara sahip olmak istiyorsak, gerekli alanların listesini virgülle ayrılmış olarak özelliğe bir değer olarak iletmemiz gerekir. fl.

Aşağıdaki örnekte, alanları almaya çalışıyoruz - id, phone, ve first_name.

Apache Solr'da yüz oluşturma, arama sonuçlarının çeşitli kategorilere göre sınıflandırılmasını ifade eder. Bu bölümde, Apache Solr'da bulunan yüz oluşturma türlerini tartışacağız -

  • Query faceting - Mevcut arama sonuçlarında verilen sorguyla da eşleşen belge sayısını döndürür.

  • Date faceting - Belirli tarih aralıklarına düşen belge sayısını döndürür.

Faceting komutları herhangi bir normal Solr sorgu isteğine eklenir ve fasetleme sayıları aynı sorgu yanıtında geri gelir.

Cephe Kaplama Sorgusu Örneği

Alanı kullanma faceting, tüm terimlerin sayılarını veya herhangi bir alandaki yalnızca en iyi terimleri alabiliriz.

Örnek olarak şunu düşünelim: books.csv çeşitli kitaplarla ilgili verileri içeren dosya.

id,cat,name,price,inStock,author,series_t,sequence_i,genre_s 
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice 
and Fire",1,fantasy 

0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice 
and Fire",2,fantasy 

055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice 
and Fire",3,fantasy 

0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi 
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The 
Black Company,1,fantasy 

0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi 
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy 
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of 
Amber,1,fantasy 

0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of 
Prydain,1,fantasy 

080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of 
Prydain,2,fantasy

Bu dosyayı kullanarak Apache Solr'a gönderelim. post aracı.

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

Yukarıdaki komutu yürütürken, verilen belgelerde belirtilen tüm belgeler .csv dosya Apache Solr'a yüklenecektir.

Şimdi sahada çok yönlü bir sorgu yapalım author koleksiyonda / çekirdekte 0 satır ile my_core.

Apache Solr'un web kullanıcı arayüzünü açın ve sayfanın sol tarafındaki onay kutusunu işaretleyin facet, aşağıdaki ekran görüntüsünde gösterildiği gibi.

Onay kutusunu işaretlediğinizde, faset aramasının parametrelerini geçmek için üç metin alanınız daha olacaktır. Şimdi, sorgunun parametreleri olarak aşağıdaki değerleri iletin.

q = *:*, rows = 0, facet.field = author

Son olarak, sorguyu tıklayarak yürütün. Execute Query buton.

Yürütüldüğünde, aşağıdaki sonucu verecektir.

Dizindeki belgeleri yazara göre sınıflandırır ve her yazarın katkıda bulunduğu kitap sayısını belirtir.

Java Client API Kullanarak Faceting

Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinHitHighlighting.java.

import java.io.IOException; 
import java.util.List;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrQuery; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.client.Solrj.request.QueryRequest; 
import org.apache.Solr.client.Solrj.response.FacetField; 
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse; 
import org.apache.Solr.common.SolrInputDocument;  

public class HitHighlighting { 
   public static void main(String args[]) throws SolrServerException, IOException { 
      //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(); 
   
      //String query = request.query;    
      SolrQuery query = new SolrQuery(); 
         
      //Setting the query string 
      query.setQuery("*:*"); 
         
      //Setting the no.of rows 
      query.setRows(0); 
         
      //Adding the facet field 
      query.addFacetField("author");        
         
      //Creating the query request 
      QueryRequest qryReq = new QueryRequest(query); 
      
      //Creating the query response 
      QueryResponse resp = qryReq.process(Solr);  
      
      //Retrieving the response fields 
      System.out.println(resp.getFacetFields()); 
      
      List<FacetField> facetFields = resp.getFacetFields(); 
      for (int i = 0; i > facetFields.size(); i++) { 
         FacetField facetField = facetFields.get(i); 
         List<Count> facetInfo = facetField.getValues(); 
         
         for (FacetField.Count facetInstance : facetInfo) { 
            System.out.println(facetInstance.getName() + " : " + 
               facetInstance.getCount() + " [drilldown qry:" + 
               facetInstance.getAsFilterQuery()); 
         } 
         System.out.println("Hello"); 
      } 
   } 
}

Terminalde aşağıdaki komutları uygulayarak yukarıdaki kodu derleyin -

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

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

[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac 
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]