Apache Solr - Kurzanleitung

Solr ist eine Open-Source-Suchplattform, die zum Erstellen verwendet wird search applications. Es wurde darauf gebautLucene(Volltextsuchmaschine). Solr ist unternehmensfähig, schnell und hoch skalierbar. Die mit Solr erstellten Anwendungen sind hochentwickelt und bieten eine hohe Leistung.

Es war Yonik Seelyder Solr im Jahr 2004 erstellt hat, um der Unternehmenswebsite von CNET Networks Suchfunktionen hinzuzufügen. Im Januar 2006 wurde es ein Open-Source-Projekt unter Apache Software Foundation gemacht. Die neueste Version, Solr 6.0, wurde 2016 mit Unterstützung für die Ausführung paralleler SQL-Abfragen veröffentlicht.

Solr kann zusammen mit Hadoop verwendet werden. Da Hadoop eine große Datenmenge verarbeitet, hilft uns Solr dabei, die erforderlichen Informationen aus einer so großen Quelle zu finden. Solr kann nicht nur gesucht, sondern auch zu Speicherzwecken verwendet werden. Wie andere NoSQL-Datenbanken ist es einenon-relational data storage und processing technology.

Kurz gesagt, Solr ist eine skalierbare, einsatzbereite Such- / Speichermaschine, die für die Suche nach großen Mengen textzentrierter Daten optimiert ist.

Funktionen von Apache Solr

Solr ist eine Zusammenfassung der Java-API von Lucene. Daher können Sie mit Solr alle Funktionen von Lucene nutzen. Werfen wir einen Blick auf einige der wichtigsten Merkmale von Solr -

  • Restful APIs- Für die Kommunikation mit Solr sind keine Java-Programmierkenntnisse erforderlich. Stattdessen können Sie erholsame Dienste verwenden, um mit ihm zu kommunizieren. Wir geben Dokumente in Solr in Dateiformaten wie XML, JSON und .CSV ein und erhalten Ergebnisse in denselben Dateiformaten.

  • Full text search - Solr bietet alle Funktionen, die für eine Volltextsuche erforderlich sind, z. B. Token, Phrasen, Rechtschreibprüfung, Platzhalter und automatische Vervollständigung.

  • Enterprise ready - Je nach Bedarf der Organisation kann Solr in allen Arten von Systemen (groß oder klein) eingesetzt werden, z. B. eigenständig, verteilt, in der Cloud usw.

  • Flexible and Extensible - Durch Erweitern der Java-Klassen und entsprechende Konfiguration können wir die Komponenten von Solr einfach anpassen.

  • NoSQL database - Solr kann auch als NOSQL-Datenbank im Big-Data-Maßstab verwendet werden, in der wir die Suchaufgaben entlang eines Clusters verteilen können.

  • Admin Interface - Solr bietet eine benutzerfreundliche, benutzerfreundliche, funktionsbasierte Benutzeroberfläche, über die wir alle möglichen Aufgaben wie das Verwalten von Protokollen, das Hinzufügen, Löschen, Aktualisieren und Durchsuchen von Dokumenten ausführen können.

  • Highly Scalable - Während Sie Solr mit Hadoop verwenden, können Sie die Kapazität durch Hinzufügen von Replikaten skalieren.

  • Text-Centric and Sorted by Relevance - Solr wird meistens zum Durchsuchen von Textdokumenten verwendet und die Ergebnisse werden entsprechend der Relevanz für die Abfrage des Benutzers in der angegebenen Reihenfolge geliefert.

Im Gegensatz zu Lucene benötigen Sie keine Java-Programmierkenntnisse, wenn Sie mit Apache Solr arbeiten. Es bietet einen wunderbaren einsatzbereiten Service zum Erstellen eines Suchfelds mit automatischer Vervollständigung, das Lucene nicht bietet. Mit Solr können wir Indizes für große Anwendungen (Big Data) skalieren, verteilen und verwalten.

Lucene in Suchanwendungen

Lucene ist eine einfache, aber leistungsstarke Java-basierte Suchbibliothek. Es kann in jeder Anwendung verwendet werden, um Suchfunktionen hinzuzufügen. Lucene ist eine skalierbare und leistungsstarke Bibliothek, mit der praktisch jede Art von Text indiziert und durchsucht werden kann. Die Lucene-Bibliothek bietet die Kernoperationen, die für jede Suchanwendung erforderlich sind, zIndexing und Searching.

Wenn wir ein Webportal mit einem großen Datenvolumen haben, benötigen wir höchstwahrscheinlich eine Suchmaschine in unserem Portal, um relevante Informationen aus dem riesigen Datenpool zu extrahieren. Lucene ist das Herzstück jeder Suchanwendung und bietet die wichtigsten Funktionen für die Indizierung und Suche.

Eine Suchmaschine bezieht sich auf eine riesige Datenbank mit Internetressourcen wie Webseiten, Newsgroups, Programmen, Bildern usw. Sie hilft beim Auffinden von Informationen im World Wide Web.

Benutzer können nach Informationen suchen, indem sie Anfragen in Form von Schlüsselwörtern oder Phrasen an die Suchmaschine übergeben. Die Suchmaschine sucht dann in ihrer Datenbank und gibt relevante Links an den Benutzer zurück.

Suchmaschinenkomponenten

Im Allgemeinen gibt es drei grundlegende Komponenten einer Suchmaschine, wie unten aufgeführt:

  • Web Crawler - Webcrawler werden auch als bezeichnet spiders oder bots. Es ist eine Softwarekomponente, die das Web durchläuft, um Informationen zu sammeln.

  • Database- Alle Informationen im Web werden in Datenbanken gespeichert. Sie enthalten eine große Menge an Webressourcen.

  • Search Interfaces- Diese Komponente ist eine Schnittstelle zwischen dem Benutzer und der Datenbank. Es hilft dem Benutzer, die Datenbank zu durchsuchen.

