Kapitel 4 für 16.11.2017 ergänzt
This commit is contained in:
parent
5ddf4cd753
commit
d6b0eb024b
|
@ -49,6 +49,12 @@ Kapitel 3: Übertragungsprotokolle und Datentransformationen \(02.11.2017\)
|
||||||
|
|
||||||
Kapitel 4: Suchmaschinen, Modellierung für Meta-Suche \(16.11.2017\)
|
Kapitel 4: Suchmaschinen, Modellierung für Meta-Suche \(16.11.2017\)
|
||||||
|
|
||||||
|
* [4.1 Installation von Solr](/kapitel-4/41-installation-von-solr.md)
|
||||||
|
* [4.2 Tutorial zu Solr](/kapitel-4/42-tutorial-zu-solr.md)
|
||||||
|
* [4.3 Daten in Solr laden](/kapitel-4/43-daten-in-solr-laden.md)
|
||||||
|
* [4.4 Konfiguration des Schemas](/kapitel-4/44-konfiguration-des-schemas.md)
|
||||||
|
* [4.5 Weitere Daten indexieren](/kapitel-4/45-weitere-daten-indexieren.md)
|
||||||
|
|
||||||
Kapitel 5: Katalogsoftware und Suchmaschinenoptimierung \(30.11.2017\)
|
Kapitel 5: Katalogsoftware und Suchmaschinenoptimierung \(30.11.2017\)
|
||||||
|
|
||||||
Kapitel 6: Metadaten in Repositorien und Crosswalks \(14.12.2017\)
|
Kapitel 6: Metadaten in Repositorien und Crosswalks \(14.12.2017\)
|
||||||
|
|
|
@ -23,6 +23,11 @@
|
||||||
* [3.6 Bonus: Vergleich mit Crosswalk-Ergebnissen](kapitel-3/36-bonus-vergleich-mit-crosswalk-ergebnissen.md)
|
* [3.6 Bonus: Vergleich mit Crosswalk-Ergebnissen](kapitel-3/36-bonus-vergleich-mit-crosswalk-ergebnissen.md)
|
||||||
* [3.7 Bonus: Automatisierung](kapitel-3/37-bonus-automatisierung.md)
|
* [3.7 Bonus: Automatisierung](kapitel-3/37-bonus-automatisierung.md)
|
||||||
* [Kapitel 4](kapitel-4.md)
|
* [Kapitel 4](kapitel-4.md)
|
||||||
|
* [4.1 Installation von Solr](/kapitel-4/41-installation-von-solr.md)
|
||||||
|
* [4.2 Tutorial zu Solr](/kapitel-4/42-tutorial-zu-solr.md)
|
||||||
|
* [4.3 Daten in Solr laden](/kapitel-4/43-daten-in-solr-laden.md)
|
||||||
|
* [4.4 Konfiguration des Schemas](/kapitel-4/44-konfiguration-des-schemas.md)
|
||||||
|
* [4.5 Weitere Daten indexieren](/kapitel-4/45-weitere-daten-indexieren.md)
|
||||||
* [Kapitel 5](kapitel-5.md)
|
* [Kapitel 5](kapitel-5.md)
|
||||||
* [Kapitel 6](kapitel-6.md)
|
* [Kapitel 6](kapitel-6.md)
|
||||||
* [Kapitel 7](kapitel-7.md)
|
* [Kapitel 7](kapitel-7.md)
|
||||||
|
|
11
kapitel-4.md
11
kapitel-4.md
|
@ -1,4 +1,15 @@
|
||||||
# Kapitel 4: Suchmaschinen, Modellierung für Meta-Suche \(16.11.2017\)
|
# Kapitel 4: Suchmaschinen, Modellierung für Meta-Suche \(16.11.2017\)
|
||||||
|
|
||||||
|
In diesem Kapitel werden wir zunächst den Suchindex Apache Solr installieren und kennenlernen. Solr ist eine weit verbreite Software für Volltextsuchmaschinen und quasi Industriestandard, also nichts bibliotheksspezifisches.
|
||||||
|
|
||||||
|
Nachdem wir uns mit Solr vertraut gemacht haben, laden wir die Testdaten aus dem vorigen Kapitel als TSV in den Solr-Index. Solr versucht dabei automatisch ein Schema zu bilden, anhand derer die Daten suchbar gemacht werden. Dieses Schema werden wir kontrollieren und so anpassen, dass es für eine Meta-Suche geeignet sind.
|
||||||
|
|
||||||
|
Abschließend werden wir weitere Daten mit OpenRefine gemäß des Schemas transformieren und ebenfalls in den Solr-Index laden. So erhalten wir eine Suchmaschine zur Meta-Suche über mehrere Datenquellen.
|
||||||
|
|
||||||
|
Bitte nehmen Sie sich für die folgenden Abschnitte insgesamt etwa 8 Stunden Zeit:
|
||||||
|
|
||||||
|
* [4.1 Installation von Solr](/kapitel-4/41-installation-von-solr.md)
|
||||||
|
* [4.2 Tutorial zu Solr](/kapitel-4/42-tutorial-zu-solr.md)
|
||||||
|
* [4.3 Daten in Solr laden](/kapitel-4/43-daten-in-solr-laden.md)
|
||||||
|
* [4.4 Konfiguration des Schemas](/kapitel-4/44-konfiguration-des-schemas.md)
|
||||||
|
* [4.5 Weitere Daten indexieren](/kapitel-4/45-weitere-daten-indexieren.md)
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# 4.1 Installation von Solr
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
* Geben Sie im Terminal folgende Befehle ein:
|
||||||
|
|
||||||
|
```
|
||||||
|
wget http://archive.apache.org/dist/lucene/solr/7.1.0/solr-7.1.0.tgz
|
||||||
|
tar zxf solr-7.1.0.tgz
|
||||||
|
```
|
||||||
|
|
||||||
|
siehe auch: [Offizielle Installationsanleitung](https://lucene.apache.org/solr/guide/installing-solr.html)
|
||||||
|
|
||||||
|
## Solr mit Beispielkonfiguration starten
|
||||||
|
|
||||||
|
* Geben Sie im Terminal folgenden Befehl ein, um Solr mit der Beispielkonfiguration "techproducts" zu starten:
|
||||||
|
|
||||||
|
```
|
||||||
|
~/solr-7.1.0/bin/solr -e techproducts
|
||||||
|
```
|
||||||
|
|
||||||
|
* Laden Sie anschließend ein paar mitgelieferte Beispieldaten, damit in der integrierten Suchoberfläche etwas mehr zu sehen ist:
|
||||||
|
|
||||||
|
```
|
||||||
|
~/solr-7.1.0/bin/post -c techproducts ~/solr-7.1.0/example/exampledocs/*
|
||||||
|
```
|
||||||
|
|
||||||
|
siehe auch: [Offizielle Anleitung "Running Solr"](https://lucene.apache.org/solr/guide/running-solr.html)
|
||||||
|
|
||||||
|
## Administrations- und integrierte Suchoberfläche
|
||||||
|
|
||||||
|
Nach einer kurzen Wartezeit (max. 1 Minute) sollten folgende Oberflächen im Browser erreichbar sein:
|
||||||
|
|
||||||
|
* Administrationsoberfläche: <http://localhost:8983/>
|
||||||
|
* Integrierte Suchoberfläche: <http://localhost:8983/solr/techproducts/browse>
|
|
@ -0,0 +1,13 @@
|
||||||
|
# 4.2 Tutorial zu Solr
|
||||||
|
|
||||||
|
Zum Kennenlernen von Solr bearbeiten wir zunächst einen kleinen Teil des offiziellen Solr Tutorials der Version 7.1.
|
||||||
|
|
||||||
|
## Aufgabe: Kapitel "Basic Searching" durcharbeiten
|
||||||
|
|
||||||
|
Bearbeiten Sie jetzt den Abschnitt "Basic Searching" im offiziellen Solr Tutorial und machen Sie sich mit dem Query-Interface vertraut:
|
||||||
|
<http://lucene.apache.org/solr/guide/7_1/solr-tutorial.html#tutorial-searching>
|
||||||
|
|
||||||
|
## Hinweise
|
||||||
|
|
||||||
|
* Geben Sie auch die im Tutorial genannten ```curl```-Befehle ins Terminal ein.
|
||||||
|
* Den folgenden Abschnitt "Exercise 1 Wrap Up" bitte nicht bearbeiten.
|
|
@ -0,0 +1,66 @@
|
||||||
|
# 4.3 Daten in Solr laden
|
||||||
|
|
||||||
|
## Solr beenden und starten
|
||||||
|
|
||||||
|
Solr wurde als Prozess gestartet, der bis zum nächsten Neustart des Rechners weiterläuft. Starten Sie jetzt Solr mit folgenden Befehlen neu, damit wir nicht mehr im Beispielverzeichnis `techproducts` arbeiten, sondern im Standardverzeichnis.
|
||||||
|
|
||||||
|
* Solr beenden:`~/solr-7.1.0/bin/solr stop`
|
||||||
|
* Solr starten:`~/solr-7.1.0/bin/solr start`
|
||||||
|
|
||||||
|
Etwa 15-30 Sekunden nach dem Startbefehl sollte die Administrations- und die Browsingoberfläche unter den gewohnten Adressen erreichbar sein.
|
||||||
|
|
||||||
|
## Index erstellen \(im Terminal\)
|
||||||
|
|
||||||
|
Erstellen Sie jetzt einen eigenen Suchindex mit dem Namen `htw`:
|
||||||
|
|
||||||
|
```
|
||||||
|
~/solr-7.1.0/bin/solr create -c htw
|
||||||
|
```
|
||||||
|
|
||||||
|
## Daten aus Kap. 3.5 laden \(im Terminal\)
|
||||||
|
|
||||||
|
Der folgende Befehl indexiert die Daten aus der Datei `einstein.tsv` (ganz am Ende mit der öffnenden spitzen Klammer als input benannt) im Suchindex `htw`.
|
||||||
|
|
||||||
|
```
|
||||||
|
curl "http://localhost:8983/solr/htw/update/csv?commit=true&separator=%09&split=true&f.title.separator=%E2%90%9F" --data-binary @- -H 'Content-type:text/plain; charset=utf-8' < einstein.tsv
|
||||||
|
```
|
||||||
|
|
||||||
|
Erläuterungen des Befehls:
|
||||||
|
|
||||||
|
* Die Basis der URL, die mit curl aufgerufen wird (`http://localhost:8983/solr/htw/update/csv`) ist die Adresse des CSV-Update-Handlers von Solr für den Index `htw`.
|
||||||
|
* Der Teil `commit=true` sorgt dafür, dass die Daten sofort in der Anzeige sichtbar werden.
|
||||||
|
* Bei TSV-Dateien muss das Trennzeichen (`separator=%09`) explizit mitgegeben werden.
|
||||||
|
* Solr muss außerdem mitgeteilt werden, dass Felder mehrfachbelegt sind (`split=true`) und mit welchem Zeichen diese jeweils getrennt sind (`f.title.separator=%E2%90%9F`)
|
||||||
|
* Der ganze hintere Teil `--data-binary @- -H 'Content-type:text/plain; charset=utf-8'` ist spezifisch für das Senden von Dateien mit curl.
|
||||||
|
|
||||||
|
Weitere mehrfachbelegte Felder ergänzen Sie, indem Sie vor dem zweiten Anführungszeichen einen weiteren Teil wie folgt anfügen. Beispiel für das Feld `year`:
|
||||||
|
|
||||||
|
```
|
||||||
|
&f.year.separator=%E2%90%9F
|
||||||
|
```
|
||||||
|
|
||||||
|
## Prüfen Sie das Ergebnis
|
||||||
|
|
||||||
|
Gegebenenfalls erhalten Sie bereits auf den `curl`-Befehl eine Fehlermeldung, dass Daten nicht zum Schema passen. Solr versucht in der Standardeinstellung die Datentypen (Text, Zahl, Datum, usw.) automatisch zu erkennen und generiert daraus automatisch ein Schema. Wenn später in der Datei noch andere Daten folgen, die nicht zum "erratenen" Schema passen, dann bricht der Import ab. Dieses Problem behandeln wir im folgenden Kapitel.
|
||||||
|
|
||||||
|
Fehlermeldungen finden Sie in der Administrationsoberfläche im Bereich "Logging": <http://localhost:8983/solr/#/~logging>
|
||||||
|
|
||||||
|
Rufen Sie die Browsing-Oberfläche auf \([http://localhost:8983/solr/gettingstarted/browse](http://localhost:8983/solr/gettingstarted/browse)\). Machen Sie ein paar Beispielsuchen, um sicherzugehen, dass die Daten richtig indexiert wurden.
|
||||||
|
|
||||||
|
## Falls etwas völlig schiefgeht...
|
||||||
|
|
||||||
|
Der folgende Befehl löscht alle Daten im Index `htw`:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl "http://localhost:8983/solr/htw/update?commit=true&stream.body=%3Cdelete%3E%3Cquery%3E*%3A*%3C/query%3E%3C/delete%3E"
|
||||||
|
```
|
||||||
|
|
||||||
|
Wenn auch andere Einstellungen (wie z.B. das Schema) durch fehlerhafte Importe verhunzt sind, dann können Sie im Administrationsbereich "Core Admin" auch den ganzen Suchindex ("Core") inklusive aller Einstellungen löschen. Das Löschen wird dort vornehm als "unload" bezeichnet.
|
||||||
|
|
||||||
|
<http://localhost:8983/solr/#/~cores/htw>
|
||||||
|
|
||||||
|
Anschließend können Sie oben beim Abschnitt "Index erstellen" wieder beginnen.
|
||||||
|
|
||||||
|
## Literatur
|
||||||
|
|
||||||
|
* [Offizielle Anleitung zum Einspielen von CSV-Daten](https://lucene.apache.org/solr/guide/7_1/uploading-data-with-index-handlers.html#csv-formatted-index-updates)
|
|
@ -0,0 +1,41 @@
|
||||||
|
# 4.4 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 "htw" auswählen. Dann im zweiten Menü "Schema" aufrufen. Direktlink: <http://localhost:8983/solr/#/htw/schema>
|
||||||
|
* Button "Add Field" drücken
|
||||||
|
* Name eingeben (Groß- und Kleinschreibung ist wichtig)
|
||||||
|
* `field type` (z.B. string) auswählen
|
||||||
|
* ggf. die Checkbox `multivalued` markieren, wenn das Feld mehrere Werte (getrennt durch ein Trennzeichen) enthält
|
||||||
|
|
||||||
|
## "Catchall" Copy Field anlegen
|
||||||
|
|
||||||
|
In der Standardkonfiguration gibt es keine übergreifende Suche. Im [Query-Interface](http://localhost:8983/solr/#/htw/query) und in der [integrierten Suchoberfläche](http://localhost:8983/solr/techproducts/browse) müsste stets ein Feld bei der Suche definiert werden. Damit ähnlich wie bei dem `techproducts`-Tutorial eine freie Texteingabe möglich wird, definieren wir eine Kopieranweisung aller Werte (`*`) in das Standard-Feld (`_text_`).
|
||||||
|
|
||||||
|
* Button "Add Copy Field" drücken
|
||||||
|
* source: `*`
|
||||||
|
* destination: `_text_`
|
||||||
|
|
||||||
|
## Neuindexierung
|
||||||
|
|
||||||
|
Damit die Änderungen wirksam werden, müssen wir die Daten erneut indexieren.
|
||||||
|
|
||||||
|
Schritt 1: Index leeren:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl "http://localhost:8983/solr/htw/update?commit=true&stream.body=%3Cdelete%3E%3Cquery%3E*%3A*%3C/query%3E%3C/delete%3E"
|
||||||
|
```
|
||||||
|
|
||||||
|
Schritt 2: `einstein.tsv` indexieren:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl "http://localhost:8983/solr/htw/update/csv?commit=true&separator=%09&split=true&f.title.separator=%E2%90%9F" --data-binary @- -H 'Content-type:text/plain; charset=utf-8' < einstein.tsv
|
||||||
|
```
|
||||||
|
|
||||||
|
## Literatur
|
||||||
|
|
||||||
|
* [Exercise 2: Modify the Schema and Index Films Data (im Solr Tutorial)](http://lucene.apache.org/solr/guide/7_1/solr-tutorial.html#exercise-2)
|
||||||
|
* [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)
|
|
@ -0,0 +1,17 @@
|
||||||
|
# 4.5 Weitere Daten indexieren
|
||||||
|
|
||||||
|
Um eine Meta-Suche über verschiedene Datenquellen zu ermöglichen, müssen alle Daten nach dem gleichen Schema indexiert werden. Nur wenn es große Überschneidungen bei den Suchfeldern gibt, macht eine übergreifende Suche mit Filtermöglichkeiten (Facetten) Sinn.
|
||||||
|
|
||||||
|
Wir haben mit Dublin Core bereits ein Schema verwendet, dass als kleinster gemeinsamer Nenner auch für andere Daten gut geeignet ist. Damit wir weitere Daten indexieren können, müssen wir diese also ebenfalls so transformieren, dass Sie dem Dublin Core Schema folgen.
|
||||||
|
|
||||||
|
In Kapitel 3 haben wir im OpenRefine Tutorial mit Daten des Powerhouse Museum gearbeitet. Diese Daten können wir indexieren, wenn wir zuvor die Spalten gemäß der Feldbezeichnungen in unserem Schema umbenennen. Weiterhin benötigt Solr immer einen eindeutigen Identifier pro Datensatz (bei unseren Tabellendaten also pro Zeile).
|
||||||
|
|
||||||
|
## Aufgabe 1: Transformieren Sie die Daten des Powerhouse Museum mit OpenRefine
|
||||||
|
|
||||||
|
* Benennen Sie die Spalten so um, dass Sie auf die Feldbezeichnungen in unserem Schema (Dublin Core) passen.
|
||||||
|
* Erstellen Sie eine Spalte `id` mit einem eindeutigen Identifier pro Zeile
|
||||||
|
* Exportieren Sie die Daten als TSV
|
||||||
|
|
||||||
|
## Aufgabe 2: Indexieren Sie die Daten in Solr
|
||||||
|
|
||||||
|
* Verwenden Sie dazu den bekannten Befehl mit `curl` (vgl. Kap. 4.3/4.4)
|
Loading…
Reference in New Issue