Entwurf Skript v0.1

This commit is contained in:
Felix Lohmeier 2017-05-15 01:31:52 +02:00
parent aa49f47d18
commit 57320f0079
25 changed files with 632 additions and 73 deletions

View File

@ -5,11 +5,7 @@
* [Summerschool](README.md)
* [Arbeitsumgebung](arbeitsumgebung.md)
* [Metadatenformate und Schnittstellen](metadatenformate-und-schnittstellen.md)
## Linux Kommandozeile
* [Arbeiten mit der Kommandozeile](linux-kommandozeile/arbeiten-mit-der-kommandozeile.md)
* [Beispieldaten laden und ansehen](linux-kommandozeile/beispieldaten-laden-und-ansehen.md)
## Auswahl der Anwendungssoftware
@ -27,12 +23,10 @@
* [Installation von MarcEdit](marcedit/installation-von-marcedit.md)
* [Verwendung mit OpenRefine](marcedit/verwendung-mit-openrefine.md)
* [Abfrage von Schnittstellen](marcedit/abfrage-von-schnittstellen.md)
## Anwendungsfall MARC21
* [Konvertierung von MARC21 in TSV mit MarcEdit](anwendungsfall-marc21/konvertierung-von-marc21-in-tsv-mit-marcedit.md)
* [Vorverarbeitung mit OpenRefine](anwendungsfall-marc21/vorverarbeitung-mit-openrefine.md)
* [Vorverarbeitung mit MarcEdit und OpenRefine](anwendungsfall-marc21/vorverarbeitung-mit-marcedit-und-openrefine.md)
* [Transformation mit OpenRefine in finc-Schema](anwendungsfall-marc21/transformation-mit-openrefine-in-finc-schema.md)
## Weitere Anwendungsfälle
@ -53,5 +47,4 @@
* [Installation von TYPO3 und TYPO3-find](katalog-mit-typo3-find/installation-von-typo3-und-typo3-find.md)
* [Beispielkonfiguration für Online-Katalog mit TYPO3-find](katalog-mit-typo3-find/beispielkonfiguration-fur-online-katalog-mit-typo3-find.md)
* [Anpassungsmöglichkeiten TYPO3-find](katalog-mit-typo3-find/anpassungsmoglichkeiten-typo3-find.md)

View File