Wie funktionieren Suchmaschinen?

Jede Suchanwendung ist erforderlich, um einige oder alle der folgenden Vorgänge auszuführen.

Schritt Titel Beschreibung

1

Rohinhalt erwerben

Der allererste Schritt einer Suchanwendung besteht darin, die Zielinhalte zu sammeln, für die eine Suche durchgeführt werden soll.

2

Erstellen Sie das Dokument

Der nächste Schritt besteht darin, die Dokumente aus den Rohinhalten zu erstellen, die die Suchanwendung leicht verstehen und interpretieren kann.

3

Analysieren Sie das Dokument

Bevor die Indizierung beginnen kann, muss das Dokument analysiert werden.

4

Indizieren des Dokuments

Sobald die Dokumente erstellt und analysiert wurden, müssen sie im nächsten Schritt indiziert werden, damit dieses Dokument basierend auf bestimmten Schlüsseln anstelle des gesamten Inhalts des Dokuments abgerufen werden kann.

Die Indizierung ähnelt den Indizes am Ende eines Buches, in denen häufig verwendete Wörter mit ihren Seitenzahlen angezeigt werden, damit diese Wörter schnell nachverfolgt werden können, anstatt das gesamte Buch zu durchsuchen.

5

Benutzeroberfläche für die Suche

Sobald eine Datenbank mit Indizes bereit ist, kann die Anwendung Suchvorgänge ausführen. Um dem Benutzer bei der Suche zu helfen, muss die Anwendung eine Benutzeroberfläche bereitstellen, über die der Benutzer Text eingeben und den Suchvorgang starten kann

6

Abfrage erstellen

Sobald der Benutzer eine Anforderung zum Durchsuchen eines Textes stellt, sollte die Anwendung ein Abfrageobjekt unter Verwendung dieses Textes vorbereiten, das dann verwendet werden kann, um die Indexdatenbank abzufragen, um relevante Details zu erhalten.

7

Suchanfrage

Mit dem Abfrageobjekt wird die Indexdatenbank überprüft, um die relevanten Details und die Inhaltsdokumente abzurufen.

8

Ergebnisse rendern

Sobald das gewünschte Ergebnis eingegangen ist, sollte die Anwendung entscheiden, wie die Ergebnisse dem Benutzer über die Benutzeroberfläche angezeigt werden sollen.

Schauen Sie sich die folgende Abbildung an. Es zeigt eine Gesamtansicht der Funktionsweise von Suchmaschinen.

Abgesehen von diesen grundlegenden Vorgängen können Suchanwendungen auch eine Benutzeroberfläche für die Verwaltung bereitstellen, mit deren Hilfe die Administratoren die Suchebene anhand der Benutzerprofile steuern können. Die Analyse der Suchergebnisse ist ein weiterer wichtiger und fortschrittlicher Aspekt jeder Suchanwendung.

In diesem Kapitel wird erläutert, wie Sie Solr in einer Windows-Umgebung einrichten. Um Solr auf Ihrem Windows-System zu installieren, müssen Sie die folgenden Schritte ausführen:

  • Besuchen Sie die Homepage von Apache Solr und klicken Sie auf den Download-Button.

  • Wählen Sie einen der Spiegel aus, um einen Index von Apache Solr zu erhalten. Laden Sie von dort die Datei mit dem Namen herunterSolr-6.2.0.zip.

  • Verschieben Sie die Datei aus dem downloads folder in das gewünschte Verzeichnis und entpacken Sie es.

Angenommen, Sie haben das Solr fie heruntergeladen und auf das Laufwerk C extrahiert. In diesem Fall können Sie Solr wie im folgenden Screenshot gezeigt starten.

Verwenden Sie die folgende URL in Ihrem Browser, um die Installation zu überprüfen.

http://localhost:8983/

Wenn der Installationsvorgang erfolgreich ist, wird das Dashboard der Apache Solr-Benutzeroberfläche wie unten gezeigt angezeigt.

Java-Umgebung einstellen

Wir können auch über Java-Bibliotheken mit Apache Solr kommunizieren. Bevor Sie jedoch über die Java-API auf Solr zugreifen können, müssen Sie den Klassenpfad für diese Bibliotheken festlegen.

Klassenpfad einstellen

Stellen Sie die classpath zu Solr-Bibliotheken in der .bashrcDatei. Öffnen.bashrc in einem der Editoren wie unten gezeigt.

$ gedit ~/.bashrc

Klassenpfad für Solr-Bibliotheken festlegen (lib Ordner in HBase) wie unten gezeigt.

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

Dies soll verhindern, dass beim Zugriff auf die HBase über die Java-API die Ausnahme "Klasse nicht gefunden" auftritt.

Solr kann zusammen mit Hadoop verwendet werden. Da Hadoop eine große Datenmenge verarbeitet, hilft uns Solr dabei, die erforderlichen Informationen aus einer so großen Quelle zu finden. Lassen Sie uns in diesem Abschnitt verstehen, wie Sie Hadoop auf Ihrem System installieren können.

Hadoop herunterladen

Im Folgenden sind die Schritte aufgeführt, die zum Herunterladen von Hadoop auf Ihr System ausgeführt werden müssen.

Step 1- Gehen Sie zur Homepage von Hadoop. Sie können den Link verwenden - www.hadoop.apache.org/ . Klicken Sie auf den LinkReleases, wie im folgenden Screenshot hervorgehoben.

Es wird Sie an die weiterleiten Apache Hadoop Releases Seite, die Links für Spiegel von Quell- und Binärdateien verschiedener Versionen von Hadoop wie folgt enthält:

Step 2 - Wählen Sie die neueste Version von Hadoop aus (in unserem Tutorial ist es 2.6.4) und klicken Sie auf binary link. Sie werden zu einer Seite weitergeleitet, auf der Spiegel für Hadoop-Binärdateien verfügbar sind. Klicken Sie auf einen dieser Spiegel, um Hadoop herunterzuladen.

Laden Sie Hadoop von der Eingabeaufforderung herunter

Öffnen Sie das Linux-Terminal und melden Sie sich als Superuser an.

$ su 
password:

Wechseln Sie in das Verzeichnis, in dem Sie Hadoop installieren müssen, und speichern Sie die Datei dort über den zuvor kopierten Link, wie im folgenden Codeblock gezeigt.

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

Extrahieren Sie Hadoop nach dem Herunterladen mit den folgenden Befehlen.

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

Hadoop installieren

Befolgen Sie zur Installation die folgenden Schritte Hadoop im pseudoverteilten Modus.

Schritt 1: Einrichten von Hadoop

Sie können die Hadoop-Umgebungsvariablen festlegen, indem Sie die folgenden Befehle an anhängen ~/.bashrc Datei.

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

Übernehmen Sie als Nächstes alle Änderungen in das aktuell ausgeführte System.

$ source ~/.bashrc

Schritt 2: Hadoop-Konfiguration

Sie finden alle Hadoop-Konfigurationsdateien unter dem Speicherort "$ HADOOP_HOME / etc / hadoop". Es ist erforderlich, Änderungen an diesen Konfigurationsdateien entsprechend Ihrer Hadoop-Infrastruktur vorzunehmen.

$ cd $HADOOP_HOME/etc/hadoop

Um Hadoop-Programme in Java zu entwickeln, müssen Sie die Java-Umgebungsvariablen in zurücksetzen hadoop-env.sh Datei durch Ersetzen JAVA_HOME Wert mit dem Speicherort von Java in Ihrem System.

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

Im Folgenden finden Sie eine Liste der Dateien, die Sie bearbeiten müssen, um Hadoop zu konfigurieren.

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

core-site.xml

Das core-site.xml Die Datei enthält Informationen wie die für die Hadoop-Instanz verwendete Portnummer, den für das Dateisystem zugewiesenen Speicher, das Speicherlimit zum Speichern der Daten und die Größe der Lese- / Schreibpuffer.

Öffnen Sie die Datei core-site.xml und fügen Sie die folgenden Eigenschaften in die Tags <configuration>, </ configuration> ein.

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

hdfs-site.xml

Das hdfs-site.xml Datei enthält Informationen wie den Wert der Replikationsdaten, namenode Pfad und datanodePfade Ihrer lokalen Dateisysteme. Dies ist der Ort, an dem Sie die Hadoop-Infrastruktur speichern möchten.

Nehmen wir die folgenden Daten an.

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

Öffnen Sie diese Datei und fügen Sie die folgenden Eigenschaften in die Tags <configuration>, </ configuration> ein.

<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 - In der obigen Datei sind alle Eigenschaftswerte benutzerdefiniert und Sie können Änderungen entsprechend Ihrer Hadoop-Infrastruktur vornehmen.

yarn-site.xml

Diese Datei wird verwendet, um Garn in Hadoop zu konfigurieren. Öffnen Sie die Datei yarn-site.xml und fügen Sie die folgenden Eigenschaften zwischen den Tags <configuration>, </ configuration> in dieser Datei hinzu.

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

mapred-site.xml

Diese Datei wird verwendet, um anzugeben, welches MapReduce-Framework wir verwenden. Standardmäßig enthält Hadoop eine Vorlage von yarn-site.xml. Zunächst muss die Datei von kopiert werdenmapred-site,xml.template zu mapred-site.xml Datei mit dem folgenden Befehl.

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

Öffnen mapred-site.xml Datei und fügen Sie die folgenden Eigenschaften in die Tags <configuration>, </ configuration> ein.

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

Überprüfen der Hadoop-Installation

Die folgenden Schritte werden verwendet, um die Hadoop-Installation zu überprüfen.

Schritt 1: Namensknoten-Setup

Richten Sie den Namensknoten mit dem Befehl "hdfs namenode –format" wie folgt ein.

$ cd ~ 
$ hdfs namenode -format

Das erwartete Ergebnis ist wie folgt.

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 
************************************************************/

Schritt 2: Überprüfen des Hadoop-dfs

Der folgende Befehl wird verwendet, um das Hadoop-dfs zu starten. Durch Ausführen dieses Befehls wird Ihr Hadoop-Dateisystem gestartet.

$ start-dfs.sh

Die erwartete Ausgabe ist wie folgt:

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]

Schritt 3: Überprüfen des Garnskripts

Der folgende Befehl wird verwendet, um das Garn-Skript zu starten. Wenn Sie diesen Befehl ausführen, werden Ihre Garn-Dämonen gestartet.

$ start-yarn.sh

Die erwartete Ausgabe wie folgt -

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

Schritt 4: Zugriff auf Hadoop über den Browser

Die Standardportnummer für den Zugriff auf Hadoop ist 50070. Verwenden Sie die folgende URL, um Hadoop-Dienste im Browser abzurufen.

http://localhost:50070/

Solr auf Hadoop installieren

Führen Sie die folgenden Schritte aus, um Solr herunterzuladen und zu installieren.

Schritt 1

Öffnen Sie die Homepage von Apache Solr, indem Sie auf den folgenden Link klicken - https://lucene.apache.org/solr/

Schritt 2

Drücke den download button(im obigen Screenshot hervorgehoben). Beim Klicken werden Sie zu der Seite weitergeleitet, auf der Sie verschiedene Spiegel von Apache Solr haben. Wählen Sie einen Spiegel aus und klicken Sie darauf. Dadurch werden Sie zu einer Seite weitergeleitet, auf der Sie die Quell- und Binärdateien von Apache Solr herunterladen können (siehe folgenden Screenshot).

