3.7 Weitere Einstellungen

Im Folgenden werden einige weitere Parameter für die Indexierung erläutert.

3.7.1 Parameter: addSortField

Falls true, wird zusätzlich zum konfigurierten Metadatenfeld ein zweites Feld geschrieben, das für die Sortierung von Suchtreffern verwendet werden kann. Dabei erhält das zweite Feld den Präfix SORT_ im Namen. Dies ist insbesondere bei Feldern nützlich, deren Name mit dem Präfix MD_ anfängt (MD_ wird dabei durch SORT_ ersetzt). Diese sind im Solr Schema stets so konfiguriert, dass sie mehrere Werte als Liste enthalten können - solche Felder können in Solr nicht für die Sortierung verwendet werden. Zu beachten ist, dass ein Sortierfeld nicht alle gefundenen Werte enthält, sondern nur den ersten (zum Beispiel den ersten Autor eines Werks). Standardwert ist false.

3.7.2 Parameter: addSortFieldToTopstruct

Spezialeinstellung für Metadatenfelder aus LIDO-Events. Sollen Suchtreffer nach einem Metadatenfeld aus einem LIDO-Event sortiert werden können, wird durch die Einstellung true ein Sortierfeld aus diesem Metadatenfeld in das Dokument des Hauptelements geschrieben. Standardwert ist false.

3.7.3 Parameter: addToDefault

Werte: true|false

Falls true, wird der Wert des konfigurierten Metadatenfeldes an das Feld DEFAULT angehängt. Letzteres enthält alle Tokens, nach denen im Goobi viewer gesucht werden kann. Soll ein bestimmtes Metadatum also suchbar sein, muss in der entsprechenden Feldkonfiguration diese Option aktiviert werden. Standardwert ist false.

3.7.4 Parameter: addUntokenizedVersion

Werte: true|false

Metadatenfelder mit Präfix MD_ werden stets in einzelne Tokens (grob gesehen einzelne Wörter einer Zeichenkette) aufgespalten. Damit man ein Feld durchstöbern kann (siehe Stöbern), muss die gesamte Zeichenkette als ein Token vorliegen (andernfalls kann man zum Beispiel keine Haupttitel, sondern nur einzelne Wörter aus Haupttiteln durchstöbern). Hierfür kann zusätzlich zum Metadatenfeld eine Kopie angelegt werden, deren Wert als ein Token vorliegt (diese erhält den Suffix _UNTOKENIZED). Solche Felder können für die Stöbern-Funktion konfiguriert werden. Standardwert ist true.

3.7.5 Parameter:Parameter: groupEntity

Personen und Körperschaften können unter Umständen zusätzliche Metadaten enthalten, wie etwa Lebensdaten beziehungsweise externe Links. Diese Metadaten möchte man evtl. gruppiert anzeigen, um die Zusammengehörigkeit deutlich zu machen.

Hierfür gibt es eine Möglichkeit, zusammengehörende Metadaten, etwa von Personen und Körperschaften, in ein separates Solr Index-Dokument zu schreiben. Diese können dann seitens des Goobi viewers geparst und grafisch entsprechend aufbereitet werden.

Wenn dieses Konfigurationselement auf true gesetzt wird, wird für das betreffende Metadatenfeld die folgende MODS Struktur vorausgesetzt:

mods.xml
<mods:name type="personal" xlink:href=http://de.wikipedia.org/wiki/Eike_von_Repgow valueURI="http://d-nb.info/gnd/118529501">
<mods:namePart type=”family”>&lt;von Repgow&gt;</mods:namePart>
<mods:namePart type=”given”>Eike</mods:namePart>
<mods:namePart type="date">1180 - 1233</mods:namePart>
<mods:role>
<mods:roleTerm authority="marcrelator" type="code">aut</mods:roleTerm>
</mods:role>
<mods:displayForm>&lt;von Repgow&gt;, Eike</mods:displayForm>
</mods:name>

Die Konfiguration erfolgt im Konfigurationselement <groupEntity>. Dieses kann optional das Attribut type enthalten (zulässige Werte: PERSON, CORPORATION, LOCATION, SUBJECT, ORIGININFO, OTHER) das im Goobi viewer unter bestimmten Umständen eine spezielle Behandlung des Metadatums auslösen kann (zum Beispiel die Anzeige eines Personen-Icons bei Suchtreffern, deren ein Personen-Metadatum zugrunde liegt).

