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 Begriffboden
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
oderdescription
enthalten. Werte die Ergebnisse mitboden
im Feldtitle
höher als im Felddescription
".
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 |
---|---|---|---|---|
|
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. |
|
|
Versieht die Eingabewerte mit einem beliebigen Präfix. |
Zeichen, die den Eingabewerten vorangestellt werden sollen. |
Eine Liste von Werten. |
|
|
Versieht die Eingabewerte mit einem beliebigen Suffix. |
Zeichen, die den Eingabewerten angehängt werden sollen. |
Eine Liste von Werten. |
|
|
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. |
|
Beispiele
Dieser Abschnitt zeigt einige Beispiele, wie Suchvorlagen aussehen können und wie sie geparst werden.
-
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
-
-
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
-
-
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
-
-
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*
-
-
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
-
-
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
-