Suchvorlagen
Benutzerdefinierte Suchvorlagen können in der map.apps Smart Search Extension verwendet werden, um einen eingegebenen Suchbegriff in komplexen Anfragen an den Suchdienst einzubauen.
- Beispiel mit Standardvorlage
-
In der Standardsuche der map.apps Smart Search Extension wird eine Suchvorlage verwendet, die den eingegebenen Suchbegriff stark bearbeitet und gewichtet an den Suchdienst weitergibt. Diese Suchvorlage ist die Default-Einstellung:
Eingabe: boden
Suche: full_text:((boden~1) OR (boden*^98) OR ((boden)^100))
Das Feld full_text
ist für eine Volltextsuche vorgesehen. Übersetzt lautet diese Anfrage: "Suche alle Dokumente, die einen ähnlichen Term wie boden
enthalten oder mit boden
beginnen oder den exakten Term boden
enthalten. Der exakte Begriff ist dabei höher zu bewerten als der Term mit Wildcard, welche höher zu bewerten ist als der ähnliche Begriff."
Die Default-Suchvorlage für map.apps Smart Search Extension ist wie folgt definiert:
{$field}:(({$value.split(' ').suffix('~1').join('OR')}) OR ({$value.split(' ').suffix('*^98').join('OR')}) OR (({$value})^100))
- Beispiel mit benutzerdefinierter Suchvorlage
-
Die Standard-Suchvorlage kann z.B. so angepasst werden, dass auf anderen Feldern gesucht werden kann:
Eingabe: boden
Suche: 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 in 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 |
---|---|---|---|---|
|
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
-