Holen Sie das Beste aus Apache Solr heraus: Eine technische Untersuchung der Suchindizierung

Veröffentlicht: 2023-02-21

Eine Suchfunktion verbessert die Benutzererfahrung einer Website, indem sie es dem Benutzer ermöglicht, das Gesuchte einfach und schnell zu finden. Dies gilt insbesondere für große Websites, E-Commerce-Websites und Websites mit dynamischen Inhalten (Nachrichtenseiten, Blogs).

Apache Solr ist eine der beliebtesten Suchplattformen, die von Websites jeder Größe verwendet wird. Es ist eine auf Java basierende Open-Source-Suchmaschine, mit der Sie große Datenmengen wie Artikel, Produkte, Kundenbewertungen und mehr durchsuchen können. Werfen Sie in diesem Artikel einen tieferen Blick auf Apache Solr.

Lesen Sie diesen Artikel, um zu erfahren, wie Sie Apache Solr in Drupal konfigurieren

Apache Solr

Warum ist Apache Solr so beliebt?

Apache Solr ist schnell und flexibel und ermöglicht Volltextsuche, Trefferhervorhebung (hebt den passenden Suchbegriff hervor), facettierte Suche (eine verfeinerte Suche), Echtzeit-Indizierung (ermöglicht die sofortige Indizierung neuer Inhalte), dynamisches Clustering ( organisiert Suchergebnisse in Gruppen), Datenbankintegration, NoSQL-Features (nicht-relationale Datenbank) und Rich Document Handling (um eine Vielzahl von Dokumentformaten wie PDF, MS Office, Open Office zu indizieren).

Einige wissenswerte Fakten über Apache Solr:

  • Es wurde ursprünglich von CNET Networks, Inc. entwickelt. als Suchmaschine für ihre Websites und Artikel. Später wurde es Open-Source und wurde zu einem Top-Level-Apache-Projekt.
  • Unterstützt mehrere Programmiersprachen wie PHP, Java, Python und Ruby. Es bietet auch APIs für diese Sprachen.
  • Verfügt über eine integrierte Unterstützung für die Geodatensuche, die es ermöglicht, Inhalte basierend auf ihrem Standort zu durchsuchen. Besonders nützlich für Websites wie Immobilien-Websites, Reise-Websites usw.
  • Unterstützt erweiterte Suchfunktionen wie Rechtschreibprüfung, automatische Vervollständigung und benutzerdefinierte Suche über APIs und Plugins.
  • Verwendet Lucene zum Indizieren und Suchen.

Was ist Lucene

Apache Lucene ist eine Open-Source-Java-Suchbibliothek, mit der Sie der Anwendung auf einfache Weise eine Suche oder einen Informationsabruf hinzufügen können. Es ist vielseitig, leistungsstark, genau und arbeitet mit einem effizienten Suchalgorithmus.

Obwohl Lucene für seine Volltextsuchfunktionen bekannt ist, kann es auch für die Dokumentenklassifizierung, Datenanalyse und Informationssuche verwendet werden. Es unterstützt auch viele andere Sprachen als Englisch wie Deutsch, Französisch, Spanisch, Chinesisch, Japanisch und mehr.

Was ist Indizierung?

Alle Suchmaschinen beginnen mit der Indizierung. Indizierung ist die Verarbeitung von Originaldaten in hocheffiziente Querverweissuche, um eine schnelle Suche zu erleichtern.

Suchmaschinen indizieren Daten nicht direkt. Die Texte werden zunächst in Tokens (atomare Elemente) zerlegt. Beim Suchen wird der Suchindex konsultiert und das Dokument abgerufen, das der Abfrage entspricht.

Vorteile der Indizierung

  • Schnelles und genaues Abrufen von Informationen (sammelt, analysiert und speichert)
  • Ohne Indexierung benötigt die Suchmaschine mehr Zeit, um jedes Dokument zu scannen

Indizierungsfluss

Indizierungsfluss

Zunächst wird das Dokument analysiert und in Tokens aufgeteilt. Alle diese Token werden auf den invertierten Index indiziert. Invertierter Index ist eine Methode, mit der Solr den Index erstellt.

So funktioniert die invertierte Indizierung

