Vorlagen für Solr-Suchanfragen

Für komplexe Suchanfragen, die an den Solr-Suchdienst geschickt werden, können Sie eine Vorlage definieren. Der eingegebene Suchbegriff wird vor dem Absenden der Suchanfrage in diese Vorlage integriert. Auf diese Weise können Sie eine Suchanfrage individuell beeinflussen.

Beispiel mit der Standardvorlage

Standardmäßig wird in der Suche eine Suchvorlage verwendet, die den eingegebenen Suchbegriff weitgehend unverändert an den Suchdienst weitergibt:

Eingabe: boden
Solr-Suchausdruck: full_text:boden

Das Feld full_text ist für eine Volltextsuche vorgesehen. Übersetzt lautet diese Anfrage: "Suche alle Dokumente, die den Begriff boden enthalten".

Die Standard-Suchvorlage für smartfinder ist wie folgt definiert:

{$field}:{$value}
Beispiel mit einer benutzerdefinierten Suchvorlage

Wird eine Suchvorlage verwendet, kann die Suchanfrage z.B. so angepasst werden, dass auf mehreren Feldern gesucht werden kann und jedes Feld eine eigene Gewichtung erhält:

Eingabe-Suchbegriff: boden
Solr-Suchausdruck: title:boden^100 OR description:boden^99

Übersetzt lautet diese Anfrage: "Suche alle Dokumente, die den Term 'boden' im Feld title oder description enthalten. Werte die Ergebnisse mit boden im Feld title höher als im Feld description ".

Mit einer Vorlage können Sie also definieren, auf welchem Feld des Index gesucht wird und wie der Suchbegriff aufbereitet werden soll.

Details zur Konfiguration finden Sie unter Solr Suchanfragen.

Die folgenden Abschnitte geben einen Überblick über die Definition eigener Suchvorlagen.

Syntax der Vorlagen

Eine Vorlage ist eine Zeichenfolge, die einfachen Text sowie Ausdrücke enthalten kann.

Einfacher Text wird unverändert in den Ergebnis-Suchausdruck übernommen.

Ein Ausdruck steht immer innerhalb zweier geschweifter Klammern ({<Ausdruck>}). Er wird zunächst interpretiert, d.h. darin enthaltene Variablen werden ersetzt und Funktionen ausgeführt, bevor das Ergebnis zur Suchabfrage hinzugefügt wird.

Beispiel

Die Vorlage

{$field}:{$value.prefix('*')}

enthält zwei einfache Ausdrücke und den Doppelpunkt (:) zwischen den Ausdrücken als einfachen Text. Wenn $field den Wert "full_text" hat und $value den Wert "wasser", erhalten wir das folgende Ergebnis:

full_text:*water.

Variablen

Ein Ausdruck kann zwei verschiedene Variablen enthalten:

  • $field: Das Suchfeld, in dem das Solr-Backend suchen soll. Diese Variable wird durch den in smart.finder konfigurierten Feldnamen ersetzt.

  • $value: Der Suchbegriff, der durch den Benutzer eingegeben wurde.

Funktionen

Funktionen können innerhalb eines Ausdrucks genutzt werden, um die Variable $value zu transformieren. So kann beispielsweise der Suchbegriff mit einem Präfix oder Suffix versehen werden.

Funktionsaufrufe können durch einen . getrennt miteinander verkettet werden, um verschiedene Operationen auf einer Variable nacheinander auszuführen.

Geschweifte Klammern können nicht als Parameter für die Funktionen verwendet werden.
Funktionsname Beschreibung Parameter Rückgabe Beispiel

split

Teilt den Eingabewert an jedem Vorkommen einer bestimmten Zeichenkette auf.

Das Zeichen, bei dem der Eingabewert aufgeteilt wird. Dieses Zeichen ist in den einzelnen Teilzeichenketten nicht mehr enthalten.

Eine Liste von Werten.

{$value.split(';')}

prefix

Versieht die Eingabewerte mit einem beliebigen Präfix.

Zeichen, die den Eingabewerten vorangestellt werden sollen.

Eine Liste von Werten.

{$value.prefix('*')}

suffix

Versieht die Eingabewerte mit einem beliebigen Suffix.

Zeichen, die den Eingabewerten angehängt werden sollen.

Eine Liste von Werten.

{$value.suffix('*^90')}

join

Verbindet zuvor aufgeteilte Werte wieder zu einer einzelnen Zeichenkette.

Zeichen, die nach dem Verbinden zwischen den einzelnen Teilen stehen sollen.

Eine Liste mit einem Wert.

{$value.join('AND')}

Beispiele

Dieser Abschnitt zeigt einige Beispiele, wie Suchvorlagen aussehen können und wie sie geparst werden.

  1. Diese Vorlage erzeugt eine Solr-Anfrage auf dem Feld title mit dem Suchbegriff der eingegeben wurde. Das konfigurierte Suchfeld wird ignoriert, da die Vorlage keinen Ausdruck mit der Variable $field enthält.

    • Benutzereingabe: climate

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: title:{$value}

    • Ergebnis: title:climate

  2. Diese Vorlage erzeugt eine Solr-Anfrage auf dem konfigurierten Suchfeld full_text mit dem Suchbegriff der eingegeben wurde:

    • Benutzereingabe: climate

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: {$field}:{$value}

    • Ergebnis: full_text:climate

  3. Diese Vorlage teilt die Benutzereingabe an Leerzeichen und verbindet die einzelnen Teile anschließend mit einem AND:

    • Benutzereingabe: climate change

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: full_text:{$value.split(' ').join('AND')}

    • Ergebnis: full_text:climate AND change

  4. Diese Vorlage teilt die Benutzereingabe an Leerzeichen und versieht alle Teile mit einem Sternchen als Suffix. Anschließend werden alle Teile wieder mit einem OR verbunden.

    • Benutzereingabe: climate change

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: full_text:{$value.split(' ').suffix('*').join('OR')}

    • Ergebnis: full_text:climate* OR change*

  5. Dieses Beispiel zeigt eine etwas komplexere Vorlage, in der mehrere $value Variablen genutzt werden und zeigt wie das Solr "boosting" angewandt werden kann.

    • Benutzereingabe: climate change

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: full_text:({$value})^99 OR ({$value.split(' ').suffix('*').join('OR')})^95

    • Ergebnis: full_text:(climate change)^99 OR (climate* OR change*)^95

  6. Dieses Beispiel zeigt wie eine Suchanfrage mit zwei benutzerdefinierten Feldern definiert werden kann.

    • Benutzereingabe: climate

    • Konfiguriertes Suchfeld: full_text

    • Vorlage: title:{$value} OR topic:{$value}

    • Ergebnis: title:climate OR topic: climate