1.17.2 Facettierung

Es findet automatisch eine Facettierung über die Suchtreffer statt. Die Konfiguration ist wie folgt:

<search>
    <facets>
        <field type="range" style="slider" minValue="MIN" maxValue="MAX">YEAR</field>
        <field type="geo" predicate="IsWithin" displayResultsOnMap="true">WKT_COORDS</field>
        <field type="hierarchical" initialElementNumber="4">DC</field>
        <field>DOCSTRCT_TOP</field>
        <field>DOCSTRCT_SUB</field>
        <field initialElementNumber="10" sortOrder="alphabetical_asc" displayValueFilter="false">MD_CREATOR</field>
        <field initialElementNumber="10" priorityValues="Berlin;Göttingen">MD_PLACEPUBLISH</field>
        <field labelField="MD_LABEL">MD_LOCATION</field>
        <field translateLabels="false">MD_OTHERVALUE</field>
        <field sortOrder="alphabetical" groupToLength="1" alwaysApplyToUnfilteredHits="true" skipInWidget="true">MD_TITLE</field>
        <field multiValueOperator="OR">MD_LANGUAGE</field>
        <field type="boolean" sortOrder="alphabetical_asc" displayValueFilter="false">BOOL_IMAGEAVAILABLE</field>
    </facets>
</search>

Es lassen sich über <field> Elemente beliebig viele zusätzliche Indexfelder für die Facettierung definieren. Zu beachten ist, dass hierfür Felder mit dem Präfix FACET_ im Index existieren sollten, da diese aufgrund Ihrer Konfiguration hierfür effizienter verarbeitet werden. Felder mit dem Präfix FACET_ werden während der Indexierung automatisch für alle MD_* Felder sowie für DC, DOCSTRCT, CENTURY und YEAR generiert. Konfiguriert sollten dennoch die regulären Feldbezeichnungen – die speziellen Facettierungsfelder werden intern automatisch verwendet.

Das Attribut labelField kann ein vom Facettierungsfeld abweichendes Indexfeld für Label-Werte enthalten. So kann etwa bei gruppierten Metadaten, die unterschiedliche Namen einer Stadt (zum Beispiel "Instanbul" und "Konstantinopel") enthalten, über einen gemeinsamen Normwert (zum Beispiel eine URI) facettiert werden. Dabei wird ein aus den verschiedenen Namen zusammengesetzter Wert dem Benutzer angezeigt, und die Facettierung erfolgt über den Normwert.

Mit dem Attribut translateLabels wird gesteuert, ob gelistete Labels der Facetten durch die messages Dateien übersetzt werden sollen. Diese Funktionalität ist standardmäßig aktiv und kann optional ausgeschaltet werden.

Mit dem Attribut displayValueFilter wird gesteuert, ob das Suchfeld zum Filtern der gelisteten Facettierungswerte ein- oder ausgeblendet werden soll. Standard ist true.

Die Felder DOCSTRCT_TOP (Dokumententyp) und DOCSTRCT_SUB (Strukturelement) werden automatisch generiert.

Felder, die hierarchisch dursucht werden (zum Beispiel DC) sollten als <field type="hierarchical"> konfiguriert werden. Das Attribut initialElementNumber="" definiert die Anzahl der nach einer Suche anfänglich angezeigten Facettierungswerte. Alle weiteren werden angezeigt, indem das betreffende Facettierungselement aufgeklappt wird.). Über das Attribut sortOrder="" kann die initiale Sortierung innerhalb der Facettierung gesetzt werden. Mögliche Werte sind alphabetical_asc, alphabetical_desc, numerical_asc und numerical_desc. Ist keine sortOrder gesetzt, wird automatisch nach Vorkommen der Treffer absteigend sortiert. Die Reihenfolge in der Konfigurationsdatei spiegelt die Reihenfolge in der Oberfläche wieder.

Im Attribut priorityValues können (Semikolon-separiert) Werte angegeben werden, die stets oben einsortiert werden sollen, wenn diese Werte vorkommen, unabhängig von der sonstigen Sortierung der Facettierwerte.

Mit dem Attribut groupToLength="1" wird nur der erste Buchstabe angezeigt. Möglich sind hier auch größere Werte. Mit alwaysApplyToUnfilteredHits="true" wird angegeben, dass sich die Facetten immer auf den ganzen Datenbestand beziehen und nicht die akuelle Filterung. Mit skipInWidget="true" kann die Anzeige der Facettierungsoption in der Standardsuche in der Sidebar ausgeblendet werden.

Standardmäßig werden mehrere Facetten mit UND verknüpft. Mit dem Attribut und der Einstellung multiValueOperator="OR" kann das auf ein ODER angepasst werden.

Felder wie YEAR können als <field type="range"> definiert werden und werden dann in Form eines Sliders angezeigt. Über das optionale style="" Attribut mit den Werten slider und graph kann das Widget als klassischer Slider (default) oder die Suchtreffer als Graph angezeigt werden. Außerdem ist es möglich den kleinsten und den größten Wert im Slider mit den Attributen minValue="" und maxValue="" zu begrenzen. Erlaubt sind entweder Zahlen oder die Werte MIN für den kleinsten oder MAX für den größten im Solr Index vorhandenen Wert.

Wird ein <field type="geo"> konfiguriert, muss es den Wert WKT_COORDS haben, das Feld über das eine geospatiale Suche im SOLR ausgeführt werden kann. Dann wird zu jeder Suche ein Kartenwidget angezeigt, durch die sich die Suchtreffer nach geographischen Bereichen facettieren lassen. Mit dem Attribut displayResultsOnMap kann reguliert werden, ob für alle Suchtreffer mit Geokoordinaten Markierungen im Kartenwidget angezeigt werden. Der default ist true.

Dem Element <field type="geo"> kann außerdem ein Attribute predicate angefügt werden, das beschreibt, wie nach Treffern innerhalb eines Bereichs gesucht wird. Es gibt drei mögliche Werte:

  1. IsWithin: Findet nur Treffer, deren sämtliche in WKT_COORDS enthaltenen Objekte - Punkte oder Polygone - vollständig innerhalb des Suchbereichs liegen. Dies ist der Standardwert.

  2. Intersects: Findet alle Treffer, von denen zumindest ein in WKT_COORDS enthaltenes Objekt den Suchbereich irgendwie überschneidet.

  3. Contains: Findet alle Treffer, die zumindest ein Polygon in WKT_COORDS enthalten, das den Suchbereich vollständig enthält.

Felder vom type="boolean" werden als Ja/Nein Widget dargestellt. Der Typ eignet sich nur für Solr Felder, in denen nur true/false Werte stehen, also zum Beispiel FULLTEXTAVAILABLE oder BOOL_IMAGEAVAILABLE.

Last updated