solr_indexerconfig.xml
<MD_AUTHOR>
<list>
<item>
<xpath>
<list>
<item>mets:xmlData/mods:mods/mods:name[@type="personal"][mods:role/mods:roleTerm="aut"[@authority='marcrelator'][@type='code']]</item>
</list>
</xpath>
<groupEntity type="PERSON">
<field name="MD_VALUE">mods:displayForm</field>
<field name="MD_LINK">@xlink:href</field>
<field name="MD_CORPORATION">mods:namePart[not(@type)]</field>
<field name="MD_LASTNAME">mods:namePart[@type="family"]</field>
<field name="MD_FIRSTNAME" multivalued="false">mods:namePart[@type="given"]</field>
<field name="MD_LIFEPERIOD">mods:namePart[@type="date"]</field>
<field name="NORM_URI">@valueURI</field>
</groupEntity>
</item>
</list>
</MD_AUTHOR>

Die einzelnen Metadatenfelder innerhalb des Index-Dokuments werden in <field>-Elementen konfiguriert. Das Attribut name beschreibt den gewünschten Namen des Indexfelds innerhalb des Dokuments, der Textwert des <field>-Elements beinhaltet den XPath-Ausdruck des jeweiligen Metadatums.

Mit dem optionalen Attribut multivalued=false kann bewirkt werden, dass nur der erste gefundene Wert des jeweiligen Feldes in den Index übernommen wird. Standardwert ist true.

Die XPath Ausdrücke werden dabei relativ zum Element definiert, das durch den jeweiligen XPath-Ausdruck in einem <item>-Element gefunden wird. Im obigen Beispiel verstehen sich die XPath Ausdrücke in <field>-Elementen relativ zu <mods:name>.

Es sind beliebige Links möglich. Die Darstellungsart mit dem Wikipedia Symbol im obigen Beispiel wurde in messages.properties konfiguriert (siehe Metadaten Konfiguration). Aus technischen Gründen kann jedoch nur eine Darstellungsart pro Solr Feld konfiguriert werden.