Schritt 3

Beim Klicken wird ein Ordner mit dem Namen Solr-6.2.0.tqzwird im Download-Ordner Ihres Systems heruntergeladen. Extrahieren Sie den Inhalt des heruntergeladenen Ordners.

Schritt 4

Erstellen Sie einen Ordner mit dem Namen Solr im Hadoop-Ausgangsverzeichnis und verschieben Sie den Inhalt des extrahierten Ordners in den Ordner, wie unten gezeigt.

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

Überprüfung

Durchsuchen Sie die bin Ordner des Solr Home-Verzeichnisses und überprüfen Sie die Installation mit dem version Option, wie im folgenden Codeblock gezeigt.

$ cd bin/ 
$ ./Solr version 
6.2.0

Heimat und Weg setzen

Öffne das .bashrc Datei mit dem folgenden Befehl -

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

Stellen Sie nun die Home- und Pfadverzeichnisse für Apache Solr wie folgt ein:

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

Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

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

Jetzt können Sie die Befehle von Solr aus jedem Verzeichnis ausführen.

In diesem Kapitel werden wir die Architektur von Apache Solr diskutieren. Die folgende Abbildung zeigt ein Blockdiagramm der Architektur von Apache Solr.

Solr-Architektur ─ Bausteine

Im Folgenden sind die wichtigsten Bausteine ​​(Komponenten) von Apache Solr aufgeführt:

  • Request Handler- Die Anforderungen, die wir an Apache Solr senden, werden von diesen Anforderungshandlern verarbeitet. Die Anforderungen können Abfrageanforderungen oder Indexaktualisierungsanforderungen sein. Basierend auf unserer Anforderung müssen wir den Anforderungshandler auswählen. Um eine Anfrage an Solr zu übergeben, ordnen wir den Handler im Allgemeinen einem bestimmten URI-Endpunkt zu, und die angegebene Anfrage wird von ihm bearbeitet.

  • Search Component- Eine Suchkomponente ist eine Art (Funktion) der Suche, die in Apache Solr bereitgestellt wird. Dies kann Rechtschreibprüfung, Abfrage, Facettierung, Hervorhebung von Treffern usw. sein. Diese Suchkomponenten werden als registriertsearch handlers. Mehrere Komponenten können in einem Suchhandler registriert werden.

  • Query Parser- Der Apache Solr-Abfrageparser analysiert die Abfragen, die wir an Solr übergeben, und überprüft die Abfragen auf syntaktische Fehler. Nachdem die Abfragen analysiert wurden, werden sie in ein Format übersetzt, das Lucene versteht.

  • Response Writer- Ein Antwortschreiber in Apache Solr ist die Komponente, die die formatierte Ausgabe für die Benutzerabfragen generiert. Solr unterstützt Antwortformate wie XML, JSON, CSV usw. Wir haben unterschiedliche Antwortschreiber für jeden Antworttyp.

  • Analyzer/tokenizer- Lucene erkennt Daten in Form von Token. Apache Solr analysiert den Inhalt, teilt ihn in Token auf und gibt diese Token an Lucene weiter. Ein Analysator in Apache Solr untersucht den Text von Feldern und generiert einen Token-Stream. Ein Tokenizer zerlegt den vom Analysator vorbereiteten Token-Stream in Token.

  • Update Request Processor - Immer wenn wir eine Aktualisierungsanforderung an Apache Solr senden, wird die Anforderung über eine Reihe von Plugins (Signatur, Protokollierung, Indizierung) ausgeführt, die zusammen als bezeichnet werden update request processor. Dieser Prozessor ist für Änderungen wie das Löschen eines Feldes, das Hinzufügen eines Feldes usw. verantwortlich.

In diesem Kapitel werden wir versuchen, die wahre Bedeutung einiger der Begriffe zu verstehen, die bei der Arbeit an Solr häufig verwendet werden.

Allgemeine Terminologie

Das Folgende ist eine Liste allgemeiner Begriffe, die für alle Arten von Solr-Setups verwendet werden:

  • Instance - Genau wie ein tomcat instance oder ein jetty instanceDieser Begriff bezieht sich auf den Anwendungsserver, der in einer JVM ausgeführt wird. Das Home-Verzeichnis von Solr enthält Verweise auf jede dieser Solr-Instanzen, in denen ein oder mehrere Kerne für die Ausführung in jeder Instanz konfiguriert werden können.

  • Core - Während Sie mehrere Indizes in Ihrer Anwendung ausführen, können Sie in jeder Instanz mehrere Kerne haben, anstatt mehrere Instanzen mit jeweils einem Kern.

  • Home - Der Begriff $ SOLR_HOME bezieht sich auf das Ausgangsverzeichnis, das alle Informationen zu den Kernen und ihren Indizes, Konfigurationen und Abhängigkeiten enthält.

  • Shard - In verteilten Umgebungen werden die Daten auf mehrere Solr-Instanzen aufgeteilt, wobei jeder Datenblock als a aufgerufen werden kann Shard. Es enthält eine Teilmenge des gesamten Index.

SolrCloud-Terminologie

In einem früheren Kapitel haben wir erläutert, wie Apache Solr im Standalone-Modus installiert wird. Beachten Sie, dass wir Solr auch im verteilten Modus (Cloud-Umgebung) installieren können, in dem Solr in einem Master-Slave-Muster installiert ist. Im verteilten Modus wird der Index auf dem Master-Server erstellt und auf einen oder mehrere Slave-Server repliziert.

