Solr Crashkurs - Interner Workshop

Post on 24-Jun-2015

235 views 1 download

description

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

Transcript of Solr Crashkurs - Interner Workshop

SOLR Crashkurs

Philipp Schaer, 24.7.2014

GESIS-interner Workshop

Motivation

• SOLR ist die zentrale Komponente hinter SSOAR und dem SOFISwiki

• Suchformulare decken aber nicht alle Fälle ab…

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

1. BLOCK: GRUNDLAGEN

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. …

Komponenten von SOLR

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.

Ein paar Begrifflichkeiten…

facets result list

operators

query

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

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

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 …

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

2. BLOCK: EINFACHE SUCHEN

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 *]

SOLR – Query Language

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

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

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

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)?

3. BLOCK: SUCHMASCHINENSPEZIALITÄTEN

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

Facettierungen

facets

query

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

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)

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'?