Solr Crashkurs - Interner Workshop

26
SOLR Crashkurs Philipp Schaer, 24.7.2014 GESIS-interner Workshop

description

Kurze interne Einführung für die Suchsmaschine SOLR für Dokumentare und Bibliothekare bei GESIS.

Transcript of Solr Crashkurs - Interner Workshop

Page 1: Solr Crashkurs - Interner Workshop

SOLR Crashkurs

Philipp Schaer, 24.7.2014

GESIS-interner Workshop

Page 2: Solr Crashkurs - Interner Workshop

Motivation

• SOLR ist die zentrale Komponente hinter SSOAR und dem SOFISwiki

• Suchformulare decken aber nicht alle Fälle ab…

Page 3: Solr Crashkurs - Interner Workshop

Agenda

• 1. Block: Grundlagen – Grundlegender Aufbau/Funktionsweise SOLR – HTTP Crashkurs – GET Parameter – Praktische Übung

• 2. Block: Einfache Suchen – Feldbasierte Suche – Boolesche Suchoperatoren – Ausgabeformate – Praktische Übung

• 3. Block: Suchmaschinenspezialitäten – Facetten – Ranking vs. Sortierung – Praktische Übung

Page 4: Solr Crashkurs - Interner Workshop

1. BLOCK: GRUNDLAGEN

Page 5: Solr Crashkurs - Interner Workshop

in a nutshell

• SOLR

– ist eine Suchmaschine (keine Datenbank),

– stellt einen Index zur Verfügung,

– arbeitet über HTTP,

– hat ein grafisches Benutzungsinterface,

– beherrscht Relevance-Ranking (Vektorraum),

– beherrscht Boolesche Anfragen,

– hat ein flexibles Datenschema,

– uvm. …

Page 7: Solr Crashkurs - Interner Workshop

Komponenten von SOLR

Page 8: Solr Crashkurs - Interner Workshop

Die Indexierungspipeline

Tokenizer

Tokens Friends Romans Countrymen

Linguistische Module (z.B. Spellchecker, Stemmer etc.)

Modifizierte Tokens friend roman countryman

Indexer

Invertierter Index

friend

roman

countryman

Dokument Friends, Romans, countrymen.

Page 9: Solr Crashkurs - Interner Workshop

Ein paar Begrifflichkeiten…

facets result list

operators

query

Page 10: Solr Crashkurs - Interner Workshop

HTTP – Basiswissen

• Hypertext Transfer Protocol (HTTP)

• Zentrales Übertragungsprotokoll im Internet

• Ressourcen werden über URI adressiert:

Protokoll Host Ressource

http://www.server.de/index.html?werbung=ja

GET-Parameter

Page 11: Solr Crashkurs - Interner Workshop

HTTP GET-Parameter

• Es gibt viele grundlegende HTTP Befehle:

– GET: Abruf einer Ressource (z.B. Wikipedia-Seite)

– POST: Absenden einer Ressource (z.B. Formular)

• Beiden können Parameter übergeben werden: /wiki/Spezial:Search?search=Katzen&go=Artikel

Argument Wert

search Katzen

go Artikel

Page 12: Solr Crashkurs - Interner Workshop

Besondere Regeln

• Beachte Einsatz von ? und & im Parameter!

• Manche Zeichen müssen kodiert werden:

• Braucht man aber nicht händisch machen:

http://www.w3schools.com/tags/ref_urlencode.asp

Leerzeichen ? & # …

+ oder %20 %3F %26 %23 …

Page 13: Solr Crashkurs - Interner Workshop

1. Übung: URL-Parameter

• Firefox starten und URL Shooter installieren: https://addons.mozilla.org/de/firefox/addon/url-shooter/

• Auf SSOAR oder das SOFISwiki gehen – Suche starten,

– versuchen die URL-Parameter zu verstehen

– und auch zu verändern

• Kurz protokollieren und Ergebnisse in der Gruppe vorstellen

Page 14: Solr Crashkurs - Interner Workshop

2. BLOCK: EINFACHE SUCHEN

Page 15: Solr Crashkurs - Interner Workshop

Generelle Syntax

• Suche überall: ?q=geld

• Suche in einem Feld: ?q=title:geld

• Suche nach allem: ?q=*:*

• Boolesche Suche:

– ?q=geld AND liebe

– ?q=geld OR liebe

– ?q=geld AND NOT liebe

• Suche nach „Nichts“: ?q=[* TO *]

Page 16: Solr Crashkurs - Interner Workshop

SOLR – Query Language

https://wiki.apache.org/solr/SolrQuerySyntax

Page 17: Solr Crashkurs - Interner Workshop

Unterschiedliche Feldtypen

• String – SOFISwiki: Am Suffix „_s“ zu erkennen – SSOAR: Ggf. „_ac“ oder „_sort“ – Inhalte sind 1:1 so, wie im Original