Die mit Solr Cloud verbundenen Schlüsselbegriffe lauten wie folgt:

  • Node - In der Solr-Cloud wird jede einzelne Instanz von Solr als node.

  • Cluster - Alle Knoten der Umgebung zusammen ergeben a cluster.

  • Collection - Ein Cluster hat einen logischen Index, der als a bezeichnet wird collection.

  • Shard - Ein Shard ist ein Teil der Sammlung, der eine oder mehrere Replikate des Index enthält.

  • Replica - In Solr Core wird eine Kopie des Shards, der in einem Knoten ausgeführt wird, als a bezeichnet replica.

  • Leader - Es ist auch eine Replik von Shard, die die Anforderungen der Solr Cloud an die verbleibenden Replikate verteilt.

  • Zookeeper - Es handelt sich um ein Apache-Projekt, das Solr Cloud zur zentralen Konfiguration und Koordination, zur Verwaltung des Clusters und zur Wahl eines Leiters verwendet.

Konfigurationsdateien

Die Hauptkonfigurationsdateien in Apache Solr lauten wie folgt:

  • Solr.xml- Es ist die Datei im Verzeichnis $ SOLR_HOME, die Informationen zu Solr Cloud enthält. Um die Kerne zu laden, verweist Solr auf diese Datei, die bei der Identifizierung hilft.

  • Solrconfig.xml - Diese Datei enthält die Definitionen und kernspezifischen Konfigurationen für die Bearbeitung von Anforderungen und die Formatierung von Antworten sowie für die Indizierung, Konfiguration, Verwaltung des Speichers und Festschreiben.

  • Schema.xml - Diese Datei enthält das gesamte Schema sowie die Felder und Feldtypen.

  • Core.properties- Diese Datei enthält die für den Kern spezifischen Konfigurationen. Es wird verwiesencore discovery, da es den Namen des Kerns und den Pfad des Datenverzeichnisses enthält. Es kann in jedem Verzeichnis verwendet werden, das dann als das behandelt wirdcore directory.

Solr starten

Navigieren Sie nach der Installation von Solr zu bin Ordner im Solr-Ausgangsverzeichnis und starten Sie Solr mit dem folgenden Befehl.

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

Dieser Befehl startet Solr im Hintergrund und überwacht Port 8983, indem die folgende Meldung angezeigt wird.

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

Solr im Vordergrund starten

Wenn du anfängst Solr Verwendung der startBefehl, dann startet Solr im Hintergrund. Stattdessen können Sie Solr im Vordergrund mit dem starten–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

Starten von Solr an einem anderen Port

Verwenden von –p option des start Befehl können wir Solr an einem anderen Port starten, wie im folgenden Codeblock gezeigt.

[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 stoppen

Sie können Solr mit dem stoppen stop Befehl.

$ ./Solr stop

Dieser Befehl stoppt Solr und zeigt eine Meldung wie unten gezeigt an.

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

Solr neu starten

Das restartBefehl von Solr stoppt Solr für 5 Sekunden und startet es erneut. Sie können Solr mit dem folgenden Befehl neu starten:

./Solr restart

Dieser Befehl startet Solr neu und zeigt die folgende Meldung an:

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 ─ Hilfebefehl

Das help Mit dem Befehl Solr können Sie die Verwendung der Solr-Eingabeaufforderung und ihrer Optionen überprüfen.

[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 ─ Status Befehl

Diese statusMit dem Befehl Solr können Sie die auf Ihrem Computer ausgeführten Solr-Instanzen suchen und herausfinden. Es kann Ihnen Informationen über eine Solr-Instanz wie deren Version, Speichernutzung usw. bereitstellen.

Sie können den Status einer Solr-Instanz mit dem folgenden Statusbefehl überprüfen:

[Hadoop@localhost bin]$ ./Solr status

Bei der Ausführung zeigt der obige Befehl den Status von Solr wie folgt an:

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 Admin

Nach dem Start von Apache Solr können Sie die Homepage von besuchen Solr web interface unter Verwendung der folgenden URL.

Localhost:8983/Solr/

Die Oberfläche von Solr Admin sieht wie folgt aus:

Ein Solr Core ist eine laufende Instanz eines Lucene-Index, der alle zur Verwendung erforderlichen Solr-Konfigurationsdateien enthält. Wir müssen einen Solr Core erstellen, um Vorgänge wie Indizieren und Analysieren ausführen zu können.

Eine Solr-Anwendung kann einen oder mehrere Kerne enthalten. Bei Bedarf können zwei Kerne in einer Solr-Anwendung miteinander kommunizieren.

Einen Kern erstellen

Nach der Installation und dem Start von Solr können Sie eine Verbindung zum Client (Webinterface) von Solr herstellen.

Wie im folgenden Screenshot hervorgehoben, gibt es in Apache Solr zunächst keine Kerne. Jetzt werden wir sehen, wie man in Solr einen Kern erstellt.

Verwenden Sie den Befehl create

Eine Möglichkeit, einen Kern zu erstellen, besteht darin, einen zu erstellen schema-less core Verwendung der create Befehl, wie unten gezeigt -

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

Hier versuchen wir, einen Kern mit dem Namen zu erstellen Solr_samplein Apache Solr. Dieser Befehl erstellt einen Kern mit der folgenden Meldung.

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" 
}

Sie können in Solr mehrere Kerne erstellen. Auf der linken Seite des Solr-Administrators sehen Sie acore selector Hier können Sie den neu erstellten Kern auswählen, wie im folgenden Screenshot gezeigt.

Verwenden des Befehls create_core

Alternativ können Sie mit dem einen Kern erstellen create_coreBefehl. Dieser Befehl hat die folgenden Optionen:

–C core_name Name des Kerns, den Sie erstellen möchten
-p port_name Port, an dem Sie den Kern erstellen möchten
-d conf_dir Konfigurationsverzeichnis des Ports

Mal sehen, wie Sie das verwenden können create_coreBefehl. Hier werden wir versuchen, einen Kern mit dem Namen zu erstellenmy_core.

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

Bei der Ausführung erstellt der obige Befehl einen Kern mit der folgenden Meldung:

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" 
}