@ -0,0 +1,34 @@
# Transformation mit OpenRefine in finc-Schema
Ziel: Daten für den Import in den Suchindex vorbereiten
MARC21 ist sehr komplex und das [finc-Schema](https://github.com/finc/index/blob/master/schema.xml) hat ebenfalls etliche Felder, die teilweise kompliziert zu bilden sind. In dieser Summerschool können wir daher nur einen Teil erproben.
## Werte belegen (am Beispiel von Feldern 001 und 245)
* show as: rows
* column Tags / Facet / text facet / 245
* column Subfields / Facet / text facet / "a", "b", "c"
* column Tags / edit cells / transform... / "title"
* close facets
* column Tags / Facet / text facet / 001
* column Tags / edit cells / transform... / "id"
* close facet
* ...
## Transponieren
* All / Edit columns / Re-order / remove columns / Spalten "RecordNumber", "Indicators", "Subfields2" nach rechts bewegen (d.h. löschen)
* column Tags / Facet / text facet / include: "id", "title", "..." / invert
* All / Edit rows / Remove all matching rows
* close facet
* column Tags / edit cells / Blank down
* column Content / edit cells / join multi-valued cells / $
* column Content / Facet / customized facets / Facet by blank / true
* All / Edit rows / Remove all matching rows
* close facet
* Column key / transpose / columnize by key/value columns / ok
## Export
Wählen Sie oben rechts im Menü Export den Menüpunkt ```Tab-separated-value```

View File

@ -0,0 +1,36 @@
# Vorverarbeitung mit MarcEdit und OpenRefine
## Beispieldaten von MARC21 in TSV konvertieren
vgl. Anleitung im vorigen Kapitel
## Daten in OpenRefine laden
* Menü Create Project
* TSV-Datei hochladen
* In den Optionen "store blank rows" deaktivieren
## Subfields aufteilen
Führen Sie folgende Transformationsschritte in OpenRefine durch:
* column Column / Edit column / Remove this column
* column Content / Text filter: $
* column Content / add column based on this column / Subfields / forEach(value.split("$"),v,get(v,0)).join("$")
* column Content / edit cells / transform... / forEach(value.split("$"),v,slice(v,1)).join("$")
* close text filter
* column Subfields / edit cells / split multi-valued cells... / $
* column Content / edit cells / split multi-valued cells... / $
## Records bilden
Führen Sie folgende Transformationsschritte in OpenRefine durch:
column Subfields / Facet / customized facets / Facet by blank / false
column RecordNumber / edit cells / Fill down
column Tags / edit cells / Fill down
column Indicators / edit cells / Fill down
close facet
column RecordNumber / edit cells / Blank down
Show: 5 rows
Show as: records

View File

@ -0,0 +1,61 @@
# Arbeiten mit der Kommandozeile
Im Laufe der Summerschool verwenden wir des Öfteren die [Kommandozeile](https://de.wikipedia.org/wiki/Kommandozeile), um Programme zu installieren und zu konfigurieren. Gleichzeitig ist sie ein mächtiges Werkzeug, um mit Textdateien umzugehen. Es lohnt also den Umgang damit kurz zu üben.
## Kommandozeile (Terminal) starten
Die Kommandozeile (auch "[Terminal](https://wiki.ubuntuusers.de/Terminal/)" genannt) von Ubuntu MATE erreichen wir über das Menü "Anwendungen -> Systemwerkzeuge -> MATE-Terminal".
![Screenshot Terminal starten](/images/screenshot-terminal-starten.png)
![Screenshot Terminal geöffnet](/images/screenshot-terminal.png)
## Installieren Sie das kleine Programm curl
Für die folgende Übung wird das (sehr) kleine Programm curl benötigt. Bei vielen Linux-Distributionen ist es vorinstalliert, aber bei Ubuntu MATE nicht. Starten Sie zur Installation die Kommandozeile (Terminal) und geben Sie den folgenden Befehl ein:
```sudo apt-get install curl```
Sie werden nach Ihrem Passwort gefragt, anschließend startet der Installationsprozess. So sollte es danach aussehen:
![Screenshot Installation curl](/images/screenshot-curl-installieren.png)
## Übung: Text durchsuchen und Wörter zählen
Starten Sie die Kommandozeile (Terminal) und geben Sie die folgenden Befehle ein:
### Schritt 1: "War and Peace" von Leo Tolstoy herunterladen und anzeigen
* ```curl http://www.gutenberg.org/files/2600/2600-0.txt > war_and_peace.txt```
* ```cat war_and_peace.txt | less```
Der Anhang ```| less``` am zweiten Befehl zeigt den Text so an, dass Sie mit den Pfeiltasten scrollen können. Beenden können Sie die Ansicht mit der Taste ```q```.
### Schritt 2: Zeilen, Wörter und Zeichen zählen mit wc
* ```wc war_and_peace.txt```
Die drei Nummern sind Zeilen, Wörter und Zeichen (in dieser Reihenfolge).
### Schritt 3: Suche nach Vorkommnissen der Wörter "war" and "peace"
* ```cat war_and_peace.txt | grep -i -ow war | wc```
* ```cat war_and_peace.txt | grep -i -ow peace | wc```
Was wird häufiger in diesem Text erwähnt? Krieg oder Frieden?
## Hilfreiche Grundlagen bei der Arbeit mit der Kommandozeile
* Dateien und Verzeichnisse: siehe [Cheatsheet](http://cheatsheetworld.com/programming/unix-linux-cheat-sheet/)
* Abbruch / Programm beenden: ***STRG*** und ***C***
* Kurzhilfe eines Programms aufrufen: ***Programmname* --help**
* Handbuch eines Programms aufrufen: **man** ***Programmname***
* Automatische Ergänzung von Befehlen: ***Tab***
* Vorige Kommandos anzeigen: ***Pfeiltaste nach oben***
* Suche in Historie der Kommandozeile: ***STRG*** und ***R***
Die meisten Antworten finden sich über einfache Suchen im Internet. Meist reicht es an die passenden Suchbegriffe das Wort "linux" mit anzuhängen.
## Literatur
* Ausführlichere Übung im Blog des Projekts Librecat/Catmandu: https://librecatproject.wordpress.com/2014/12/04/day-4-grep-less-and-wc/. Dabei bitte beachten: Die dort referenzierte Textdatei ist anders strukturiert als die obige *war_and_peace.txt* und liefert daher andere Zählergebnisse.
* Dreistündiger Einführungskurs "Shell Lessons for Librarians" im Projekt "Library Carpentry" http://data-lessons.github.io/library-shell/
* Eine gute Einführung in die Linux-Kommandozeile bietet [http://linuxcommand.org](http://linuxcommand.org) von William E. Shotts, der auch ein kostenfreies [540-Seiten-Buch](http://linuxcommand.org/tlcl.php) darüber geschrieben hat.
* Es gibt sehr viele praktische kleine Programme auf der Kommandozeile. Zur Übersicht eignet sich daher ein Spickzettel ("Cheatsheet") sehr gut. Ein Beispiel für die unzähligen Cheatsheets: [http://cheatsheetworld.com/programming/unix-linux-cheat-sheet/](http://cheatsheetworld.com/programming/unix-linux-cheat-sheet/).

View File

@ -0,0 +1,9 @@
# Arbeitsumgebung
Wir verwenden das Linux-Betriebssystem [Ubuntu MATE](https://ubuntu-mate.org/) als Arbeitsumgebung. In der Summerschool in Dresden stehen vorinstallierte Computer bereit.
Wer dieses Skript im Selbststudium durcharbeiten möchte, könnte sich Ubuntu MATE mit Hilfe von [VirtualBox](https://www.virtualbox.org/) auf dem eigenen Windows-Computer installieren (siehe [Anleitung im Skript zum Seminar an der Hochschule Hannover](https://felixlohmeier.gitbooks.io/seminar-praxis-der-digitalen-bibliothek/content/1-3-1-installation-der-virtuellen-maschine.html))
Alle hier verwendeten Anwendungen ([MarcEdit](http://marcedit.reeset.net/), [OpenRefine](http://openrefine.org/), [Solr](http://lucene.apache.org/solr/), [TYPO3](https://typo3.org/)) können auch unter Windows installiert werden.
Für die Summerschool werden Beispieldaten aus dem Arbeitsalltag verwendet, die leider nicht unter freien Lizenzen stehen und daher nicht öffentlich bereitgestellt werden können.

View File

@ -0,0 +1,37 @@
# Auswahl der Software für die Summerschool
## Software, die wir verwenden werden
**Verarbeitung und Analyse der Metadaten**: [OpenRefine](http://openrefine.org)
OpenRefine bietet eine grafische Oberfläche zur Analyse und Transformation von Daten, die ähnlich wie eine klassische Tabellenverarbeitungssoftware (MS Excel, LibreOffice Calc, usw.) aufgebaut ist. Wir verwenden diese Software in der Summerschool, um die Beispieldaten zu manipulieren und in ein passendes Format für den Suchmaschinenindex zu transformieren.
Als "Spezialist" für MARC21 kommt zusätzlich die Software [MarcEdit](http://marcedit.reeset.net/) zum Einsatz.
**Suchmaschinenindex**: [Solr](http://lucene.apache.org/solr/)
Apache Solr ist eine der Standardsuchmaschinen, die auch in vielen kommerziellen Discovery-Systemen zum Einsatz kommt. Die Indexierung der Daten in Solr ermöglicht sehr schnelle und flexible Suchen. Der Suchmaschinenindex läuft im Hintergrund, wird von den Nutzerinnen und Nutzern also nie direkt aufgerufen.
**Katalogoberfläche**: [TYPO3-find](https://github.com/subugoe/typo3-find)
Das, was die Nutzerinnen und Nutzer zu sehen bekommen, ist schließlich die Katalogoberfläche. Im Grunde handelt es sich um eine Webseite mit Suchfunktion. Wir verwenden im Seminar die Software TYPO3-find, eine Erweiterung für das Content-Management-System TYPO3, die an der Staats- und Universitätsbibliothek Göttingen entwickelt wurde. TYPO3-find kommuniziert mit dem Suchmaschinenindex Solr über die Software [Solarium](http://www.solarium-project.org/), die ebenfalls Open Source ist.
## Schaubild zum Datenfluss
```
+----------+ +------------+ +------+ +------------+
| | | | | | Solarium | |
| MarcEdit | +-----> | OpenRefine | +-----> | Solr | +--------+ | TYPO3-find |
| | | | | | | |
+----------+ +------------+ +------+ +------------+
```
## Alternativen, die auch interessant wären
Es gibt eine ausgereifte Komplettlösung, die alle drei Funktionen (Verarbeitung der Metadaten, Suchmaschinenindex und Katalogoberfläche) in einer Open-Source-Lösung vereint: [VuFind](http://vufind-org.github.io/vufind/). Diese Lösung kann am ehesten als vollständiger Ersatz für ein kommerzielles Discovery-System gelten (mal abgesehen vom "Central Index" für elektronische Artikel). Wir verwenden VuFind in dieser Summerschool nicht, weil die Software zu viele Schritte im Hintergrund erledigt, die das Verständnis der zugrundeliegenden Prozesse erschweren würden. VuFind ist international an vielen Bibliotheken im Einsatz und hat eine sehr aktive Community. In Deutschland finden regelmäßig Anwendertreffen statt, [im Oktober 2016 beispielsweise in Freiburg](https://www.ub.uni-freiburg.de/ihre-ub/veranstaltungen/vufind-anwendertreffen/). Die lange Historie von VuFind (Entwicklung seit 2008) ist gleichzeitig Hauptkritikpunkt: Der Code ist "gewachsen" und entsprechend schwierig zu warten. Die Komplettlösung ist wenig modular aufgebaut und damit schwieriger in andere Systeme integrierbar.
Neu auf dem Markt ist auch die Komplettlösung [Lukida](https://www.lukida.org/), die vom Bibliotheksverbund GBV als Service angeboten wird und auch als [Open Source](https://github.com/gbv/Lukida) zur Verfügung steht. Die Software ist in PHP entwickelt und zeichnet sich durch einen neuen Ansatz in der Darstellung der Suchergebnisse aus.
Alternativen für die Verarbeitung und Analyse der Metadaten wurden im vorigen Kapitel bereits vorgestellt. Für das Ziel der Summerschool kämen vor allem Catmandu und d:swarm in Frage. [Catmandu](http://librecat.org/) muss über die Kommandozeile gesteuert werden und hat damit eine höhere Einstiegshürde für diejenigen, die grafische Oberflächen aus Windows gewohnt sind. [d:swarm](http://www.dswarm.org) hingegen bietet einen optischen Zugang, ist jedoch noch in Entwicklung und hat eine relativ komplexe Systemarchitektur.
Als Alternative für die Katalogoberfläche ist noch [Blacklight](http://projectblacklight.org/) zu nennen, das in Universitätsbibliotheken in den USA weit verbreitet ist.

View File

@ -0,0 +1,33 @@
# 1.2.2 Open Source Software zur Verarbeitung und Analyse von Metadaten
## Präsentation Magnus Pfeffer (2016)
Prof. Magnus Pfeffer (2016): Open Source Software zur Verarbeitung und Analyse von Metadaten. Präsentation auf dem 6. Bibliothekskongress. http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:0290-opus4-24490
[![Screenshot Pfeffer (2016)](images/screenshot-pfeffer-2016.png)](http://nbn-resolving.de/urn/resolver.pl?urn:nbn:de:0290-opus4-24490)
## Kernpunkte
Der erste Schritt zum selbstentwickelten Bibliothekskatalog ist die Analyse und Verarbeitung der Metadaten. Welche Medien sollen im Katalog angezeigt werden und welche Daten liegen dazu bereits vor? Oftmals müssen die beschreibenden Daten über die Objekte (Metadaten) erst aufbereitet werden, um sie in einen Suchmaschinenindex laden zu können.
Aufgrund der zunehmenden Komplexität an Datenformaten, Regelwerken und Datenquellen ist eine ganze Reihe von Open Source Werkzeugen entstanden. Magnus Pfeffer stellt in seiner Präsentation die Vielfalt der verfügbaren Software dar, die sich zum Einsatz in der Lehre eignet.
Die einzusetzende Software sollte für den Zweck der Lehre drei Arbeitsschritte ermöglichen (das gilt auch für dieses Seminar):
1. Validierung und einfache Analyse von Datenlieferungen (z.B. konsistente Feldbelegungen, Erkennen von Unstimmigkeiten, statistische Analysen)
2. Anpassung von Datenlieferungen (Filtern von Datensätzen, Anpassen einzelner Felder)
3. Durchführen eines ETL-Prozesses ([Extract, Transform, Load](https://de.wikipedia.org/wiki/ETL-Prozess): Daten aus dem Bibliothekssystem extrahieren, anpassen und in einen Suchindex laden)
Magnus Pfeffer unterscheidet drei Kategorien von Software:
* Einzelne Programme: MABLE+/MARCEL, MAB-Tools, MARCTools, MarcEdit usw.
* Toolkits: Metafacture, Catmandu, MarcXimiL
* Web-basierte Software: OpenRefine, d:swarm
Schwierigkeiten für den Einsatz in der Lehre bestehen darin, dass oftmals die Dokumentation nicht für Einstieger geeignet ist, teilweise sehr spezielle Systemvoraussetzungen bestehen, die Anwendungen teilweise frustrierend zu bedienen sind und realistische Workflows nur mit Kombinationen von unterschiedlichen Programmen umsetzbar sind. Im Modul Metadatenmanagement an der HDM Stuttgart plant er daher typische Workflows mit der Software Librecat/Catmandu und OpenRefine nachzustellen.
## Was bedeutet das für die Summerschool?
Es gibt zahlreiche Profi-Software, die für die Aufbereitung der Metadaten zum Einsatz kommen kann.
In dieser Summerschool (zum Bau eines Bibliothekskatalogs) bietet sich besonders OpenRefine an, weil das Programm vergleichsweise einfach zu bedienen ist, eine grafische Oberfläche bietet und Transformationsergebnisse direkt sichtbar werden. Gleichzeitig ist es ein vielgenutztes Werkzeug auch über die Bibliothekscommunity hinaus (z.B. im Datenjournalismus beliebt) und somit vielfältig einsetzbar.
Im konkreten Arbeitsalltag in den IT-Abteilungen der Bibliotheken kommt je nach Anwendungsfall und Vorliebe des Personals oft spezialisierte Software zum Einsatz. Die Arbeitsprozesse sind aber ähnlich und lassen sich am Beispiel von OpenRefine gut erlernen.

View File

@ -1,75 +1,64 @@
# Skript zur Summerschool zu OpenRefine \(15.-17.5.2017, SLUB Dresden\)
# Beispielkonfiguration für Online-Katalog mit TYPO3-find
Hauptgegenstand ist die Schulung der Open-Source-Software [OpenRefine](http://www.openrefine.org) zur Verarbeitung und zur Analyse von bibliothekarischen Metadaten sowie eine praktische Einführung in die grundlegende Funktionsweise des Suchmaschinenindex [Solr](http://lucene.apache.org/solr/) und der Katalogsoftware [TYPO3-find](https://github.com/subugoe/typo3-find).
Falls der Computer zwischenzeitlich neu gestartet wurde, muss der Suchindex Solr neu gestartet werden:
```
~/solr-6.5.0/bin/solr start -s ~/solr-6.5.0/example/schemaless/solr
```
## Formate {#formate}
Die Administrationsoberfläche von TYPO3 ist unter folgender URL verfügbar: http://localhost/typo3/.
* Lesefassung bei GitBook \(HTML\):
[https://www.gitbook.com/read/book/felixlohmeier/summerschool-openrefine](https://www.gitbook.com/read/book/felixlohmeier/summerschool-openrefine)
* Druckfassung bei GitBook \(PDF\):
[https://www.gitbook.com/download/pdf/book/felixlohmeier/summerschool-openrefine](https://www.gitbook.com/download/pdf/book/felixlohmeier/summerschool-openrefine)
* Repository bei GitHub \(zum Nachnutzen\):
[https://github.com/felixlohmeier/summerschool-openrefine](https://github.com/felixlohmeier/summerschool-openrefine)
## Menü Extensions
## Inhalte
* In der Liste neben dem Eintrag ```Find``` auf den Würfel klicken, um die Extension zu aktivieren
Einleitung
## Menü Page
* [Ziele und Ablauf](/ziele-und-ablauf.md)
* [Arbeitsumgebung](/arbeitsumgebung.md)
* [Metadatenformate und Schnittstellen](/metadatenformate-und-schnittstellen.md)
* Seite ```Home``` auswählen
* Button +Content in Spalte "Normal" drücken und im Reiter ```Plugins``` das Plugin ```TYPO3 Find``` auswählen
* Oben den Save-Button betätigen.
Linux Kommandozeile
## Menü List
* [Arbeiten mit der Kommandozeile](/linux-kommandozeile/arbeiten-mit-der-kommandozeile.md)
* [Beispieldaten laden und ansehen](/linux-kommandozeile/beispieldaten-laden-und-ansehen.md)
* Gleiche Seite auswählen, auf der vorhin das Plugin eingefügt wurde (müsste noch vorausgewählt sein)
* Das Template ```Main TypoScript Rendering``` bearbeiten
* Reiter ```General```: In Textfeld ```Setup``` den vorhandenen Inhalt durch Folgendes ersetzen
```
page = PAGE
page.100 < styles.content.get
page.javascriptLibs.jQuery = 1
page.includeJS.find = EXT:find/Resources/Public/JavaScript/find.js
plugin.tx_find.features.requireCHashArgumentForActionArguments = 0
plugin.tx_find.settings {
connections {
default {
options {
host = localhost
port = 8983
path = /solr/gettingstarted
}
}
}
standardFields {
title = title
snippet = author
}
facets {
10 {
id = title
field = title
sortOrder = count
}
20 {
id = author
field = author
sortOrder = count
}
}
}
```
* Reiter ```Includes```: Rechts bei ```available items``` das Item ```Find (find)``` anklicken.
* Oben den Save-Button betätigen
Auswahl der Anwendungssoftware
* [Open-Source-Software für Verarbeitung von Metadaten](/auswahl-der-anwendungssoftware/open-source-software-fur-verarbeitung-von-metadaten.md)
* [Auswahl der Software für die Summerschool](/auswahl-der-anwendungssoftware/auswahl-der-software-fur-die-summerschool.md)
OpenRefine
* [Installation von OpenRefine](/openrefine/installation-von-openrefine.md)
* [Allgemeines Tutorial](/openrefine/allgemeines-tutorial.md)
* [Automatisierung](/openrefine/automatisierung.md)
* [Verarbeitung von bibliothekarischen Metadaten](/openrefine/verarbeitung-von-bibliothekarischen-metadaten.md)
MarcEdit
* [Installation von MarcEdit](/marcedit/installation-von-marcedit.md)
* [Verwendung mit OpenRefine](/marcedit/verwendung-mit-openrefine.md)
* [Abfrage von Schnittstellen](/marcedit/abfrage-von-schnittstellen.md)
Anwendungsfall 1
* [Konvertierung von MARC21 in TSV mit MarcEdit](/anwendungsfall-1/konvertierung-von-marc21-in-tsv-mit-marcedit.md)
* [Transformation mit OpenRefine in finc-Schema](/anwendungsfall-1/transformation-mit-openrefine-in-finc-schema.md)
Weitere Anwendungsfälle
* [Metadaten eines Anbieters im CSV-Format](/weitere-anwendungsfalle/metadaten-eines-anbieters-im-csv-format.md)
* [Nachlässe aus Kalliope via SRU](/weitere-anwendungsfalle/nachlasse-aus-kalliope-via-sru.md)
* [CSV zu MIDAS-XML und MIDAS-XML zu Excel](/weitere-anwendungsfalle/csv-zu-midas-xml-und-midas-xml-zu-excel.md)
* [Dublin Core XML manipulieren](/weitere-anwendungsfalle/dublin-core-xml-manipulieren.md)
* [RDF vom AV-Portal der TIB](/weitere-anwendungsfalle/rdf-vom-av-portal-der-tib.md)
Suchindex Solr
* [Installation von Solr](/suchindex-solr/installation-von-solr.md)
* [Daten in Solr laden](/suchindex-solr/daten-in-solr-laden.md)
* [Konfiguration des Schemas](/suchindex-solr/konfiguration-des-schemas.md)
Katalog mit TYPO3-find
* [Installation von TYPO3 und TYPO3-find](/katalog-mit-typo3-find/installation-von-typo3-und-typo3-find.md)
* [Beispielkonfiguration für Online-Katalog mit TYPO3-find](/katalog-mit-typo3-find/beispielkonfiguration-fur-online-katalog-mit-typo3-find.md)
* [Anpassungsmöglichkeiten TYPO3-find](/katalog-mit-typo3-find/anpassungsmoglichkeiten-typo3-find.md)
## Lizenz {#lizenz}
Dieses Werk ist lizenziert unter einer [Creative Commons Namensnennung 4.0 International Lizenz](http://creativecommons.org/licenses/by/4.0/)
[![](https://i.creativecommons.org/l/by/4.0/88x31.png)](http://creativecommons.org/licenses/by/4.0/)
Rufen Sie anschließend die Webseite http://localhost auf. Der Katalog sollte erscheinen.
Über das Template im Textfeld ```Setup``` kann TYPO3-find konfiguriert werden. Die Funktionen und Konfigurationsmöglichkeiten sind in der Dokumentation beschrieben: http://typo3-find.readthedocs.io/en/latest/index.html

View File

@ -0,0 +1,77 @@
# Installation von TYPO3 und TYPO3-find
Ziel: In diesem Kapitel fügt sich das Puzzle zusammen. Wir haben mit OpenRefine die Daten transformiert und als TSV-Dateien gespeichert. Mit dem Suchindex Solr haben wir die TSV-Dateien indexiert. Nun installieren wir die Katalogoberfläche TYPO3-find, um die Daten aus dem Suchindex auf einer Webseite für die NutzerInnen zur Verfügung zu stellen.
Begriffe:
* TYPO3 ist ein häufig genutztes Content Management System (CMS) für Webseiten
* TYPO3-find ist eine von der SUB Göttingen entwickelte Erweiterung für TYPO3
Für Ubuntu gibt es derzeit kein Installationspaket, daher müssen wir die für TYPO3 benötigten Komponenten (Webserver, Datenbank, PHP) manuell installieren.
## Benötigte Pakete (Apache, MySQL, PHP, Composer) installieren
```
sudo apt-get install apache2 libapache2-mod-php7.0 php7.0 php7.0-mysql mysql-server php-gd php-json php-imagick php-mbstring php-curl php-apcu php-soap php-xml php-zip composer
```
Während der Installation müssen Sie ein Root-Passwort für MySQL vergeben. Denken Sie sich eins aus und notieren Sie dies.
## Konfiguration MySQL
Wenn die Installation abgeschlossen ist, müssen wir eine Datenbank und eine/n Nutzer/in anlegen:
* ```mysql -u root -p```
* MySQL-root-Passwort eingeben
* Anschließend folgende Befehle eingeben (_secretpassword_ durch ein eigenes Passwort ersetzen):
```
CREATE DATABASE typo3 DEFAULT CHARACTER SET utf8;
CREATE USER typo3_db_user@localhost IDENTIFIED BY 'secretpassword';
GRANT ALL PRIVILEGES ON typo3.* TO typo3_db_user@localhost;
FLUSH PRIVILEGES;
quit;
```
## Konfiguration PHP
Optimieren Sie die Einstellungen von PHP für TYPO3:
```
sudo sed -i 's/max_execution_time = 30/max_execution_time = 240/' /etc/php/7.0/apache2/php.ini
sudo sed -i 's/; max_input_vars = 1000/max_input_vars = 1500/' /etc/php/7.0/apache2/php.ini
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/7.0/apache2/php.ini
```
Abschließend ist ein Neustart des Webservers erforderlich:
```
sudo /etc/init.d/apache2 restart
```
## TYPO3 mit Composer installieren
Wir nutzen eine [Distribution von Cedric Ziel](https://github.com/cedricziel/typo3-find-distribution), die TYPO3 und die Erweiterung TYPO3-find beinhaltet. Die Installation erfolgt mit Hilfe des Tools Composer, das wir im ersten Schritt zusammen mit den anderen Paketen installiert haben.
Geben Sie folgende Befehle ins Terminal ein:
```
cd /var/www/
sudo composer create-project cedricziel/typo3-find-distribution katalog dev-master
cd katalog
sudo chown www-data:www-data -R web
sudo touch web/FIRST_INSTALL
sudo sh -c 'echo "<VirtualHost *:80>
DocumentRoot /var/www/katalog/web
ServerName katalog
Options -Indexes
DirectoryIndex index.php index.html
</VirtualHost>" > /etc/apache2/sites-available/katalog.conf'
sudo a2ensite katalog.conf
sudo a2dissite 000-default.conf
sudo service apache2 reload
```
## Konfiguration von TYPO3 mit dem Installationsassistent
Nach der Installation erreichen Sie TYPO3 unter der Adresse http://localhost. Dort treffen Sie zunächst auf den Installationsassistenten.
* In Schritt 2 muss als Username ```typo3_db_user``` und das von Ihnen für den Nutzer typo3_db_user gesetzte Passwort (secretpassword) eingetragen werden.
* In Schritt 3 wählen Sie "use an existing empty database"
* In Schritt 4 müssen Sie einen weiteren Account anlegen, diesmal für die Administration von TYPO3. Notieren Sie sich Benutzername und Passwort.
* Wählen Sie in Schritt 5 die Option ```Yes, create a base empty page to start from.```

View File

@ -0,0 +1,37 @@
# Installation von MarcEdit
## MarcEdit herunterladen und entpacken
```
wget http://marcedit.reeset.net/software/marcedit.bin.zip
unzip marcedit.bin.zip
```
## Benötigte Programmbibliotheken installieren
```
sudo sh -c 'echo "deb http://ftp.indexdata.dk/ubuntu xenial main
deb-src http://ftp.indexdata.dk/ubuntu xenial main" >> /etc/apt/sources.list'
wget http://ftp.indexdata.dk/debian/indexdata.asc
sudo apt-key add indexdata.asc
sudo apt-get install mono-complete zlibc libyaz5 libyaz5-dev
```
## Konfiguration von MarcEdit anpassen
```
echo "<?xml version="1.0" encoding="utf-8" ?>
<configuration>-
<dllmap dll="yaz4_32.dll" target="libyaz.so.5" />
<dllmap dll="yaz4_64.dll" target="libyaz.so.5" />
<dllmap dll="yaz3.dll" target="libyaz.so.5" />
</configuration>" > ~/marcedit/Zoom.Net.YazSharp.dll.config
```
## MarcEdit starten
```
mono ~/marcedit/MarcEdit.exe
```
Beim ersten Start muss noch im Menü ```Locations``` der Pfad zur Programmbibliothek Mono (```Mono Path```) angegeben werden: ```/usr/bin/mono```

View File

@ -0,0 +1,9 @@
# Verwendung mit OpenRefine
Der Entwickler von MarcEdit hat Anfang 2016 eine Export- und Importmöglichkeit für den Datenaustausch mit OpenRefine geschaffen. Er erklärt die Funktion ausführlich in seinem Blog:
Terry Reese (16.1.2016): [MarcEdit and OpenRefine](http://blog.reeset.net/archives/1873). In: Terry's Worklog.
Die [Übersetzung von Google Translate](https://translate.google.com/translate?hl=de&sl=en&tl=de&u=http%3A%2F%2Fprogramminghistorian.org%2Flessons%2Fcleaning-data-with-openrefine) ist brauchbar.
Wir nutzen die Konvertierungsfunktionen von MarcEdit in dieser Summerschool, um MARC21-Binärformat in TSV zu konvertieren.

View File

@ -0,0 +1,22 @@
# Metadatenformate und -standards
## Präsentation Kirsten Jeude (2013)
http://www.slideshare.net/suvanni/auf-du-und-du-mit-dublin-core-co-berufsfeld-metadatenmanagement-im-kontext-der-bibliothek-der-zukunft
[![Screenshot Präsentation Kirsten Jeude](images/screenshot-jeude-2013.png)](http://www.slideshare.net/suvanni/auf-du-und-du-mit-dublin-core-co-berufsfeld-metadatenmanagement-im-kontext-der-bibliothek-der-zukunft)
## Interview mit Kirsten Jeude
ZBW Podcast: ["Kirsten Jeude - Die Datenübersetzerin"](https://www.youtube.com/watch?v=YwbRTDvt_sA)
## Kernpunkte
* Es gibt viele verschiedene Definitionen für Metadaten, je nach Perspektive (z.B. der IT, der KatalogbastlerInnen, der BibliothekarInnen usw.). Grundsätzlich sind es (vgl. Folie 13) **strukturierte "Daten über Daten"**, also eine formale Beschreibung einer Vielzahl von Dingen (Texte, Bilder, Objekte, Personen, usw.). Metadaten sollen u.a. das Auffinden, Identifizieren, Auswählen und den Zugang zu einer Ressource erleichtern. Metadaten können getrennt vom beschriebenen Objekt in einer separaten Datei gespeichert oder in das Objekt eingebettet sein. Bilddateien wie JPG enthalten zum Beispiel eingebettete Metadaten (Aufnahmedatum, Auflösung usw.).
* Da die Anforderungen an Metadaten kontextabhängig sind, gibt es eine Vielzahl an Standards, die sich entwickelt haben. Beispiele im Bibliothekswesen sind **PICA, MODS, DC, MAB, MARC21, METS, EAD, TEI, LIDO** (vgl. Folie 44). Diese Standards können technisch in verschiedenen Formaten (Text, XML) umgesetzt werden. Die Regeln der Standards werden oft in einem **Schema** dokumentiert, mit dem sich prüfen lässt, ob eine Datei (technisch) standardkonform ist. Wenn eine Anwendung genauere Festlegungen treffen will oder gar Elemente aus verschiedenen Standards kombiniert werden sollen, dann wird dies in einem **Anwendungsprofil** festgelegt (vgl. Folie 59).
* Um Metadaten aus verschiedenen Quellen zusammenzuführen, ist meist ein "Übersetzen" der Daten aus verschiedenen Quellschemas (MARC21, PICA) in ein einheitliches Zielschema notwendig. Dieser Prozess wird **Mapping (oder auch "Crosswalk")** genannt. Dabei gehen je nach Schema mehr oder weniger Informationen verloren. Es gibt Standard-Crosswalks zwischen Metadatenstandards, die als Grundlage dienen können. Da aber jede Einrichtung die Daten etwas anders erfasst (ist ja nur menschlich), lohnt es sich immer in die Daten zu schauen, wie die einzelnen Metadatenfelder wirklich befüllt sind. Die meisten Mappings werden daher teils auf Basis von Standard-Crosswalks, teils auf Basis von Beispieldaten erstellt (zu Problemen beim "Mapping in der Praxis" vgl. die Folien 70ff).
* Für den Austausch von Metadaten gibt es **Schnittstellen wie Z39.50, SRU oder OAI-PMH** (vgl. Folie 86ff).
## Literatur
* Wikipedia zu Metadaten: https://de.wikipedia.org/wiki/Metadaten
* Onlinetutorial "Einführung in Metadaten und Metadatenformate" von Claudia Effenberger und Stefanie Rühle: http://moodle.dnb.de/course/view.php?id=14
* Kleines Handbuch der DINI AG KIM: http://www.kim-forum.org/Subsites/kim/DE/Materialien/Handbuch/handbuch_node.html

View File

@ -0,0 +1,11 @@
# Allgemeines Tutorial
Für OpenRefine gibt es eine riesige Fülle von Tutorials, die den Einstieg erleichtern. Um die Funktionsweise kennenzulernen, ist es am einfachsten eins dieser Tutorials durchzuarbeiten.
Wir bearbeiten das folgende Tutorial:
Seth van Hooland , Ruben Verborgh and Max De Wilde , "Cleaning Data with OpenRefine," Programming Historian, (2013-08-05), http://programminghistorian.org/lessons/cleaning-data-with-openrefine
Die [Übersetzung von Google Translate](https://translate.google.com/translate?hl=de&sl=en&tl=de&u=http%3A%2F%2Fprogramminghistorian.org%2Flessons%2Fcleaning-data-with-openrefine) ist ganz brauchbar.
Die im Tutorial benannte Ausgangsdatei ```phm-collection.tsv``` ist unter folgender Adresse erreichbar: http://data.freeyourmetadata.org/powerhouse-museum/phm-collection.tsv

View File

@ -0,0 +1,47 @@
# Automatisierung
Die Systemarchitektur von OpenRefine macht es möglich, die Anwendung nicht nur über die grafische Oberfläche, sondern auch über eine API "fernzusteuern". Für die [HTTP-API von OpenRefine](https://github.com/OpenRefine/OpenRefine/wiki/OpenRefine-API) gibt es Clients in den Programmiersprachen Python, Ruby, node.js, PHP und für R. Am ausgereiftesten ist der [Python-Client von Paul Makepeace](https://github.com/PaulMakepeace/refine-client-py/).
Darauf aufbauend habe ich ein Shell-Script geschrieben, das gespeicherte Transformationsregeln auf eine Vielzahl von Dateien anwenden kann. Es lädt sich alle benötigten Komponenten wie beispielsweise den Python-Client automatisch aus dem Internet. Die zu verarbeitenden Daten und die Transformationsregeln (als JSON-Dateien) müssen vorab in Dateiordnern bereitgestellt werden. Das Script ist bei GitHub frei verfügbar: [felixlohmeier/openrefine-batch](https://github.com/felixlohmeier/openrefine-batch).
## Transformationshistorie
OpenRefine verfügt über hilfreiche Undo/Redo-Funktionen, mit denen Sie auch alle bisher in einem Projekt durchgeführten Transformationsregeln speichern und auf ein anderes Projekt anwenden können.
Transformationsregeln extrahieren (altes Projekt):
* {%s%}Oben links Menü Undo / Redo den Button Extract... drücken{%ends%}
* {%s%}Alles im rechten Textfeld in die Zwischenablage kopieren (z.B. mit STRG+A und STRG+C){%ends%}
Transformationsregeln anwenden (neues Projekt):
* Neues Projekt erstellen
* {%s%}Oben links Menü Undo / Redo den Button Apply... drücken{%ends%}
* {%s%}Den Inhalt der Zwischenablage einfügen (z.B. mit STRG+V) und den Button Perform Operations drücken.{%ends%}
## Download des Shell-Scripts openrefine-batch
* Falls OpenRefine im Terminal noch läuft, beenden Sie es durch die Tastenkombination ```STRG```+```C```.
* Geben Sie im Terminal folgende Befehle ein:
```
wget https://github.com/felixlohmeier/openrefine-batch/archive/master.zip
unzip master.zip
cd openrefine-batch-master
chmod +x openrefine-batch.sh
```
## Tutorial aus dem vorigen Kapitel automatisiert bearbeiten
In dem Download sind die Daten aus dem Tutorial enthalten. Wenn Sie mögen, können Sie die JSON-Datei im Ordner examples/powerhouse-museum/config/ durch Ihre eigene Transformationshistorie ersetzen.
```
./openrefine-batch.sh \
-a examples/powerhouse-museum/input/ \
-b examples/powerhouse-museum/config/ \
-c examples/powerhouse-museum/output/ \
-f tsv \
-i processQuotes=false \
-i guessCellValueTypes=true \
-RX
```

View File

@ -0,0 +1,53 @@
# Installation von OpenRefine
[OpenRefine](http://www.openrefine.org) bietet eine grafische Oberfläche zur Analyse und Transformation von Daten, die ähnlich wie eine klassische Tabellenverarbeitungssoftware (MS Excel, LibreOffice Calc, usw.) aufgebaut ist. Wir verwenden diese Software in der Summerschool um die Beispieldaten zu manipulieren und in ein passendes Format für den Suchmaschinenindex zu transformieren.
Dem [Repository bei GitHub](https://github.com/OpenRefine/OpenRefine/graphs/contributors) ist zu entnehmen, wer wann zur Entwicklung der Software beigetragen hat.
## OpenRefine herunterladen und entpacken
Auf der Webseite von OpenRefine werden verschiedene Varianten zum [Download](http://openrefine.org/download.html) angeboten. Wir laden die neueste Version (Stand 15.5.2017: OpenRefine 2.7-rc2) für das Betriebssystem Linux. Die Installationsanleitung auf der Webseite ist simpel: "Download, extract, then type ./refine to start."
Wir erledigen dies wieder mit der Kommandozeile (MATE-Terminal):
* Download: ```wget https://github.com/OpenRefine/OpenRefine/releases/download/2.7-rc.2/openrefine-linux-2.7-rc.2.tar.gz```
* Extract (entpacken): ```tar -xzf openrefine-linux-2.7-rc.2.tar.gz```
Im Ordner ```openrefine-2.7-rc.2``` finden Sie jetzt das Programm OpenRefine.
Als Standardeinstellung verwendet OpenRefine maximal 1400M Arbeitsspeicher. Wir wollen auch größere Dateien verarbeiten und setzen daher gleich das Limit hoch. Die Einstellung ist in der Datei ```refine.ini``` mit einem Texteditor vorzunehmen oder mit folgendem Befehl auf der Kommandozeile:
```
sed -i 's/REFINE_MEMORY=1400M/REFINE_MEMORY=3000M/' ~/openrefine-2.7-rc.2/refine.ini
```
## OpenRefine starten
```
~/openrefine-2.7-rc.2/refine
```
Die Tilde (```~```) ist ein Kürzel für ihr Benutzerverzeichnis. Dieser Befehl funktioniert immer, egal in welchem Verzeichnis Sie sich gerade befinden. Wenn Sie sich im Ordner von OpenRefine befinden (```cd ~/openrefine-2.7-rc.2```) reicht ein simples ```refine```
Ist der Startvorgang erfolgreich, dann öffnet sich der Browser (Firefox) automatisch und Sie bekommen das Programm direkt angezeigt. OpenRefine ist in der Standardeinstellung unter der IP-Adresse http://127.0.0.1:3333 erreichbar.
Rufen Sie den Menüpunkt "Open Project" auf und klicken Sie ganz unten auf den Link "Browse workspace directory". Es öffnet sich der Ordner, in dem OpenRefine die Daten speichert. In der Standardkonfiguration unter Linux ist dies das Verzeichnis ```~/.local/share/openrefine```
### OpenRefine beenden
OpenRefine ist nur solange verfügbar, wie der oben verwendete Befehl in der Kommandozeile läuft.
1. Beenden Sie OpenRefine mit ```STRG``` und ```C``` auf der Kommandozeile. Der Browser schließt sich automatisch.
2. Starten Sie OpenRefine erneut, indem Sie auf der Kommandozeile mit der ```Pfeiltaste nach oben``` den vorigen Befehl auswählen und mit ```Enter``` ausführen.
Auf der Kommandozeile können Sie übrigens mitverfolgen, wie der Browser und OpenRefine miteinander kommunizieren. Beim Aufruf von OpenRefine im Browser erscheinen beispielsweise die folgenden POST und GET Befehle in der Kommandozeile:
```
15:10:34.819 [ refine] POST /command/core/load-language (19332ms)
15:10:34.940 [ refine] POST /command/core/load-language (121ms)
15:10:35.223 [ refine] POST /command/core/get-importing-configuration (283ms)
15:10:35.509 [ refine] GET /command/core/get-all-project-metadata (286ms)
15:10:35.632 [ refine] GET /command/core/get-languages (123ms)
15:10:35.721 [ refine] GET /command/core/get-version (89ms)
```
Doch dazu später mehr.

View File

@ -0,0 +1,8 @@
# Verarbeitung von bibliothekarischen Metadaten
Ein möglicher Weg zum Laden von Metadaten in den Suchindex Solr ist die Transformation der bibliothekarischen Metadaten in eine klassische Tabellenstruktur:
* Spaltenüberschriften wie Felder im Suchindex
* Mehrfachbelegung mit Trennzeichen
* Export in CSV/TSV
OpenRefine ist ein generisches Werkzeug und kennt den MARC-Standard nicht. MARCXML kann allgemein als XML geladen werden, aber binäres MARC-Format kann OpenRefine nicht laden. Daher ist es sinnvoll für die Verarbeitung von Daten im Format MARC21 die zusätzliche Software MarcEdit zu verwenden.

View File

@ -0,0 +1,50 @@
# TSV-Dateien in Solr laden
## Konfiguration neu einlesen
* Menü "Core Admin" aufrufen: http://localhost:8983/solr/#/~cores/gettingstarted
* Button "Reload" drücken
## Index leeren (im Terminal)
Der folgende Befehl löscht alle Daten im Index ```gettingstarted```
```
curl "http://localhost:8983/solr/gettingstarted/update?commit=true&stream.body=%3Cdelete%3E%3Cquery%3E*%3A*%3C/query%3E%3C/delete%3E"
```
## Daten laden (im Terminal)
Der folgende Befehl indexiert die Daten aus der Datei ```test.tsv```. Der Befehl ist so lang, weil Solr mitgeteilt werden muss, welche Felder mehrfachbelegt sind und mit welchem Zeichen diese getrennt sind.
```
curl "http://localhost:8983/solr/gettingstarted/update/csv?commit=true&separator=%09&f.title.split=true&f.title.separator=%E2%90%9F" --data-binary @test.tsv -H 'Content-type:text/plain; charset=utf-8'
```
Weitere mehrfachbelegte Felder ergänzen Sie, indem Sie vor dem zweiten Anführungszeichen einen weiteren Teil wie folgt anfügen:
```
&f.year.split=true&f.year.separator=%E2%90%9F
```
Beispiel:
```
curl "http://localhost:8983/solr/gettingstarted/update/csv?commit=true&separator=%09&f.title.split=true&f.title.separator=%E2%90%9F&f.year.split=true&f.year.separator=%E2%90%9F" --data-binary @test.tsv -H 'Content-type:text/plain; charset=utf-8'
```
## Prüfen Sie das Ergebnis
Rufen Sie die Browsing-Oberfläche auf (http://localhost:8983/solr/gettingstarted/browse). Machen Sie ein paar Beispielsuchen, um sicherzugehen, dass die Daten richtig indexiert wurden.
## Solr beenden und starten
Solr wurde als Prozess gestartet, der bis zum nächsten Neustart des Rechners weiterläuft. Sie können Solr jederzeit manuell beenden und starten:
* Solr beenden:```~/solr-6.5.0/bin/solr stop```
* Solr starten:```~/solr-6.5.0/bin/solr start -s ~/solr-6.5.0/example/schemaless/solr```
Etwa 15-30 Sekunden nach dem Startbefehl sollte die Administrations- und die Browsingoberfläche unter den gewohnten Adressen erreichbar sein.
## Literatur
* [Offizielle Anleitung zum Einspielen von CSV-Daten](https://wiki.apache.org/solr/UpdateCSV#Updating_a_Solr_Index_with_CSV)

View File

@ -0,0 +1,37 @@
# Installation von Solr
## Installation
* Geben Sie im Terminal folgende Befehle ein:
```
wget http://archive.apache.org/dist/lucene/solr/6.5.0/solr-6.5.0.tgz
tar zxf solr-6.5.0.tgz
```
siehe auch: [Offizielle Installationsanleitung](https://cwiki.apache.org/confluence/display/solr/Installing+Solr)
## Solr mit Beispielkonfiguration starten
* Geben Sie im Terminal folgenden Befehl ein, um Solr mit der Beispielkonfiguration "schemaless" zu starten:
```
~/solr-6.5.0/bin/solr -e schemaless
```
* Laden Sie anschließend ein paar mitgelieferte Beispieldaten, damit in der integrierten Suchoberfläche schon einmal etwas zu sehen ist:
```
~/solr-6.5.0/bin/post -c gettingstarted ~/solr-6.5.0/example/exampledocs/books.csv
```
siehe auch: [Offizielle Anleitung "Running Solr"](https://cwiki.apache.org/confluence/display/solr/Running+Solr)
## Administrationsoberfläche
Nach einer kurzen Wartezeit (max. 1 Minute) sollten folgende Oberflächen im Browser (nur innerhalb der virtuellen Maschine! Menü Anwendungen/Internet/Firefox Web Browser) erreichbar sein:
* Administrationsoberfläche: http://localhost:8983/
* Integrierte Suchoberfläche: http://localhost:8983/solr/gettingstarted/browse

View File

@ -0,0 +1,16 @@
# Konfiguration des Solr Schemas
Ab Solr Version 6.0 ist das sogenannte "managed schema" (auch "schemaless mode" genannt) voreingestellt. Solr analysiert bei der Indexierung die Daten und versucht das Schema selbst zu generieren. Felder können aber weiterhin zusätzlich manuell definiert werden.
## Schema über Admin-Oberfläche konfigurieren
* Admin-Oberfläche aufrufen. Im Menü "Core Selector" den Index "gettingstarted" auswählen. Dann im zweiten Menü "Schema" aufrufen. Direktlink: http://localhost:8983/solr/#/gettingstarted/schema
* Button "Add Field" drücken
* Name eingeben (Groß- und Kleinschreibung ist wichtig)
* Einen ```field type``` (z.B. string) auswählen
* ggf. ```multivalued``` markieren.
## Literatur
* [Einführungsartikel zu "Managed Schema"](https://support.lucidworks.com/hc/en-us/articles/221618187-What-is-Managed-Schema-)
* [Einführungsartikel zur Definition von Feldern im Schema](http://www.solrtutorial.com/schema-xml.html)