2.6 Metadaten
Jedes Metadaten Feld, das im Goobi viewer verwendet werden soll, muss im Goobi viewer Indexer im Konfigurationselement fields
konfiguriert sein. Hierfür wird das folgende Schema verwendet:
Dabei trägt das oberste Element jeweils den Namen des Solr Feldes, in das das konfigurierte Metadatum geschrieben werden soll (hier: PI
).
Feldkonfigurationen, deren Name nicht mit MD_ im anfängt, sind größtenteils Pflichtfelder für den Goobi viewer und dürfen nicht entfernt werden! Für die Konfiguration von Solr Metadatenfeldern werden Grundkenntnisse in XPath vorausgesetzt. Nähere Details hierzu finden sich beispielsweise unter der folgenden Adresse: http://de.wikipedia.org/wiki/XPATH
Änderungen in der Sektion <fields> werden ohne Neustart direkt übernommen.
item
Diese Elemente enthalten XPath Ausdrücke, unter denen das jeweilige Metadatum zu finden ist. Es werden alle angegeben Ausdrücke überprüft, so dass ein Metadatenfeld (falls für mehrere Werte zugelassen) mehrere Werte aus unterschiedlichen XPath Ausdrücken enthalten kann. Im obigen Beispiel ist jeweils ein Ausdruck für METS/MODS sowie für LIDO definiert, das heißt diese Feldkonfiguration ist für beide Formate gültig.
Die Attribute prefix und suffix können optional je ein statisches Prä- beziehungsweise Suffix, das an jeden über den jeweiligen XPath-Ausdruck gefundenen Wert angehängt wird.
Für METS Dokumente kann der Ausdruck entweder relativ zum Element formuliert werden, zum Beispiel:
oder relativ zum obersten Element
Dabei muss die Variante nicht explizit angegeben werden - der Goobi viewer Indexer überprüft alle konfigurierten Ausdrücke relativ zu beiden Knoten.
Bei LIDO werden die XPath Ausdrücke bei allgemeinen Metadaten relativ zum obersten Element formuliert, zum Beispiel
Metadaten von LIDO Events verwenden XPath Ausdrücke relativ zum jeweiligen Event-Element, zum Beispiel:
Im Folgenden werden einige weitere Parameter für die Indexierung erläutert.
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
.
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
.
addToDefault
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
.
addUntokenizedVersion
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
.
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:
Die Konfiguration erfolgt im Konfigurationselement <groupEntity>. Dieses kann optional das Attribut type enthalten (zulässige Werte: PERSON
, CORPORATION
, LOCATION
, SUBJECT
, ORIGININFO
, CITATION
,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).
Das optionale Attribut addAuthorityDataToDocstruct
bewirkt bei der Einstellung true
, dass bestimmte Normdatenwerte (aus externen Datenbanken) nicht im dazugehörigen Page-Doc, sondern in dem Strukturelement-Doc gespeichert werden, zu dem die jeweilige Seite gehört. Dadurch kann auf Wunsch vermieden werden, dass Normdatenwerte, die eingegebene Suchbegriffe enthalten, als Untertreffer dargestellt werden (optische Präferenz). Standardwerst ist false
.
Ähnlich funktioniert das Attribut addCoordsToDocstruct
. Damit werden optional suchbare Geokoordinaten wie zum Beispiel die WKT_*
oder NORM_COORDS_*
Felder in das zugehörige Strukturelement-Doc anstelle des Page-Docs geschrieben. Standardwert ist false
.
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.
Das optionale Attribut addSortField
bewirkt, dass für das Feld ein zusätzliches SORT_*
Field generiert wird. Damit können ggf. mehrere Metadatenwerte innerhalb eines gruppierten Metadatums sortiert werden. Default ist false
.
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
.
Das optionale Attribut defaultValue
kann verwendet werden, um einen Standardwert zu schreiben, falls der XPath-Ausdruck, zu dem das Attribut gehört, keinen Wert liefert. Damit der Standardwert nicht fälschlicherweise zusätzlich zum Wert aus dem XPath-Ausdruck geschrieben wird (etwa wenn ein LIDO-XPath-Ausdruck bei einer Indexierung von METS keinen Wert liefert), sollten für solche Konstellationen am Besten separate <item>
-Elemente konfiguriert werden.
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.
Wenn type="CITATION" konfiguriert ist, kann noch ein url-Attribut konfiguriert werden, um Feldinhalte aus einer externen Quelle einzuholen. In dem unteren Beispiel wird dabei der Wert aus MD_VALUE anstelle des Platzhalters in der URL eingesetzt und so der Datensatz eingeholt. Über die XPath-Ausdrücke der weiteren Unterfelder werden Werte aus dem Primo-Dokument eingeholt.
Mehrstufige gruppierte Metadaten
Es kann vorkommen, dass ein gruppiertes Metadatum weitere gruppierte Metadaten beinahltet (etwa ein Event mit untergeordneten Event-Aktoren). In dem Fall kann ein <groupEntity> Block weitere <groupEntity> Blöcke beinhalten (theoretisch beliebig Tief). Siehe Beispiel uten.
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.
getchildren
Ist der Wert auf all
gesetzt, werden Werte für dieses Metadatum von allen unmittelbar untergeordneten Strukturelementen mit übernommen.
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.
lowercase
Ist diese Option auf true
gesetzt, werden alle Großbuchtstaben in der Zeichenkette durch Kleinbuchstaben ersetzt. Standardwert ist false
.
Beispiel:
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
.
Mit dem optionalen Attribut separator
kann der Standard-Separator "; "
durch einen selbst definierten ersetzt werden:
onetoken / splittingCharacter
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:
Ist für dieses Feld zusätzlich eine beliebige Zeichenkette im Element splittingCharacter konfiguriert, werden alle Vorkommnisse dieser Zeichenkette durch einen Punkt (.) ersetzt.
Beispiel:
Diese Konfigurationselemente existieren speziell für die Behandlung von Kollektionsnamen im Goobi viewer (Feld DC) und bringen keinen Mehrwert bei anderen Metadatenfeldern.
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
.
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:
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:
In diesem Beispiel wird das Nichtsortierzeichen ‘¬’ durch nichts ersetzt (das heißt entfernt).
Beispiel 3:
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.
Für Leerzeichen wird der Platzhalter #SPACE#
unterstützt.
Wenn ein Value in mehrere Values aufgeteilt werden soll, kann dafür der {SPLIT}
Platzhalter verwendet werden:
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:
Ergebnis
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:
Ergebnis:
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
.
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
.
normalizeValue
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.
Es können pro Feld mehrere <normalizeValue>
Elemente konfiguriert werden, die sukszessive auf den Metadatenwert angewandt werden.
convertRoman
Wenn true
, kann im Regex nach römischen Zahlen gesucht werden (z.B. via ([C|I|M|V|X]+)
), die dann zu arabischen konvertiert werden. In diesem Modus ist kein Auffüllen des Wertes möglich (kann aber in einem weiteren <normalizeValue>
Element nachträglich gemacht werden.
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
Erforderlicher regulärer Ausdruck, um den für die Normalisierung relevanten Teil zu definieren. Kann mehrere Capture Groups enthalten (ansonsten wird der gesamte Ausdruck gematcht).
addToParents
Ist dieser Parameter auf true
gesetzt; werden alle in Unterelementen gefundenen Metadatenwerte ins Hauptelement verschoben (sowohl bei einfachen als auch bei gruppierten Metadaten). Der Standardwert ist false
.
Das Attribute keepOnChildren
bewirkt, dass hoch vererbte Metadaten nicht nur im obersten Element landen, sondern in der ganzen Hierarchie verbleiben. Default ist false
.
geoJSONSource
Hiermit können Geokoordinaten von Punkten und Polygonen aus GML oder mods:coordinates
anstatt im Ursprungsformat als geoJSON geschrieben werden.
Folgende Werte werden derzeit unterstützt:
gml:Point (Punkte im Format "lon lat")
gml:Point:4326 (Punkte im Format "lat lon")
gml:Polygon (Punkte im Format "lon lat")
gml:Polygon:4326 (Punkte im Format "lat lon")
mods:coordindates/point
Optional kann das Attribut addSearchField="true"
definiert werden. In diesem Fall wird zusätzlich das Feld WKT_COORDS
geschrieben, welches die Koordinaten des Punktes beziehungsweise des Polygons über Solr suchbar im Format WKT enthält.
interpolateYears
Mit dem Schalter <interpolateYears />
kann angegeben werden, ob Jahreszahlen im Feld YEAR
interpoliert werden sollen. Das ist insbesondere dann nützlich, wenn bei einer Facettierung nach Jahr auch Datensätze gefunden werden sollen, für die kein konkretes Jahr, sondern ein Zeitraum erfasst wurde. Ein Zeitraum kann zum Beispiel als 1400-1499
oder 1400/1499
erfasst werden. Der Standardwert ist false
.
Der Schalter ist mit Vorsicht zu genießen. Stammt ein Objekt zum Beispiel aus der Kreidezeit und ist diese hinterlegt, dann können sehr viele Werte geschrieben werden bei dem dann der Nutzen der Zusatzinformation nicht mehr gegeben ist.
allowDuplicateValues
In der Regel werden doppelte Metadaten (Feld + Wert identisch) nur einmal geschrieben. Der Schalter <allowDuplicateValues>
(wenn true
) erlaubt, dass diese Regel für bestimmte Felder ausgesetzt wird und mehrere identische Metadatenfelder geschrieben werden dürfen. Standardwert ist false
.
addExistenceBoolean
Mit diesem Schalter kann automatisch ein Boolean-Feld generiert werden, dass das Vorhandensein des jeweiligen Metadatenfeldes beschreibt. Steht dieser Schalter bei der Feldkonfiguration von MD_TITLE
auf true
, wird bei gefundenem Wert für MD TITLE
ein Feld BOOL_TITLE=true
in den Index geschrieben. Wird kein Wert für MD_TITLE
gefunden, wird BOOL_TITLE=false
im Index stehen. Dieses Boolean-Feld kann verwendet werden, um etwa Objekte nach Vorhandensein eines Metadatenfeldes zu filtern.
Last updated