Kern löschen

Sie können einen Kern mit dem löschen deleteBefehl von Apache Solr. Nehmen wir an, wir haben einen Kern namensmy_core in Solr, wie im folgenden Screenshot gezeigt.

Sie können diesen Kern mit dem löschen delete Befehl, indem Sie den Namen des Kerns wie folgt an diesen Befehl übergeben:

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

Bei Ausführung des obigen Befehls wird der angegebene Kern gelöscht und die folgende Meldung angezeigt.

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
   }
}

Sie können die Weboberfläche von Solr öffnen, um zu überprüfen, ob der Kern gelöscht wurde oder nicht.

Im Allgemeinen, indexingist eine systematische Anordnung von Dokumenten oder (anderen Entitäten). Durch die Indizierung können Benutzer Informationen in einem Dokument suchen.

  • Durch die Indizierung werden Dokumente gesammelt, analysiert und gespeichert.

  • Die Indizierung wird durchgeführt, um die Geschwindigkeit und Leistung einer Suchabfrage zu erhöhen und gleichzeitig ein erforderliches Dokument zu finden.

Indizierung in Apache Solr

In Apache Solr können wir verschiedene Dokumentformate wie XML, CSV, PDF usw. indizieren (hinzufügen, löschen, ändern). Wir können dem Solr-Index auf verschiedene Arten Daten hinzufügen.

In diesem Kapitel werden wir die Indizierung diskutieren -

  • Verwenden des Solr-Webinterfaces.
  • Verwenden einer der Client-APIs wie Java, Python usw.
  • Verwendung der post tool.

In diesem Kapitel wird erläutert, wie Sie mithilfe verschiedener Schnittstellen (Befehlszeile, Webschnittstelle und Java-Client-API) Daten zum Index von Apache Solr hinzufügen.

Hinzufügen von Dokumenten mit dem Post-Befehl

Solr hat eine post Befehl in seiner bin/Verzeichnis. Mit diesem Befehl können Sie verschiedene Dateiformate wie JSON, XML, CSV in Apache Solr indizieren.

Durchsuchen Sie die bin Verzeichnis von Apache Solr und führen Sie die –h option des post-Befehls, wie im folgenden Codeblock gezeigt.

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie eine Liste der Optionen von post command, Wie nachfolgend dargestellt.

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'

Beispiel

Angenommen, wir haben eine Datei mit dem Namen sample.csv mit folgendem Inhalt (in der bin Verzeichnis).

Studenten ID Vorname Nachname Telefon Stadt
001 Rajiv Reddy 9848022337 Hyderabad
002 Siddharth Bhattacharya 9848022338 Kolkata
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 Bhubaneshwar
006 Archana Mishra 9848022335 Chennai

Der obige Datensatz enthält persönliche Daten wie Studenten-ID, Vorname, Nachname, Telefon und Stadt. Die CSV-Datei des Datensatzes wird unten angezeigt. Hier müssen Sie beachten, dass Sie das Schema erwähnen und seine erste Zeile dokumentieren müssen.

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

Sie können diese Daten unter dem genannten Kern indizieren sample_Solr Verwendung der post Befehl wie folgt -

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

Bei Ausführung des obigen Befehls wird das angegebene Dokument unter dem angegebenen Kern indiziert, wodurch die folgende Ausgabe generiert wird.

/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

Besuchen Sie die Homepage von Solr Web UI unter der folgenden URL:

http://localhost:8983/

Wählen Sie den Kern aus Solr_sample. Standardmäßig ist der Anforderungshandler/selectund die Abfrage lautet ":". Klicken Sie ohne Änderungen aufExecuteQuery Schaltfläche am unteren Rand der Seite.

Beim Ausführen der Abfrage können Sie den Inhalt des indizierten CSV-Dokuments im JSON-Format (Standard) beobachten, wie im folgenden Screenshot gezeigt.

Note - Auf die gleiche Weise können Sie andere Dateiformate wie JSON, XML, CSV usw. indizieren.

Hinzufügen von Dokumenten über das Solr-Webinterface

Sie können Dokumente auch über die von Solr bereitgestellte Weboberfläche indizieren. Lassen Sie uns sehen, wie das folgende JSON-Dokument indiziert wird.

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

Schritt 1

Öffnen Sie die Solr-Weboberfläche unter der folgenden URL:

http://localhost:8983/

Step 2

Wählen Sie den Kern aus Solr_sample. Standardmäßig sind die Werte der Felder Anforderungshandler, Common Within, Overwrite und Boost / update, 1000, true und 1.0, wie im folgenden Screenshot gezeigt.

Wählen Sie nun das gewünschte Dokumentformat aus JSON, CSV, XML usw. aus. Geben Sie das zu indizierende Dokument in den Textbereich ein und klicken Sie auf Submit Document Schaltfläche, wie im folgenden Screenshot gezeigt.

Hinzufügen von Dokumenten mithilfe der Java Client-API

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenAddingDocument.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"); 
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

Documents added

Im vorherigen Kapitel haben wir erklärt, wie Sie Daten zu Solr hinzufügen, die in den Dateiformaten JSON und .CSV vorliegen. In diesem Kapitel wird gezeigt, wie Sie Daten im Apache Solr-Index im XML-Dokumentformat hinzufügen.

Beispieldaten

Angenommen, wir müssen dem Solr-Index die folgenden Daten im XML-Dateiformat hinzufügen.

Studenten ID Vorname Familienname, Nachname Telefon Stadt
001 Rajiv Reddy 9848022337 Hyderabad
002 Siddharth Bhattacharya 9848022338 Kolkata
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 Bhubaneshwar
006 Archana Mishra 9848022335 Chennai

