Version: GSB 7SolrQueryAction
Dieses Dokument beinhaltet eine Referenz über die Möglichkeiten zur Konfiguration einer Formularaction. Dabei ist zu beachten, dass GSB-eigene Parameter direkt angegeben werden, Solr Parameter bekommen als Prefix "solr.". Eine genaue Erklärung der Suchsyntax findet man in der Dokumentation von Solr und Lucene
GSB-eigene Konfigurationsparameter
Parameter | Funktion | Beispiel |
inhibitSearch | Verhindert die Ausführung der Suche bei bestimmten Werten von Eingabeparametern |
|
optimizeForTables | Es werden nur die Contentbeans erzeugt, die tatsächlich auch aktuell angezeigt werden, wenn dieser Wert auf true gesetzt wird. Gilt NUR, wenn die Ausgabe in einer generischen Tabelle erfolgt, was immer empfohlen ist, da somit die Suchperformanz erheblich verbessert wird. |
|
useSolrPaging | Steuert die Funktionsweise des Blätterns, sollte auf true stehen, da dies massive Perfomancegewinne bringt. Gilt ebenfalls NUR wenn für die Ausgabe der Ergebnisse in einer generischen Tabelle. |
|
resultsPerPage | Legt die Anzahl der anzuzeigenden Treffer fest, kann im Request überschrieben werden. Wenn die Ausgabe per generischer Tabelle erfolgt, sollte dies im Dokument defineirt werden (siehe auch useSolrPaging). |
|
searchArchive | ||
searchIssued | ||
useSessionCache | Legt fest, ob Suchergebnisse im GSB-Cache gehalten werden sollen. |
|
Grundlegende Solr Query Parameter
Query Parameter | Funktion | Beispiel |
solr.q | Für die Übergabe der Suche |
|
solr.sort | Legt die Sortierreihenfolge fest |
|
solr.rows | Legt die Anzahl der zurückzugebenden Ergebnisse fest |
|
solr.fl | Legt die zurückzugebenden Index-Felder fest |
|
Aufbau von Filter Queries
Query Parameter | Funktion | Beispiel |
solr.fq | Für generelle Einschränkungen des Suchraumes |
|
solr.fq.list | Falls mehr als eine Einschränkung gemacht werden soll,
wird hier eine kommaseparierte Liste mit logischen Namen gepflegt |
|
solr.fq.list.<Name> | Legt die Filter-Query für einen Namen fest |
|
Suchwort-Highlighting
Query Parameter | Funktion | Beispiel |
solr.hl | Soll für das Suchergebnis Highlighting eingeschaltet werden |
|
solr.hl.fl | Legt die Felder fest, auf die das Highlighting angewandt werden soll |
|
solr.hl.fragsize | Legt die Größe der Umgebung fest, die für das Highlighting aus den Feldern extrahiert wird |
|
solr.hl.simple.pre | Legt das HTML-Anfangstag für das Highlighting fest |
|
solr.hl.simple.post | Legt das HTML-Endtag für das Highlighting fest |
|
Eine ausführliche Dokumentation aller Highlighting Parameter findet man in der Solr Dokumentation.
Aufbau von Facetten
Facetten stellen zusätzliche Informationen über die Suche zur Verfügung, ohne die Eigentliche Suche zu verändern. Eine Facette über die Dokumententypen zeigt einem z.B. wie viele Reden, Artikel, etc. in den Suchergebnissen vorhanden sind.
Grundkonfiguration
Query Parameter | Funktion | Beispiel |
solr.facet | Legt fest, ob eine faccettierte Suche ausgeführt wird |
|
solr.facet.sort | Legt die Sortierung der Facettenergebnisse fest |
|
solr.facet.mincount | Legt fest, wieviele Treffer eine Facette mindestens haben muss,
damit sie angezeigt wird |
|
Facetten Definitionen
Query Parameter | Funktion | Beispiel |
solr.facet.list | Eine kommaseparierte Liste mit logischen Namen der Facetten |
|
solr.facet.list.<Name> | Legt die Facette für einen Namen fest |
|
solr.facet.list.<Name>.start | Legt für eine Range Facette den Startwert / Startzeitpunkt fest |
|
solr.facet.list.<Name>.end | Legt für eine Range Facette den Endwert / Endzeitpunkt fest |
|
solr.facet.list.<Name>.gap | Legt für eine Range Facette die Schrittweite fest |
|
Facetten Queries
Query Parameter | Funktion | Beispiel |
solr.facetquery.list | Eine kommaseparierte Liste mit logischen Namen der Facetten-Queries |
|
solr.facetquery.list.<Name> | Legt die Facetten-Query für einen Namen fest |
|
Mapping von Request-Parametern
Generell können Request-Parameter direkt in der Formularaction als Suchparameter benutzt werden. Allerdings bieten sich für häufig genutzte Parameter Suchkonfigurationsdokumente (<ConfigRichText10>
) an. In diesen können auch Angaben gemacht werden, ob die Begriffe verundet oder verodert werden sollen, wie einzelne Query-Bestandteile aufgebaut werden sollen und welche Suchwörter ausgeschlossen werden sollen.
Beispiele:
<syntaxhighlight lang="xml" enclose="div">
- Überprüfe, ob der Request-Parameter templateQueryString nicht leer ist
- if( "$!templateQueryString" != "")
## Hier wird für den gegeben Suchbegriff eine Suche gegen den Inhalt (content) und die Schlagwörter (keywords_str) konfiguriert, ## wobei Dokumente eine höhere Relevanz erhalten, falls der gesuchte Begriff in den Schlagwörtern vorkommt #set($solr_templateQueryStringSimple = "{!type=dismax mm=50% qf='content^1 keywords_str^3'}$templateQueryString")
- end
- Die gleiche Überprüfung wie oben
- if( "$!templateQueryString" != "")
## Ein ähnlicher erzeugter Query-String wie oben, nur die Suchfunktion berechnet das Ergebnis etwas anders #set($solr_templateQueryStringExtended = "{!type=edismax mm=50% qf='content^1 keywords_str^3'}$templateQueryString")
- end
</syntaxhighlight>
Durch das Einbinden dieses Dokuments in der Formularaction kann man nun statt
- solr.q = $templateQueryString
als einfache Suche gegen das Standard-Feld Content eine der beiden gewichteten Suchvarianten benutzen
- solr.q = $solr_templateQueryStringSimple
oder
- solr.q = $solr_templateQueryStringExtended
Für die Suchparamter oneOfTheseWords
und allOfTheseWords
ergibt sich z.B. folgendes Konfigurationsdokument.
<syntaxhighlight lang="xml" enclose="div">
- if( "$!oneOfTheseWords" != "" ) #set($solr_oneOfTheseWords= "{!q.op=OR}" + $oneOfTheseWords)
- end
- if( "$!allOfTheseWords" != "" ) #set($solr_allOfTheseWords= "{!q.op=AND}" + $allOfTheseWords)
- end
</syntaxhighlight>