Das Unterfeld MD_VALUE enthält den „Hauptwert“ des Metadatums (Etwa den Namen von Personen, Körperschaften und Schlagwörtern. Es ist zwingend erforderlich, damit das gruppierte Metadatum auch in den Index übernommen wird.

Fehlt das Konfigurationselement, wird eine einfache Zeichenkette mit dem Namen der Person beziehungsweise Körperschaft in mods:displayForm erwartet.

3.7.6 Parameter: getnode

Ist der Wert auf first gesetzt, wird nach dem ersten gefundenen Wert für den aktuellen XPath Ausdruck abgebrochen. Zu beachten ist, dass für ein Solr Feld mehrere XPath-Ausdrücke definiert werden können, für die ebenfalls Werte existieren können.

3.7.7 Parameter: getchildren

Ist der Wert auf all gesetzt, werden Werte für dieses Metadatum von allen unmittelbar untergeordneten Strukturelementen mit übernommen.

3.7.8 Parameter: getparents

Ist der Wert auf first gesetzt, werden Werte für dieses Metadatum auch vom unmittelbar übergeordneten Strukturelement mit übernommen. Bei all werden Werte für dieses Metadatum aus allen übergeordneten Strukturelementen bis hin zum obersten übernommen.

3.7.9 Parameter: lowercase

Ist diese Option auf true gesetzt, werden alle Großbuchtstaben in der Zeichenkette durch Kleinbuchstaben ersetzt. Standardwert ist false.

Beispiel:

“Buch Druck” ==> “buch druck”

3.7.10 Parameter: onefield

Falls true, werden alle gefundenen Werte in das Solr Feld als eine Zeichenkette geschrieben. Die Werte werden dabei durch die Zeichenkette "; " separiert. Bei false wird für jeden Wert eine neue Zeichenkette geschrieben. Im letzteren Fall muss das betreffende Feld im Solr Schema so konfiguriert sein, dass Listen aus mehreren Werten erlaubt sind. Standardwert ist false.

3.7.11 Parameter: onetoken / splittingCharacter

Werte (onetoken): true|false
Werte (splittingCharacter): beliebige Zeichenkette

Wenn das Konfigurationselement onetoken auf true gesetzt ist, werden die Werte so aufgearbeitet, dass Solr diese nicht in mehrere Tokens aufteilen kann. Konkret bedeutet das, dass nicht alphanumerische Zeichen entfernt werden. Standardwert ist false.

Beispiel:

"Buch Druck, Hallo Welt" ==> "BuchDruckHalloWelt"

Ist für dieses Feld zusätzlich eine beliebige Zeichenkette im Element splittingCharacter konfiguriert, werden alle Vorkommnisse dieser Zeichenkette durch einen Punkt (.) ersetzt.

Beispiel:

<splittingCharacter>#<splittingCharacter>
"Buch#Druck, Hallo Welt"==> "Buch.DruckHalloWelt"

Diese Konfigurationselemente existieren speziell für die Behandlung von Kollektionsnamen im Goobi viewer (Feld DC) und bringen keinen Mehrwert bei anderen Metadatenfeldern.

3.7.12 Parameter: normalizeYear

Dieses Konfigurationselement ist für Metadatenfelder bestimmt, die Datumsangaben beziehungsweise Jahreszahlen enthalten. Wird dieses Element auf ‘true’ gesetzt, versucht der Goobi viewer Indexer, aus dem Wert dieses Feldes eine normalisierte Jahreszahl (nach dem Muster yyyy) zu extrahieren. Zur Zeit werden reine Jahreszahlen sowie Datumsangaben nach den Mustern dd.MM.yyyy und yyyy-MM-dd erkannt. Alle erkannten Jahreszahlen werden in das Feld YEAR , YEARMONTH und YEARMONTHDAY geschrieben. Zusätzlich wird aus diesen Jahreszahlen noch das jeweilige Jahrhundert berechnet und in das Feld CENTURY geschrieben.

Beide Felder können zum Beispiel für die Facettierung von Suchtreffern verwendet werden. Da es sich um Felder mit mehreren möglichen Werten pro Feld handelt, können sie allerdings nicht für die Suchtreffersortierung verwendet werden. Standardwert ist false.

Optional kann das Attribut <normalizeYear minYearDigits="n"> konfiguriert werden. Der Wert n gibt dabei an, ab wie vielen Ziffern frei stehende Zahlen in einer Zeichenkette als Jahreszahlen interpretiert werden sollen. Mindestwert ist 1. Standardwert ist 3.

3.7.13 Parameter: replace

Dieses Konfigurationselement ersetzt einzelne ASCII Zeichen beziehungsweise Zeichenketten durch eine andere Zeichenkette. Ein zu ersetztes Zeichen wird im Attribut char als ASCII Zahlencode angegeben. Alternativ kann im Attribut string eine Zeichenkette angegeben werden oder im Attribut regex ein Regulärer Ausdruck. Die Zeichenkette, die stattdessen geschrieben werden soll, wird innerhalb des Elements angegeben.

Beispiel 1:

solr_indexerconfig.xml
<replace char="10">&lt;br /&gt;</replace>

Im obigen Beispiel wird ein ASCII-Zeichen für den Zeilenumbruch (10) durch die HTML-Zeichenkette für den Zeilenumbruch ersetzt.

Eine Liste an ASCII Zeichen kann zum Beispiel auf https://ascii.cl/ nachgeschlagen werden.

Beispiel 2:

solr_indexerconfig.xml
<replace string="¬"></replace>

In diesem Beispiel wird das Nichtsortierzeichen ‘¬’ durch nichts ersetzt (das heißt entfernt).

Beispiel 3:

solr_indexerconfig.xml
<replace regex="(.*)\[(.*) (.*)\]">$1[$3 $2]</replace>

In diesem Beispiel werden drei Gruppen gebildet und die zweite und dritte innerhalb der eckigen Klammern vertauscht, zum Beispiel würde aus "Der heilige Stuhl [Max Mustermann]" ein "Der heilige Stuhl [Mustermann Max]" werden.

3.7.14 Parameter: nonSortCharacters

Alternativ zum Ersetzen von Nichtsortierzeichen (siehe Kapitel 3.8.12) kann mit diesem Konfigurationselement die Erkennung von Nichtsortier-Teilen für Metadaten- sowie Sortierfelder konfiguriert werden. Dabei werden für angezeigte Metadatenfelder die Nichtsortierzeichen herausgefiltert, für Sortierfelder wird der gesamte Teil der Zeichenkette, der durch die Nichtsortierzeichen diskriminiert ist, entfernt.

Ist der für die Sortierung des nicht relevanten Teils beidseitig von Nichtsortierzeichen umschlossen, zum Beispiel « und », muss « im Attribut prefix, » im Attribut suffix konfiguriert werden.

Beispiel 1:

mods.xml
<mods:name>
<mods:displayForm>«von» Goethe, Johann Wolfgang</mods:displayForm>
<mods:name>
solr_indexerconfig.xml
<nonSortCharacters prefix="«" suffix="»" />

Ergebnis

<MD_TITLE>von Goethe, Johann Wolfgang</MD_TITLE>
<SORT_TITLE>Goethe, Johann Wolfgang<SORT_TITLE>

Wird der nicht für die Sortierung relevante Teil nur auf einer Seite vom Rest der Zeichenkette getrennt, muss dieses Zeichen nur als prefix (nicht relevanter Teil am Anfang der Zeichenkette) beziehungsweise suffix (nicht relevanter Teil am Ende der Zeichenkette) konfiguriert werden.

Beispiel 2:

mods.xml
<mods:name>
<mods:displayForm>von¬ Goethe, Johann Wolfgang</mods:displayForm>
<mods:name>
solr_indexerconfig.xml
<nonSortCharacters suffix="\u00AC" />

Ergebnis:

<MD_TITLE>von Goethe, Johann Wolfgang</MD_TITLE>
<SORT_TITLE>Goethe, Johann Wolfgang<SORT_TITLE>

3.7.15 Parameter: addToChildren

Ist diese Parameter auf true gesetzt, werden die Werte dieses Metadatums an untergeordnete Strukturtyp-Dokumente vererbt. Dies ist zum Beispiel für Lizenztypen wichtig, die eine Solr-Bedingungsquery verwenden. Die in der Query verwendeten Feldnamen müssen in der Regel diesen Parameter aktiviert haben. Das Feld DC muss diesen Parameter immer aktiviert haben. Standardwert ist false.

3.7.16 Parameter: addToPages

Ist diese Parameter auf true gesetzt, werden die Werte dieses Metadatums an die der jeweiligen Strukturhierarchie zugewiesene Seitendokumenten vererbt. Dies ist zum Beispiel für Lizenztypen wichtig, die eine Solr-Bedingungsquery verwenden. Die in der Query verwendeten Feldnamen müssen in der Regel diesen Parameter aktiviert haben. Und auch Metadatenfelder, die in der erweiterten Suche mit Volltexten kombiniert werden sollen. in den SeitendokumentenDas Feld DC muss diesen Parameter immer aktiviert haben. Standardwert ist false.

3.7.17 Parameter: normalizeValue

solr_indexerconfig.xml
<normalizeValue length="5" filler="0" position="front" regex="foo([0-9]+).*$" />

Insbesondere für Sortierfelder ist es manchmal notwendig, etwa enthaltene Zahlenwerte zu normalisieren, um korrekte Sortierung zu erhalten.

Beispiel: "foo1138bar" und "foo123bar". "123" ist als Zahl kleiner, als "1138", durch die String-Sortierung wird der Wert allerdings hinter "1138" einsortiert, da "11" vor "12" kommt.

Durch die Anwendung der oben beschriebenen Konfiguration wird der Zahlenwert auf fünf Stellen aufgefüllt: "foo00123bar" wird nach der Normalisierung vor "foo01138bar" einsortiert.

Attribut

Beschreibung

length

Die gewünschte Anzahl von Zeichen im normalisierten Teil der Zeichenkette.

filler

Ein Füllzeichen, mit dem bis zur gewünschten Länge aufgefüllt werden soll.

position

Position, an der die Füllzeichen angefügt werden. Mögliche Werte sind front und rear. Standardwert ist front.

regex

Optionaler regulärer Ausdruck, um den für die Normalisierung relevanten Teil zu definieren. Kann bis zu einer Capture Group enthalten (ansonsten wird der gesamte Ausdruck gematcht).