Hinzufügen von Dokumenten mit XML

Um die obigen Daten in den Solr-Index aufzunehmen, müssen wir ein XML-Dokument vorbereiten, wie unten gezeigt. Speichern Sie dieses Dokument in einer Datei mit dem Namensample.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>

Wie Sie sehen können, enthält die XML-Datei, die zum Hinzufügen von Daten zum Index geschrieben wurde, drei wichtige Tags: <add> </ add>, <doc> </ doc> und <field> </ field>.

  • add- Dies ist das Root-Tag zum Hinzufügen von Dokumenten zum Index. Es enthält ein oder mehrere Dokumente, die hinzugefügt werden sollen.

  • doc- Die von uns hinzugefügten Dokumente sollten in die Tags <doc> </ doc> eingeschlossen werden. Dieses Dokument enthält die Daten in Form von Feldern.

  • field - Das Feld-Tag enthält den Namen und den Wert der Felder des Dokuments.

Nach der Vorbereitung des Dokuments können Sie dieses Dokument mit einer der im vorherigen Kapitel beschriebenen Methoden zum Index hinzufügen.

Angenommen, die XML-Datei ist in der vorhanden bin Verzeichnis von Solr und es soll im genannten Kern indiziert werden my_core, dann können Sie es mit dem zum Solr-Index hinzufügen post Werkzeug wie folgt -

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie beobachten, dass die gewünschten Daten zum Solr-Index hinzugefügt werden.

Aktualisieren des Dokuments mit XML

Im Folgenden finden Sie die XML-Datei, mit der ein Feld im vorhandenen Dokument aktualisiert wird. Speichern Sie dies in einer Datei mit dem Namenupdate.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>

Wie Sie sehen können, entspricht die XML-Datei, die zum Aktualisieren von Daten geschrieben wurde, genau der, mit der wir Dokumente hinzufügen. Aber der einzige Unterschied ist, dass wir die verwendenupdate Attribut des Feldes.

In unserem Beispiel verwenden wir das obige Dokument und versuchen, die Felder des Dokuments mit der ID zu aktualisieren 001.

Angenommen, das XML-Dokument ist im vorhanden binVerzeichnis von Solr. Da aktualisieren wir den Index, der im genannten Kern existiertmy_corekönnen Sie mit dem aktualisieren post Werkzeug wie folgt -

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass das Dokument aktualisiert wird.

Aktualisieren des Dokuments mit Java (Client-API)

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenUpdatingDocument.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"); 
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

Documents updated

Dokument löschen

Um Dokumente aus dem Index von Apache Solr zu löschen, müssen Sie die IDs der zu löschenden Dokumente zwischen den Tags <delete> </ delete> angeben.

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

Hier wird dieser XML-Code verwendet, um die Dokumente mit IDs zu löschen 003 und 005. Speichern Sie diesen Code in einer Datei mit dem Namendelete.xml.

Wenn Sie die Dokumente aus dem Index löschen möchten, der zum genannten Kern gehört my_core, dann kannst du das posten delete.xml Datei mit der post Werkzeug, wie unten gezeigt.

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die angegebenen Dokumente gelöscht werden.

Ein Feld löschen

Manchmal müssen wir Dokumente basierend auf anderen Feldern als ID löschen. Zum Beispiel müssen wir möglicherweise die Dokumente löschen, in denen die Stadt Chennai ist.

In solchen Fällen müssen Sie den Namen und den Wert des Felds innerhalb des Tag-Paares <query> </ query> angeben.

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

Speichern Sie es als delete_field.xml und führen Sie den Löschvorgang für den genannten Kern aus my_core Verwendung der post Werkzeug von Solr.

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

Bei Ausführung des obigen Befehls wird die folgende Ausgabe erzeugt.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die Dokumente, die das angegebene Feldwertpaar enthalten, gelöscht werden.

Alle Dokumente löschen

Wenn Sie genau wie beim Löschen eines bestimmten Felds alle Dokumente aus einem Index löschen möchten, müssen Sie nur das Symbol ":" zwischen den Tags <Abfrage> </ Abfrage> übergeben, wie unten gezeigt.

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

Speichern Sie es als delete_all.xml und führen Sie den Löschvorgang für den genannten Kern aus my_core Verwendung der post Werkzeug von Solr.

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

Bei Ausführung des obigen Befehls wird die folgende Ausgabe erzeugt.

/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

Überprüfung

Besuchen Sie die Homepage der Apache Solr-Weboberfläche und wählen Sie den Kern als aus my_core. Versuchen Sie, alle Dokumente abzurufen, indem Sie die Abfrage ":" im Textbereich übergebenqund führen Sie die Abfrage aus. Bei der Ausführung können Sie feststellen, dass die Dokumente, die das angegebene Feldwertpaar enthalten, gelöscht werden.

Löschen aller Dokumente mit Java (Client API)

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenUpdatingDocument.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"); 
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

Documents deleted

In diesem Kapitel wird erläutert, wie Sie Daten mithilfe der Java Client-API abrufen. Angenommen, wir haben ein CSV-Dokument mit dem Namensample.csv mit folgendem Inhalt.

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

Sie können diese Daten unter dem genannten Kern indizieren sample_Solr Verwendung der post Befehl.

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

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenRetrievingData.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();         
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

{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}

Apache Solr speichert nicht nur Daten, sondern bietet auch die Möglichkeit, diese bei Bedarf abzufragen. Solr stellt bestimmte Parameter bereit, mit denen wir die darin gespeicherten Daten abfragen können.

In der folgenden Tabelle haben wir die verschiedenen in Apache Solr verfügbaren Abfrageparameter aufgelistet.