• Text / General_Text / Text_en / etc… – SOFISwiki: am Suffix „_t“ zu erkennen – SSOAR: Kein Suffix (Standard) – Inhalte sind durch eine Stopwortliste, Tokenizer, Stemmer

usw. vorverarbeitet

• Date / Int / etc… – Datumsfelder, Zahlenwerte uvm. werden hier jetzt erstmal

nicht behandelt

Page 19: Solr Crashkurs - Interner Workshop

Aber die Ausgabe kann ja keiner lesen!

• Ausgabe nur einzelner Felder: ?fl=feld1,feld2 (Beispiel: ?fl=pagetitle,Id_s)

• Ausgabe z.B. in JSON, statt XML: ?wt=json

• Ausgabe von 20 oder unendliche vielen Einträgen: ?rows=20 / ?rows=-1 (vorsicht!)

• Anfrage nach bestimmten Kriterium filtern: ?fq=feld:wert (Beispiel: ?fq=category:Projekte)

• Einrücken oder nicht: ?indent=true & ?indent=false

Page 20: Solr Crashkurs - Interner Workshop

2. Übung: Feldbasierte Suchen

• SOFISwiki: 1. Anzeigen aller Projekte eines Jahrgangs mit z.B. der Einschränkung

„AND Rnr aufgefüllt“ (= alle Wiederholungsmeldungen eines Jahrgangs) bzw. „NOT Rnr ausgefüllt“ (= alle Neuaufnahmen eines Jahrgangs)

2. Anzeige aller Projekte mit einer bestimmten Institution (z.B. DFG) eines bestimmten Jahrgangs

3. Art der Forschung in eine Abfrage einbeziehen

• SSOAR: 1. Wie viele Datensätze haben Volltexte und wie viele Datensätze

verlinken auf einen externen Volltext? 2. Zeige mir alle Datensätze an, die im Feld

'ssoar.contributor.institution' den Eintrag GIGA haben. 3. Wie viele Datensätze haben einen Übersetzungstitel

(dc.title.alternative)?

Page 21: Solr Crashkurs - Interner Workshop

3. BLOCK: SUCHMASCHINENSPEZIALITÄTEN

Page 22: Solr Crashkurs - Interner Workshop

Sortierung

• Normalerweise werden die Ergebnisse nach Relevanz sortiert (Vektorraummodell)

• Mit Hilfe des Parameters ?sort kann aber auch nach einem festen Kriterium sortiert werden

• Die Reihenfolge kann sein: – Aufsteigend: ?sort=feld asc

– Absteigend: ?sort=feld desc

• Beispiele: – ?q=*:*&sort:dateIssued.year_sort asc

Page 23: Solr Crashkurs - Interner Workshop

Facettierungen

facets

query

Page 24: Solr Crashkurs - Interner Workshop

Facettierung

• „Welche Felder treten in meiner Ergebnissemenge wie oft auf?“

• ?facet=true&facet.field=feld

• Ein Beispiel (wer kann erraten, was wir hier sehen werden?) http://www.server.info/solr/search/select/?q=*%3A*&facet=true &facet.field=dateIssued.year &rows=0

https://wiki.apache.org/solr/SimpleFacetParameters

Page 25: Solr Crashkurs - Interner Workshop

Gesammelte Fragen: SOFISwiki

1. Gibt es doppelte/unvollständige/zu lange Erfassungsnummern (immer 8 Zahlen) im SOFISwiki (~ Dubletten- bzw. Plausibiliätskontrolle)

2. Welche Institution hat die meisten Projekte? 3. In welchem Projekt steht ein Leiter, fehlt aber ein

Bearbeiter bzw. steht ein Bearbeiter, fehlt aber ein Betreuer?

4. Wo steht im Eingabefeld der Veröffentlichungen Text, das Häkchen der Auswahl (ja, nein, geplant) steht aber auf „keine Angabe“ (bzw. auf „nein“/“geplant“)?

5. Anzeige aller Hauptklassifikationen eines Jahrgangs (bzw. Verteilung über den gesamten Bestand)

Page 26: Solr Crashkurs - Interner Workshop

Gesammelte Fragen: SSOAR

1. Zeige mir alle Datensätze an, die im Zeitraum vom 1.5.2013 bis zum 31.7.2014 veröffentlicht wurden.

2. Welche Datensätze haben in der Bandangabe (dc.source.volume) nicht nur die Bandzählung, sondern auch andere Zeichen (Z.B. 'Bd.', 'Vol.') als Einträge?

3. Welche Zeitschriftenartikel (dc.type.stock) haben im Feld Begutachtungsstatus (dc.description.pubstatus) den Eintrag 'Preprint' bzw. die ID '3'?