Nehmen wir an, wir haben 3 Dokumente:

  1. Ich liebe Schokolade (D 1)
  2. Ich bestellte Schokoladenkuchen (D 2)
  3. Ich habe großen Vanillekuchen zubereitet (D 3)

Die Art und Weise, wie es in Tokens umgewandelt wird, ist in der zweiten Spalte der folgenden Tabelle dargestellt.

tokenisiert

„Schokolade“ ist in D1 und D2 erhältlich
„Kuchen“ ist in D2 und D3 erhältlich
„Groß“ ist in D3 verfügbar
„Bestellt“ ist in D2 verfügbar
„Vorbereitet“ ist in D3 verfügbar
„Vanille“ ist in D3 erhältlich

Sie werden feststellen, dass Wörter wie „Ich“, „Liebe“ nicht tokenisiert werden. Diese werden Stoppwörter genannt, die von Solr nicht indiziert oder durchsucht werden können.

Wenn also jemand nach dem Begriff „Chocolate Cake“ sucht, schaut die Engine in den Index. Anstatt nach dem Dokument zu suchen, schaut es zuerst in den Index, um zu sehen, unter welche Dokumente die Wörter „Schokolade“ und „Kuchen“ fallen. Dies macht es einfach und schneller, nur das bestimmte Dokument zu holen. Dies wird als invertierte Indizierung bezeichnet.

Speicherschema

Apache Solr verwendet ein dokumentenbasiertes Speicherschema und speichert alle Daten als separates Dokument innerhalb einer Sammlung. Dies ermöglicht ein effizientes und flexibles Speichern und Abrufen von Daten.

In Drupal wird jeder Knoten als Dokument betrachtet. Wenn Sie also Ihren Knoten für Apache Solr indizieren, wird er als Dokument betrachtet. Jedes Dokument kann mehrere Felder enthalten. Lucene hat kein gemeinsames globales Schema. Das bedeutet, dass Sie jeden Feldtyp in jedem Dokument in Apache Solr indizieren können.

Dokument-1

So installieren Sie Apache Solr

  • Stellen Sie zunächst sicher, dass Java auf Ihrem System installiert ist.
  • Als nächstes installieren wir Solr von hier: https://solr.apache.org/downloads.html
  • Laden Sie Solr herunter und extrahieren Sie es.
  • Führen Sie diesen Befehl für den Solr-Ordner aus.

◦ bin/solr -e techproducts

Dadurch wird ein Dummy-Kern zur Demonstration erstellt und auch der Solr-Server gestartet.

  • Sobald der Server gestartet ist, gehen Sie zu Ihrem Browser und geben Sie „http://localhost:8983/“ ein.
  • Stellen Sie sicher, dass Solr erfolgreich mit Dummy-Core installiert wurde.
Solr

Verzeichnisaufbau

Sobald Sie Solr installiert haben, sehen Sie viele Ordner wie:

Docs - enthält Dokumentation zu Solr
Dist - Solr-Haupt-JAR-Datei
Contrib - enthält Add-On-Plugins und spezielle Funktionen von Solr
Bin - Skripte von Solr
Beispiel - enthält Solr-Fähigkeiten demonstrieren
Server - Herzstück von Solr. Enthält Solr-Webanwendung, Protokolle, Solr-Core

Konfigurationsdateien

Um einen Kern zu erstellen, benötigen wir zwingend zwei Dateien.

  • Schema.xml
  • Solrconfig.xml

Schema.xml

  • Es enthält die Feldtypen, die Sie unterstützen möchten, und wie diese Typen analysiert werden sollten.

Solrconfig.xml

  • Enthält verschiedene Einstellungen, die das Verhalten eines Solr-Kerns steuern, z. B. Anforderungshandler, Anforderungsverteiler, Abfragekomponenten, Update-Handler usw.

Abfragen in Solr

Sehen wir uns nun an, wie die Solr-Ergebnisse in der Solr-Admin-Benutzeroberfläche abgefragt werden.

Abfrageparameter

  • Lokale Parameter sind Argumente in einer Solr-Anforderung, die für einen Abfrageparameter spezifisch sind.

Zum Beispiel: Katze: Elektronik

Abfrageparameter

Abfrageparameter mit Operationen

  • Wir können mehrere Felder mit Operation abfragen.

