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. …
Wie funktioniert eine Suchmaschine?
http://nlp.stanford.edu/IR-book/html/htmledition/putting-it-all-together-1.html
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
Und wie komme ich zu den Feldbezeichnern?
http://sofis:8080/solr/#/sofis/schema-browser?field=projektFreitext
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'?
Top Related