Parameter Beschreibung
q Dies ist der Hauptabfrageparameter von Apache Solr. Dokumente werden anhand ihrer Ähnlichkeit mit Begriffen in diesem Parameter bewertet.
fq Dieser Parameter stellt die Filterabfrage von Apache Solr dar und beschränkt die Ergebnismenge auf Dokumente, die diesem Filter entsprechen.
Start Der Startparameter stellt die Startversätze für Seitenergebnisse dar. Der Standardwert dieses Parameters ist 0.
Reihen Dieser Parameter gibt die Anzahl der Dokumente an, die pro Seite abgerufen werden sollen. Der Standardwert dieses Parameters ist 10.
Sortieren Dieser Parameter gibt die Liste der durch Kommas getrennten Felder an, nach denen die Ergebnisse der Abfrage sortiert werden sollen.
fl Dieser Parameter gibt die Liste der Felder an, die für jedes Dokument in der Ergebnismenge zurückgegeben werden sollen.
Gewicht Dieser Parameter stellt den Typ des Antwortschreibers dar, für den das Ergebnis angezeigt werden soll.

Sie können alle diese Parameter als Optionen zum Abfragen von Apache Solr anzeigen. Besuchen Sie die Homepage von Apache Solr. Klicken Sie auf der linken Seite auf die Option Abfrage. Hier sehen Sie die Felder für die Parameter einer Abfrage.

Aufzeichnungen abrufen

Angenommen, wir haben 3 Datensätze im genannten Kern my_core. Um einen bestimmten Datensatz aus dem ausgewählten Kern abzurufen, müssen Sie die Name- und Wertepaare der Felder eines bestimmten Dokuments übergeben. Zum Beispiel, wenn Sie den Datensatz mit dem Wert des Felds abrufen möchtenidmüssen Sie das Name-Wert-Paar des Feldes als - übergeben Id:001 als Wert für den Parameter q und führen Sie die Abfrage aus.

Auf die gleiche Weise können Sie alle Datensätze aus einem Index abrufen, indem Sie *: * als Wert an den Parameter übergeben q, wie im folgenden Screenshot gezeigt.

Abrufen von dem 2 nd Rekord

Wir können die Datensätze aus dem zweiten Datensatz abrufen, indem wir 2 als Wert an den Parameter übergeben start, wie im folgenden Screenshot gezeigt.

Beschränken der Anzahl der Datensätze

Sie können die Anzahl der Datensätze einschränken, indem Sie einen Wert in angeben rowsParameter. Beispielsweise können wir die Gesamtzahl der Datensätze im Ergebnis der Abfrage auf 2 beschränken, indem wir den Wert 2 an den Parameter übergebenrows, wie im folgenden Screenshot gezeigt.

Typ des Antwortschreibers

Sie können die Antwort im gewünschten Dokumenttyp erhalten, indem Sie einen der angegebenen Werte des Parameters auswählen wt.

Im obigen Fall haben wir die gewählt .csv Format, um die Antwort zu erhalten.

Liste der Felder

Wenn wir bestimmte Felder in den resultierenden Dokumenten haben möchten, müssen wir die durch Kommas getrennte Liste der erforderlichen Felder als Wert an die Eigenschaft übergeben fl.

Im folgenden Beispiel versuchen wir, die Felder abzurufen - id, phone, und first_name.

Facettierung in Apache Solr bezieht sich auf die Klassifizierung der Suchergebnisse in verschiedene Kategorien. In diesem Kapitel werden die in Apache Solr verfügbaren Facettierungstypen erläutert.

  • Query faceting - Es wird die Anzahl der Dokumente in den aktuellen Suchergebnissen zurückgegeben, die auch der angegebenen Abfrage entsprechen.

  • Date faceting - Es wird die Anzahl der Dokumente zurückgegeben, die in bestimmte Datumsbereiche fallen.

Facettierungsbefehle werden zu jeder normalen Solr-Abfrageanforderung hinzugefügt, und die Facettierungszahlen werden in derselben Abfrageantwort zurückgegeben.

Beispiel für eine Facettierungsabfrage

Das Feld benutzen facetingkönnen wir die Anzahl für alle Begriffe oder nur die Top-Begriffe in einem bestimmten Feld abrufen.

Betrachten wir als Beispiel Folgendes books.csv Datei, die Daten zu verschiedenen Büchern enthält.

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

Lassen Sie uns diese Datei mit dem in Apache Solr posten post Werkzeug.

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

Bei Ausführung des obigen Befehls werden alle in dem angegebenen Dokument erwähnt .csv Die Datei wird in Apache Solr hochgeladen.

Lassen Sie uns nun eine facettierte Abfrage für das Feld ausführen author mit 0 Zeilen in der Sammlung / im Kern my_core.

Öffnen Sie die Web-Benutzeroberfläche von Apache Solr und aktivieren Sie das Kontrollkästchen auf der linken Seite facet, wie im folgenden Screenshot gezeigt.

Wenn Sie das Kontrollkästchen aktivieren, haben Sie drei weitere Textfelder, um die Parameter der Facettensuche zu übergeben. Übergeben Sie nun als Parameter der Abfrage die folgenden Werte.

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

Führen Sie abschließend die Abfrage aus, indem Sie auf klicken Execute Query Taste.

Bei der Ausführung wird das folgende Ergebnis angezeigt.

Es kategorisiert die Dokumente im Index nach Autor und gibt die Anzahl der Bücher an, die von jedem Autor beigesteuert wurden.

Facettieren mit der Java Client API

Im Folgenden finden Sie das Java-Programm zum Hinzufügen von Dokumenten zum Apache Solr-Index. Speichern Sie diesen Code in einer Datei mit dem NamenHitHighlighting.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"); 
      } 
   } 
}

Kompilieren Sie den obigen Code, indem Sie die folgenden Befehle im Terminal ausführen:

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

Wenn Sie den obigen Befehl ausführen, erhalten Sie die folgende Ausgabe.

[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)]]