Zum Beispiel: cat: electronics id:TWINX2048-3200PRO mit q.op AND
[ODER]
Kat: Elektronik UND ID: TWINX2048-3200PRO

Parameteroperationen abfragen

[ODER]

Parameteroperationen abfragen oder

Filterabfrage

Eine Filterabfrage hilft, die Ergebnisse einer Suche einzugrenzen. Mit dem fq-Parameter kann eine Abfrage angegeben werden, um einzuschränken, welche Dokumente in der Obermenge zurückgegeben werden, ohne die Bewertung zu beeinflussen.

Filterabfrage

Sortierparameter

Der Sortierparameter ordnet Suchergebnisse entweder in aufsteigender (asc) oder absteigender (desc) Reihenfolge an. Je nach Inhalt kann der Parameter entweder numerisch oder alphabetisch verwendet werden.

Sortierparameter

Zeilenparameter

Mit dem Parameter rows können Sie die Ergebnisse einer Abfrage paginieren.

Zeilen-Parameter

Feldlistenparameter

Der Parameter fl begrenzt die in einer Abfrageantwort enthaltenen Informationen auf eine bestimmte Liste von Feldern.

Feldlistenparameter

Standardfeld Parameter

Standardfeldparameter ist das Standardfeld für Abfrageparameter.

Standardfeldparameter

Highlights-Parameter

Die Hervorhebungsfunktion in Solr ermöglicht die Einbeziehung von Dokumentenfragmenten, die mit einer Abfrage übereinstimmen.

Hervorhebungsparameter

Einige der häufigsten Highlight-Parameter sind:

  • Hl.fl - Hebt eine Liste von Feldern hervor.
  • Hl.simple.pre - Gibt an, welches "Tag" vor einem hervorgehobenen Wort verwendet werden soll.
  • Hl.simple.post - Gibt an, welches „Tag“ nach einem hervorgehobenen Begriff verwendet werden soll.
  • hl.highlightMultiTerm – Wenn es auf true gesetzt ist, hebt Solr Platzhalterabfragen hervor. Wenn false , werden sie überhaupt nicht hervorgehoben.
Hl Fl

Facette:

Facetten ermöglichen es Benutzern, große Mengen von Suchergebnissen zu durchsuchen und zu verfeinern. Sie werden in einer Benutzeroberfläche als Kontrollkästchen, Dropdowns oder andere Steuerelemente angezeigt. Die beiden allgemeinen Parameter zur Steuerung von Facetten sind:

  1. Facettenparameter

Mit dem Facettenparameter können Benutzer Facetten basierend auf den Werten eines oder mehrerer Felder in ihrem Suchindex generieren. In den Suchergebnissen kann der Facettenparameter konfiguriert werden, um zu steuern, wie Facetten generiert und angezeigt werden.

2. Facet.query-Parameter

Wenn ein Benutzer einen facet.query-Parameter in seine Solr-Abfrage einfügt, generiert Solr eine Liste mit Facettenzahlen, die der Anzahl der Dokumente im Index entsprechen, die mit jeder Abfrage übereinstimmen. Facet.query ist nützlich, wenn Sie Facetten basierend auf komplexen Suchkriterien generieren möchten, die nicht einfach mit einem einfachen Feldwert dargestellt werden können.

Es gibt mehrere andere Facettenparameter wie facet.field (um die Felder anzugeben, die zum Generieren von Facetten verwendet werden sollen) , facet.limit (maximale Anzahl von Facetten, die für jedes Feld angezeigt werden) , facet.mincount (mindeste Anzahl von Dokumenten, die für die Facette, die in die Antwort eingeschlossen werden soll) , facet.sort (gibt die Reihenfolge an, in der die Facettenwerte angezeigt werden sollen) .

Facette

Facette zählt

Abschließende Gedanken

Apache Solr ist eine äußerst vielseitige Suchmaschine mit vielen interessanten Funktionen, die an Ihre Anforderungen angepasst werden können. Drupal funktioniert sehr gut mit Apache Solr. Wenn Sie nach Drupal-Experten suchen, um eine leistungsstarke Suchmaschine für Ihr neues Projekt zu konfigurieren, würden wir gerne weitermachen!