Einführung in

Transcription

Einführung in
Einführung in
Apache Solr
PRAXISEINSTIEG IN DIE INNOVATIVE SUCHTECHNOLOGIE
Markus Klose & Daniel Wrigley
Einführung in Apache Solr
Markus Klose & Daniel Wrigley
Beijing · Cambridge · Farnham · Köln · Sebastopol · Tokyo
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen
keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und
deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind
möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den
Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Kommentare und Fragen können Sie gerne an uns richten:
O’Reilly Verlag
Balthasarstr. 81
50670 Köln
E-Mail: [email protected]
Copyright:
© 2014 by O’Reilly Verlag GmbH & Co. KG
1. Auflage 2014
Die Darstellung eines Herefordrinds im Zusammenhang mit dem
Thema Apache Solr ist ein Warenzeichen von O’Reilly Media, Inc.
Bibliografische Information Der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der
Deutschen Nationalbibliografie; detaillierte bibliografische Daten
sind im Internet über http://dnb.ddb.de abrufbar.
Lektorat: Alexandra Follenius, Köln
Fachliche Unterstützung: Christian Trabold, Hamburg
Korrektorat: Sibylle Feldmann, Düsseldorf
Satz: reemers publishing services gmbh, Krefeld; www.reemers.de
Umschlaggestaltung: Michael Oreal, Köln
Produktion: Karin Driesen, Köln
Belichtung, Druck und buchbinderische Verarbeitung:
Druckerei Kösel, Krugzell; www.koeselbuch.de
ISBN: 978-3-95561-421-8
Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.
Inhalt
Vorwort
IX
........................................................
Einleitung
......................................................
XI
1 Schnelleinstieg in Solr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Was ist Solr?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Was ist Lucene? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Was kann Solr?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Community. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einsatzmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein kurzer historischer Rückblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Also ist Solr Google? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erste Schritte – Solr entpacken und starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apache Solr herunterladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apache Solr starten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Inhalte indexieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die erste Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die ersten Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
2
2
2
5
5
6
6
7
7
7
10
11
13
2 Die Konzepte von Solr kennenlernen
15
.................................
Apache Solr innerhalb einer Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Grundaufbau von Solr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indexierung – UpdateRequestHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Suche und Suchfeatures – SearchHandler . . . . . . . . . . . . . . . . . . . . . . . . . . .
Echtzeitsuche – RealTimeGetHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rückgabe des Ergebnisses – ResponseWriter. . . . . . . . . . . . . . . . . . . . . . . . .
15
17
17
18
21
23
|
V
Administration – AdminHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausfallsicherheit – ReplicationHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Architektur innerhalb einer Solr-Instanz – CoreAdminHandler . . . . . . . . . .
Die Indexierung – Out-of-the-Box-Möglichkeiten . . . . . . . . . . . . . . . . . . . . . . . .
Indexierung von XML-, CSV-, JSON-Dateien – UpdateRequestHandler . . .
Extraktion von Inhalt – Solr Cell – ExtractingRequestHandler . . . . . . . . . . .
Datenbanken, RSS, Wikipedia, … indexieren – DataImportHandler. . . . . . .
Beeinflussung des Indexierungsprozesses – UpdateRequestProcessors . . . . .
Die Suche – Wie kann ich suchen?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einfache Suche – Termsuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boolesche Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einsatz von Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Query Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fuzzy Search – Ungenaue Suche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Phrasensuche mit dem Lucene Query Parser . . . . . . . . . . . . . . . . . . . . . . . . .
Range-Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Filter-Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sortierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
35
35
45
45
48
50
59
67
67
68
70
71
80
81
81
82
82
3 Den Index konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Der Lucene-Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operationen auf dem Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Schema-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Solr-Feldtypen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Solr-Felder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Analyse-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration des Analyse-Prozesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1. Schritt: CharFilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Schritt: Tokenizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Schritt: TokenFilter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Typische Anwendungsfälle der Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die sprachspezifische Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Analyse-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein Blick in den Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
86
90
91
94
96
98
98
100
102
106
117
121
124
128
4 Was kann Solr out-of-the-box? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Die Konfigurationsdatei solrconfig.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
VI
| Inhalt
Index-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Query-Einstellungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Request Dispatcher-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration der Admin-Oberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Such-Features out-of-the-box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Velocity und der /browse-RequestHandler . . . . . . . . . . . . . . . . . . . . . . . . . .
Facetten – Suchergebnisse verfeinern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AutoSuggest – Suchbegriffe vorschlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Highlighting – Suchbegriffe im Treffer hervorheben . . . . . . . . . . . . . . . . . . .
Result Grouping – ähnliche Dokumente gruppieren . . . . . . . . . . . . . . . . . . .
Meinten Sie … – Tippfehler ausbessern . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MoreLikeThis – ähnliche Dokumente finden. . . . . . . . . . . . . . . . . . . . . . . . .
Elevate – Top-Treffer definieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terms-Komponente – Solr-Felder auslesen . . . . . . . . . . . . . . . . . . . . . . . . . .
TermVector-Komponente – Term-Informationen auswerten . . . . . . . . . . . .
Stats-Komponente – statistische Auswertung . . . . . . . . . . . . . . . . . . . . . . . .
/browse-RequestHandler für die Wikipedia. . . . . . . . . . . . . . . . . . . . . . . . . .
135
136
137
137
138
138
141
151
156
160
164
169
174
178
183
186
188
5 Scoring und Relevanz beeinflussen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Precision versus Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Den Scoring-Mechanismus verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konstantes Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lucene-Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der TF-IDF-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Custom-TF-IDF-Scoring. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scoring-Probleme analysieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lucenes Explain TF-IDF-Funktionalität. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das Scoring beeinflussen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Query Parser für die Scoring-Manipulation nutzen . . . . . . . . . . . . . . . . . . . .
Mit FunctionQueries das Scoring beeinflussen . . . . . . . . . . . . . . . . . . . . . . .
Typische Scoring-Anwendungsfälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Skalierung der Suche – die Solr-Architektur gestalten
...................
Master/Slave-Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indexierung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mit Replication Backups erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SolrCloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reichen Replication und Sharding nicht aus? . . . . . . . . . . . . . . . . . . . . . . . .
191
193
193
194
194
197
198
198
203
203
209
215
219
219
224
224
232
234
234
Inhalt | VII
SolrCloud – Diese Gedanken stecken hinter dieser Innovation . . . . . . . . . . .
Who is Who oder: Die Terminologie der SolrCloud . . . . . . . . . . . . . . . . . . .
Zero-Installation – einfach loslegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Indexieren und Suchen in der SolrCloud . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erhöhung der Ausfallsicherheit der Administrationsseite – externes
ZooKeeper-Ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mehr Infos – clusterstate.json. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SolrCloud-Verwaltung – Collections-API . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wohin gehen meine Dokumente? – Document Routing . . . . . . . . . . . . . . . .
Verwaltung mehrerer Collections in der SolrCloud . . . . . . . . . . . . . . . . . . . .
Pitfalls – Auf was Sie sonst noch achten sollten . . . . . . . . . . . . . . . . . . . . . . .
234
235
236
239
240
250
252
263
266
268
7 Ein Blick über den Tellerrand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Mit Solr arbeiten – Client-APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liste der verfügbaren Client-APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der Java-Client – SolrJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deployment von Solr in Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tomcat-Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tomcat-Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Solr-Deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Monitoring Ihrer Solr-Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JMX-Aktivierung und Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Log-Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Community – Wie kann ich zum Projekt beitragen?. . . . . . . . . . . . . . . . . . .
Die Apache Software Foundation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apache Hadoop – Lösung für verteilte Systeme . . . . . . . . . . . . . . . . . . . . . . .
Apache Mahout – Clustering, Klassifikation & Recommendations . . . . . . . .
Apache Stanbol – Content Enrichment . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apache OpenNLP – Verarbeitung natürliche Sprache . . . . . . . . . . . . . . . . . .
Apache Nutch – Webseiten crawlen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Apache ManifoldCF – flexibles Crawling-Framework . . . . . . . . . . . . . . . . . .
Die Konkurrenz – Elasticsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Deutsche Wikipedia mit Elasticsearch indexieren . . . . . . . . . . . . . . . . . .
271
272
273
274
275
275
276
278
278
283
285
286
287
288
291
293
294
294
295
295
Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Index
VIII |
Inhalt
..........................................................
313
Vorwort
Apache Solr is a fast, scalable and easy to use open source search engine built on top of
the ever popular Apache Lucene Java library. Chances are, if you picked up this book,
you already knew that. But what you may not have known is that both Lucene and Solr
have come a long ways since their humble beginnings and now represent the most widely
deployed search technology on the planet. Solr and Lucene have been developing at a
dizzying pace, rising to meet the challenges of modern day big data applications with
hundreds of billions of documents and tens of thousands of queries per second. Whether
it is Solr's solid keyword matching capabilities, its faceting capabilities or it's built-in support for complex geospatial calculations, chances are Solr can help you solve your search
problems.
Calling on their extensive experience building and deploying Solr applications, Markus
and Daniel have put together a compelling guide to Solr for the German audience,
covering all of the most important topics one needs to understand the full breadth and
depth of Solr's capabilities. As you dive into this book, I hope you'll not only recognize
the sheer capabilities of what Solr has to offer today, but will also see the opportunity to
join the Solr community to continue to shape and evolve Solr for the foreseeable future.
Happy Searching,
Grant Ingersoll
Mitgründer von LucidWorks, Dezember 2013
| IX
Einleitung
Wenn Sie dieses Buch in den Händen halten, brauchen Sie vermutlich keine lange Erklärung dazu, warum ein Buch zum Thema Apache Solr geschrieben werden sollte. Dennoch
wollen wir einen kleinen Einblick in die Hintergründe geben. Ein deutsches Buch zum
Thema Solr ist eigentlich schon längst überfällig, denn das Interesse an Open Source-Software rund um Suchtechnologien steigt stetig, und das ist nicht nur auf den Suchserver
selbst beschränkt, sondern bezieht sich auch auf Randthemen wie beispielsweise die
semantische Suche. Auf solche Themen werden wir im letzten Kapitel kurz eingehen,
jedoch liegt der Hauptfokus auf einer Einführung in Solr. Die Bedeutung von Apache Solr
im Markt erschließt sich bereits ein wenig, wenn Sie das Ranking der Suchmaschinen von
DB-Engines ansehen. Dort ist Solr die am besten bewertete Suchmaschine1 – und das mit
Abstand. Bei allen Datenbankmanagementsystemen liegt Solr immerhin auf einem
beachtlichen zwölften Platz und muss sich nur Branchenriesen wie Oracle oder MySQL
geschlagen geben.2 Dass Solr und Lucene, die Kernbibliothek von Solr, zusammen zwischen 60.000 und 100.000 Mal pro Monat heruntergeladen werden, unterstreicht deren
Bedeutung in der Open Source-Welt.3
Suche ist heutzutage kein kleines Feature mehr, Suche ist vielmehr eine Notwendigkeit,
die sich auf viele Bereiche des Business ausdehnt (Intranetsuche, Webshops, Suche in
unterschiedlichen Datenquellen). Wer seine Informationen nicht oder nur langsam findet, investiert viel Zeit und Geld, das er besser einsetzen könnte. Im schlimmsten Fall
werden komplette Entwicklungen oder Forschungen doppelt betrieben, wenn man beispielsweise nicht weiß, dass eine andere Abteilung bereits daran gearbeitet hat.
Ein weiterer Grund für das steigende Interesse an Solr ist Lucene. Lucene ist die zugrunde
liegende Bibliothek, die aktuell eine der besten im Bereich der Indexverwaltung ist. Mit
1 Ranking der Suchmaschinen von DB-Engines, Stand: 29.12.2013: http://db-engines.com/de/ranking/suchmaschine
2 Ranking der Datenbankmanagementsysteme von DB-Engines, Stand: 29.12.2013: http://db-engines.com/de/
ranking
3 Will Hayes' Webinar auf Slideshare: http://de.slideshare.net/LucidImagination/introducing-lucidworks-app-forsplunk-enterprise-webinar
| XI
Lucene kann auf einfache Weise ein kleiner und transportabler Index erstellt werden,
dies macht sie so sehr flexibel. Des Weiteren wird Lucene in mehreren Produkten eingesetzt, unter anderem auch in Elasticsearch, einem weiteren Open Source-Projekt rund
um die Suchservertechnologie. Diese direkte Konkurrenz setzt beide Frameworks unter
Druck und lässt potenzielle Anwender genauer hinschauen, um sich das passende Produkt aussuchen zu können.
In den letzten Jahren wurden viele kommerzielle Produkte aufgekauft, in bestehende
Software integriert, oder es wurde gar der Support für bestimmte Systeme eingestellt. Ein
Beispiel hierfür ist Fast ESP, das von Microsoft aufgekauft worden ist. Microsoft stellt
den Linux-Support ein, wodurch nun eine Menge Anwender gezwungen wird, auf eine
Alternative wie Solr auszuweichen.
Sie sehen also, dass es viele Gründe dafür gibt, ein Buch über diese spannende Open
Source-Technologie zu schreiben. Und wir haben uns dieses Themas gern angenommen.
Wenn in diesem Abschnitt ein paar Begriffe vorgekommen sind, mit denen Sie vielleicht
nicht besonders vertraut sind, machen Sie sich keine Sorgen! Zum einen gibt es ein Glossar, in dem Sie jederzeit nachschlagen können, zum anderen versuchen wir, die Begriffe
immer zumindest kurz zu erläutern – insbesondere wenn sie das erste Mal verwendet
werden.
An wen sich dieses Buch richtet
Dieses Buch richtet sich an Administratoren und Entwickler im IT-Bereich, die Apache
Solr als Suchserver im E-Commerce-Bereich, im firmeneigenen Intranet oder in ihrer
Webapplikation bereits einsetzen und/oder sich einen Überblick über die Funktionen
verschaffen wollen. Aber auch jeder Open Source-Interessierte, der eine Einführung in
die Suchtechnologie mit der führenden Softwarelösung von Apache sucht, wird hier
fündig.
Die Beispielkonfigurationen, Anleitungen, Tipps und Pitfalls sollen Sie in die Lage versetzen, einen schnellen Einstieg in die Praxis zu bekommen, um so eine individuelle Suchlösung auf Basis von Apache Solr aufzusetzen.
Aufbau dieses Buchs
Dieses Buch ist in sieben thematisch unabhängige Kapitel unterteilt. Sie müssen daher
nicht bei Kapitel 1 beginnen und streng den einzelnen Seiten bis zum Schluss folgen. In
der Regel sollten Sie sich jedes Kapitel für sich vornehmen können, wie es Ihnen beliebt.
Dennoch raten wir Ihnen, vor allem wenn Sie noch keine oder wenig Erfahrung mit Solr
haben, den Weg so zu beschreiten, wie er in den Kapiteln vorgegeben ist. So kann Ihnen
nichts entgehen, was die Terminologie angeht. Sollten Sie sich bei einem Begriff doch
nicht sicher sein, nutzen Sie das Glossar, das wir für Sie erstellt haben, dieses sollte Ihnen
schnell weiterhelfen können.
XII | Einleitung
Kapitel 1, Schnelleinstieg in Solr
Dieses Kapitel ist einführender Natur. Sie erhalten einen Einblick in die Unterschiede zwischen Apache Solr und Apache Lucene, dem Kern von Solr. Ein kurzer
historischer Rückblick zur Entstehung dieser Software und ein Auszug aus den Features gehören ebenso zum Inhalt wie die ersten Erfahrungen mit Solr. Sie lernen die
ersten Schritte kennen, die Sie bereits einfache Suchen absetzen lassen.
Kapitel 2, Die Konzepte von Solr kennenlernen
In diesem Kapitel werden Sie einige Konzepte und Komponenten kennenlernen, die
in diesem Suchserver zusammenarbeiten. Das sind zum einen Komponenten, die für
die Suche zuständig sind, zum anderen Komponenten, die der Indexierung, also der
Verarbeitung und Speicherung von Daten zur Suche, dienen. In einem praktischen
Beispiel zeigen wir Ihnen, wie Sie die deutsche Wikipedia indexieren können.
Außerdem lernen Sie noch diejenigen Teile von Solr kennen, die Sie für eine erfolgreiche Administration benötigen.
Kapitel 3, Den Index konfigurieren
Mit diesem Kapitel geben wir Ihnen eine Einführung in den Aufbau des Solr- bzw.
Lucene-Index. Es wird beschrieben, wie man den Index im Rahmen der Indexierung manipulieren kann. Vor allem erfahren Sie, welche Möglichkeiten der AnalyseProzess bietet, um die Inhalte von Dokumenten suchoptimiert im Index abzulegen
bzw. Suchanfragen optimal zu formulieren. Dabei wird auf die wichtigsten Komponenten der Analyse eingegangen und anhand von Beispielen demonstriert, wie man
sie einsetzen kann.
Kapitel 4, Was kann Solr out-of-the-box?
Solr bringt eine große Anzahl verschiedener Funktionalitäten wie Facetten, Meinten
Sie …, AutoSuggest und vieles mehr mit, die eine Suche zu einem Erlebnis machen
können. In diesem Kapitel beschreiben wir die wichtigsten Funktionalitäten, zeigen
auf, wie man sie konfigurieren kann, und demonstrieren am Beispiel der BrowseOberfläche, wie man sie einbinden und somit nutzen kann.
Kapitel 5, Scoring und Relevanz beeinflussen
Dieses Kapitel geht auf den TF-IDF-Relevanzalgorithmus genauer ein und zeigt auf,
mit welchen Mitteln man bei Solr sowohl die Qualität als auch die Quantität der
gefundenen Dokumente beeinflussen kann. Des Weiteren zeigen wir, welche Hilfsmittel die Solr-Admin-Oberfläche bietet, um Probleme rund um Relevanz und
Scoring zu debuggen.
Kapitel 6, Skalierung der Suche – die Solr-Architektur gestalten
Grundsätzlich wird zwischen zwei Architekturansätzen unterschieden: einer Master/Slave-Architektur und der sogenannten SolrCloud, die Ende 2012 eingeführt
wurde. Beide Ansätze werden beschrieben, sodass Sie die geeignete Wahl treffen
können.
Kapitel 7, Ein Blick über den Tellerrand
In diesem Kapitel finden Sie Informationen zum Deployment in einem Servlet-Container sowie Informationen zum Aufsetzen eines Monitorings. Wir geben einen kur-
Aufbau dieses Buchs | XIII
zen Einblick in das Geschehen hinter den Kulissen, und Sie erhalten ein paar Infos
zur Community. Außerdem enthält dieses Kapitel einen kurzen Überblick über
Technologien, die Sie mit Solr kombinieren können, um ein noch umfassenderes
und kompletteres Sucherlebnis bieten zu können. Zum Abschluss werfen wir einen
Blick auf die Konkurrenz, Elasticsearch, die zunehmend an Bedeutung gewinnt.
In diesem Buch genutzte Konventionen
Die folgenden typografischen Konventionen werden in diesem Buch verwendet:
Kursiv
Steht für neue Begriffe, Dateinamen und Pfade, URLs und E-Mail-Adressen. Viele
neue Begriffe sind in einem Glossar am Ende des Buchs definiert.
Nichtproportionalschrift
Wird für Programmlistings genutzt, aber auch für Code innerhalb eines Absatzes,
und bezieht sich auf Programmelemente wie Variablen- oder Funktionsnamen,
Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter.
Dieses Symbol weist auf einen Tipp, einen Vorschlag oder eine allgemeine
Anmerkung hin.
Dieses Symbol weist auf eine Warnung hin.
Verwendung der Codebeispiele
Dieses Buch ist dazu gedacht, Ihnen bei der Erledigung Ihrer Arbeit zu helfen. Im Allgemeinen dürfen Sie den Code in diesem Buch in Ihren eigenen Programmen oder Dokumentationen verwenden. Solange Sie den Code nicht in großem Umfang reproduzieren,
brauchen Sie uns nicht um Erlaubnis zu bitten. Zum Beispiel benötigen Sie nicht unsere
Erlaubnis, wenn Sie ein Programm unter Zuhilfenahme mehrerer Codestücke aus diesem
Buch schreiben. Wenn Sie allerdings einen Datenträger mit Beispielen aus O’ReillyBüchern verkaufen oder vertreiben wollten, müssen Sie eine Genehmigung von uns einholen. Eine Frage mit einem Zitat oder einem Codebeispiel aus dem Buch zu beantworten, erfordert keine Genehmigung. Signifikante Teile von Beispielcode aus dem Buch für
die eigene Produktdokumentation zu verwerten, ist dagegen genehmigungspflichtig.
Wir freuen uns über eine Quellenangabe, verlangen sie aber nicht unbedingt. Zu einer
Quellenangabe gehören normalerweise Autor, Titel, Verlagsangabe, Veröffentlichungsjahr und ISBN, hier also: »Markus Klose und Daniel Wrigley, Einführung in Apache Solr,
O’Reilly Verlag 2014, ISBN 978-3-95561-421-8«.
XIV | Einleitung
Sollten Sie das Gefühl haben, Ihre Verwendung der Codebeispiele könnte gegen das Fairnessprinzip oder die Genehmigungspflicht verstoßen, dann nehmen Sie bitte unter [email protected] Kontakt mit uns auf.
Kontakt
Bitte richten Sie Anfragen und Kommentare zu diesem Buch an den Verlag:
O’Reilly Verlag GmbH & Co. KG
Balthasarstraße 81
50670 Köln
Tel.: +49(0)221-973160-0
Fax: +49(0)221-973160-8
Wir haben eine Webseite zu diesem Buch eingerichtet, auf der Errata, die Codebeispiele
und zusätzliche Informationen veröffentlicht werden. Sie finden die Seite unter:
http://www.oreilly.de/catalog/einfapachesolrger/
Kommentare oder technische Fragen zu diesem Buch schicken Sie bitte per E-Mail an:
[email protected]
Weitere Informationen zum gesamten Angebot des O’Reilly Verlags finden Sie auf unserer Website: http://www.oreilly.de.
Wir sind auf Facebook: facebook.com/oreilly.de (https://www.facebook.com/oreilly.de)
Folgen Sie uns auf Twitter: twitter.com/OReilly_Verlag/ (https://twitter.com/OReilly_
Verlag)
Unsere Google+-Seite: http://bit.ly/googleplus_oreillyverlag
Danksagung
Wir möchten uns natürlich bei unserem Arbeitgeber, SHI GmbH & Co. KG bedanken.
Denn nur durch unsere tägliche Arbeit konnten wir uns das Wissen aneignen, das nötig
war, um dieses Buch zu schreiben. Doch auch für die Motivation, insbesondere in Person
unseres Chefs Herrn Spiske und unseres Kollegen Dimitri, sind wir sehr dankbar. Zudem
haben sie bereits Wochen im Voraus in ihrem Newsletter die Werbetrommel für dieses
Buch gerührt. Ob sich dadurch tatsächlich jemand durchgerungen hat, dieses Buch zu
kaufen, ist uns leider nicht überliefert, geschadet haben wird es jedoch sicherlich nicht.
Ein besonderer Dank geht an Alexandra Follenius, die uns angesprochen hat, dieses
Buch zu schreiben. Sie war es auch, die wusste, wann unsere Motivation einen Tritt in
den Hintern benötigte, um zum Ziel zu kommen. Ohne sie wären wir vermutlich noch
bei der Erstellung der groben Gliederung.
Danksagung |
XV
Ebenso geht unser Dank an Freunde und Familie, die sich ohne Bezug zur Thematik sehr
interessiert zeigten, was sich zusätzlich motivierend auf das Verfassen der Seiten ausgewirkt hat.
Als ich, Daniel, mit dem Schreiben dieses Buchs begann, habe ich noch in einer WG
gewohnt. Damals habe ich für mich folgende Regel entdeckt: Je mehr Personen unter
einem Dach wohnen, desto mehr kann die Arbeit darunter leiden. Andererseits gilt
genauso: Je mehr Personen unter einem Dach wohnen, desto mehr Hilfe wird einem
angeboten. Daher geht mein persönliches Dankeschön noch an meine beiden Ex-Mitbewohner Jan und Kusi!
XVI |
Einleitung
KAPITEL 1
Schnelleinstieg in Solr
In diesem Kapitel erhalten Sie zunächst einen Einblick in das Zusammenspiel von Apache
Solr und Apache Lucene, dem Kern von Solr. Hier finden Sie zudem einen kurzen historischen Rückblick zur Entstehung der Software und einen Überblick über die Solr-Features
und -Einsatzmöglichkeiten. Aber Sie werden auch schon erste Erfahrungen mit Apache
Solr machen können: Nach Installation und dem Starten der Software erstellen Sie einen
Index und werden dann bereits einfache Suchen absetzen.
Was ist Solr?
Solr ist ein Open Source-Suchserver aus dem Hause Apache. Die Apache Software Foundation ist so etwas wie ein Dachverband vieler Projekte. Hinter ihr stehen Sponsoren wie
Microsoft, Google oder Yahoo!. Open Source bedeutet im Prinzip, dass jeder die Software samt ihrer Quelldateien herunterladen und nach Belieben einsetzen kann, ohne
dafür zahlen zu müssen. Die Lizenzbedingungen sind natürlich etwas ausführlicher, als
in diesem Halbsatz beschrieben, aber es trifft den Nagel auf den Kopf. Und Sie haben
sich sicherlich nicht dieses Buch gekauft, um eine Abschrift der Lizenzbedingungen zu
erhalten.
Solr ist ein Framework, das um Apache Lucene gebaut wurde (Lucene selbst wird im folgenden Abschnitt etwas näher beschrieben). Dieses Framework erlaubt es, schnelle, skalierbare, innovative Suchlösungen zu erstellen, die es leicht mit kommerziellen Produkten
aufnehmen können. Es sind bereits viele zeitgemäße Features enthalten, die ohne viel
Aufwand einsetzbar sind. Diese Features sind z. B. Highlighting, die »Meinten Sie …«Funktion, Facettierung und die Gruppierung von Ergebnissen.
Zudem lässt es sich an eine Vielzahl unterschiedlicher Datenquellen, die Sie letztendlich
durchsuchen wollen, anbinden. Das heißt, es bietet sich Ihnen mit dieser Technologie die
Möglichkeit, mit einer Anwendung viele Quellen gleichzeitig durchsuchen zu können. Es
werden auch Schnittstellen geboten, die eine Integration in komplexe Anwendungen einfach ermöglichen.
|
1
Was ist Lucene?
Apache Lucene ist wie Solr ein Top-Level-Projekt der Apache Software Foundation. Es
bildet das Herzstück von Solr, denn es ist eine Einheit, die für die Indexierung, also das
Einlesen, Verarbeiten und Speichern von Daten, zuständig ist. Diese Daten müssen nicht
unbedingt strukturiert sein, wie es bei relationalen Datenbanken beispielsweise der Fall
ist. Es ist ebenso möglich, unstrukturierten Inhalt, z. B. aus PDF-Dateien, zu indexieren.
Die Daten werden so abgelegt, dass eine schnelle Suche möglich ist. Lucene selbst hat
also bereits einige wichtige Features, die für Solr extrem wichtig sind.
Was Lucene fehlt, sind Möglichkeiten zur Administration und Replikation sowie weiterführende Features, die jedoch in Solr enthalten sind. Beide Technologien sind perfekt
miteinander verschmolzen und bilden eine starke Einheit.
Was kann Solr?
Sie haben nun einen groben Überblick darüber, wie Solr und Lucene miteinander arbeiten. Noch interessanter ist jedoch die Frage, was Solr alles leisten kann. Der folgende
Abschnitt soll die Features von Solr sowie die Open Source-Community, die sich um dieses Projekt gebildet hat, kurz beleuchten, dazu wird die eine oder andere Einsatzmöglichkeit, die sich Ihnen mit diesem Produkt bietet, betrachtet.
Features
Solr bietet Ihnen eine ganze Reihe nützlicher Features an, die Sie nicht mehr selbst implementieren müssen, sondern höchstens konfigurieren und dann sofort einsetzen können.
Der nächste Abschnitt greift einige davon heraus und gibt Ihnen gleich den Hinweis, an
welcher Stelle des Buchs Sie mehr darüber erfahren können.
Skalierbarkeit
Solr hat die Fähigkeit, (nahezu) linear zu skalieren. Das bedeutet: Wenn Ihre Installation an Grenzen stoßen sollte, können Sie diese Grenzen einfach erweitern. Diesem Thema haben wir ein eigenes Kapitel gewidmet (siehe Kapitel 6). Dazu stehen
Ihnen mehrere Möglichkeiten zur Verfügung:
Wenn Ihr Index, also die Datenmenge, die Sie durchsuchen können, zu groß wird
bzw. Ihr Festplattenplatz zu klein, können Sie Sharding verwenden.
Wenn Sie mehr Suchanfragen pro Sekunde verarbeiten müssen, setzen Sie eine Master/Slave-Architektur auf mit mehreren Slaves, die Ihre Suchanfragen bearbeiten.
Seit Solr 4.0 haben Sie die Möglichkeit, Solr in einem neuen Modus zu betreiben,
der SolrCloud. Dadurch sind Sie administrativ sehr flexibel und können auf jede
Gegebenheit gut reagieren, ohne Ihre komplette Architektur neu aufsetzen zu müssen. Abschnitt »SolrCloud« auf Seite 234 gibt Ihnen einen tiefen Einblick in diese
Thematik.
2 | Kapitel 1: Schnelleinstieg in Solr
Spellchecking
Nichts frustriert mehr als eine Suche, die zu keinen Ergebnissen führt, weil man sich
vertippt hat. Mit Solr lassen sich »Meinten Sie …«-Funktionen unproblematisch und
mit sehr wenig Aufwand realisieren. So machen Sie Ihren Benutzern Vorschläge,
sollten diese sich vertippt haben. Das Beste dabei: Die Vorschläge können direkt aus
dem Index kommen. Dadurch geben Sie Ihren Benutzern eine »Treffergarantie« bei
der Suche nach diesem Vorschlag. Das erhöht die Benutzerfreundlichkeit und Fehlertoleranz Ihrer Anwendung. Abbildung 1-1 zeigt einen Vorschlag von Amazon für
die fehlerhafte Eingabe grend thaft auto.
Abbildung 1-1: »Meinten Sie …«-Funktion von Amazon
Highlighting
Warum ist dieses Dokument in der Trefferliste aufgeführt? Fragen dieser Art können immer wieder auftreten, wenn nicht auf den ersten Blick ersichtlich ist, warum
dieses Dokument bei den eingegebenen Suchbegriffen in der Trefferliste erscheint.
Das Aufkommen solcher Fragen können Sie minimieren, indem Sie durch optische
Hervorhebungen der gefundenen Suchterme deutlich machen, warum dieses Dokument in die Trefferliste gehört. Abbildung 1-2 zeigt die Google-Highlighting-Funktion. Für die Suche nach apache solr wurden diese beiden Begriffe auch in der URL
und im Titel optisch fett hervorgehoben.
Abbildung 1-2: Highlighting-Funktion von Google
Faceting
Faceting ermöglicht eine Gruppierung der Ergebnisse anhand der Inhalte der einzelnen Dokumente. So können Sie dem Benutzer ein Navigationselement anbieten, das
ihn die Ergebnismenge schnell und komfortabel einschränken lässt. In Abbildung 1-3
sehen Sie drei der Facetten, die dem Nutzer auf www.searchhub.org, einer Ressource
für die Lucene/Solr-Entwicklung, zur Verfügung gestellt werden.
AutoSuggest
Eine AutoSuggest-Funktion gehört mittlerweile auch schon zum Standardrepertoire
einer zeitgemäßen Suchapplikation. Mit ihr lassen sich Suchvorschläge beim Eintip-
Was kann Solr? |
3
Abbildung 1-3: Facetten als Navigationselemente in der Suche von www.searchhub.org
pen des Benutzers machen, sodass dieser sich weniger vertippt und schneller zum
Ziel kommen kann. In Abbildung 1-4 sehen Sie eine AutoSuggest-Funktion. Sie ist
von Zappos.com, die Solr als Suchmaschine einsetzen.
Near Real Time Search
Sie haben Inhalte, die sofort nach der Indexierung verfügbar, also durchsuchbar sein
sollen? Kein Problem mit Solr! Durch spezielle Techniken ist es möglich, dass Ihre
Nutzer den neuen Inhalt sofort auffinden können.
Administrationsoberfläche
Solr kommt mit einer fertigen Administrationsoberfläche, über die Sie nicht nur einfache, sondern auch komplexere, z. B. die Architektur betreffende Entscheidungen
treffen können, ohne eine Zeile Code zu schreiben.
Mehrere Client-APIs
Solr und Lucene sind komplett in Java geschrieben. Es gibt Client-APIs in mehreren
Sprachen, die Sie verwenden können, um Solr in Ihre Anwendung zu integrieren.
Und das sind keine exotischen, sondern weitverbreitete: Java, PHP, Ruby sind nur
einige davon.
4 | Kapitel 1: Schnelleinstieg in Solr
Abbildung 1-4: AutoSuggest-Funktion von Zappo
Community
Da Solr als Open Source-Software bereits einige Jahre auf dem Markt ist, hat sich eine
große Community um dieses Projekt gebildet. Das ist ein riesiger Vorteil für Sie, denn
dadurch können Sie auf reichhaltige Dokumentationen, Blogbeiträge, Videos und Foreneinträge zugreifen. Außerdem gibt es Mailinglisten, an die Sie gezielt Fragen stellen können. Dort antworten Ihnen nicht nur andere Nutzer, sondern auch diejenigen, die direkt
an diesem Projekt arbeiten, die sogenannten Committer. Einer von ihnen ist beispielsweise Grant Ingersoll, der sich bereit erklärt hat, das Vorwort für dieses Buch zu schreiben. Abschnitt »Die Community – Wie kann ich zum Projekt beitragen?« auf Seite 285
beschäftigt sich etwas näher mit diesem Thema.
Einsatzmöglichkeiten
Die Einsatzmöglichkeiten von Apache Solr sind zahlreich und vielfältig:
• Shopsuche.
• Intranetsuche über mehrere Quellen (E-Mail-Server, internes Wiki, ContentManagement-System etc.).
• Data Store: Sie können Ihre Datenbanken entlasten und Solr als alternativen Data
Store einsetzen.
• Log-Auswertung: Systemadministratoren kennen dieses Problem. Sie haben ein
Problem und müssen sich nun durch Unmengen von Log-Dateien kämpfen, um herauszufinden, was das Problem ist, was es verursacht hat und wie sie es beheben können. Mit Solr können Sie alle Ihre Logs indexieren und durchsuchen.
Was kann Solr? |
5
• Webseitensuche: Natürlich eignet sich Solr auch als ganz einfache Suchmaschine
auf Ihrer Internetpräsenz.
Große Firmen, die Apache Solr einsetzen, sind salesforce, shopzilla, Walmart, Qualcomm oder auch Zappos. Sie sehen also: Nicht nur kleinere Firmen setzen auf
Open Source, auch international agierende Branchengrößen setzen Solr als Suchserver
ein.
Ein kurzer historischer Rückblick
Jedes Produkt, jede Software hat einen Ursprung. Der nächste Abschnitt soll den von
Apache Solr beschreiben. Auf seiner Keynote-Präsentation auf der Lucene/Solr Revolution 2013 in San Diego beschreibt Yonik Seeley, wie das Projekt entstanden ist, was es
jetzt ist und was in Zukunft aus ihm werden wird.1 Es begann im Sommer 2004, und der
Prototyp wurde zunächst mit Fusion bezeichnet, bevor es später umbenannt wurde in
SOLAR (steht für Search On Lucene And Resin). Yonik Seeley hatte zu der Zeit bei
CNET die Aufgabe, eine Alternative für deren kommerzielle Lösung für ein Enterprise
Search-System zu finden. Und das waren sozusagen die ersten Schritte, die zu Apache
Solr führten.
Dieser erste Prototyp wurde im Jahr 2005 produktiv bei CNET eingesetzt. Anfang 2006
spendete CNET Solr der Apache Software Foundation (ASF), wo es ein Jahr später den
Incubator verließ. Das bedeutet im Kern, dass sichergestellt werden muss, dass alle Spenden den rechtlichen Statuten der Apache Software Foundation entsprechen und eine
neue Community für dieses Projekt entstehen muss, die den Führungsrichtlinien entspricht.2 Seit es also offiziell ein Projekt der ASF ist, sind über sechseinhalb Jahre vergangen, in denen viele Fortschritte gemacht wurden.
Also ist Solr Google?
Solr ist keinesfalls Google, und Google lässt sich auch nicht mit Solr nachbauen. Sollten
Sie deshalb dieses Buch gekauft haben, werden Sie enttäuscht sein.
Solr ist vielmehr ein Softwareprodukt, mit dem Sie in der Lage sind, komplexe Suchanwendungen zu bauen, das zeitgemäße Features schon mitbringt, die nur noch darauf
warten, eingebunden und konfiguriert zu werden, das skalierbar ist, auf Java basiert und
vieles mehr. Wenn Sie also Anregungen dazu suchen, warum Apache Solr für Ihre Suchanwendung die richtige Lösung ist, oder sich fragen, wie ein bestimmtes Softwarefeature
einzusetzen und einzubinden ist, dann sind Sie hier richtig. Wenn Sie die Aufgabe haben,
in Ihrer Firma eine interne Suche über den kompletten Dokumentenbestand zu entwi1 Keynote von Yonik Seeley auf der Solr/Lucene Revolution im Frühjahr 2013 http://www.youtube.com/
watch?v=7kKNde8ZS1w
2 Siehe http://incubator.apache.org/
6 | Kapitel 1: Schnelleinstieg in Solr
ckeln, und dafür nicht »alles zu Fuß« erledigen wollen, sind Sie ebenfalls hier richtig.
Oder einer Ihrer Mitarbeiter hat Ihnen vorgeschlagen, Ihre Intranetsuche mit Solr abzulösen, weil die Wartezeiten auf eine Trefferliste mit Ihrer momentan eingesetzten Software
»Ewigkeiten dauert«.
Nach dem Lesen dieses Buchs sollten Sie wissen, ob (oder vielmehr dass) Solr die richtige
Lösung für Sie bietet.
Erste Schritte – Solr entpacken und starten
Dieser Abschnitt beschreibt die Schritte, die notwendig sind, um vom Download der
Software bis zu den ersten Suchergebnissen zu kommen. Weiterhin werden einige grundlegende Begriffe geklärt, und anschließend wird eine Einführung in die Administrationsoberfläche gegeben. Nach diesen einführenden Abschnitten sind Sie in der Lage, Solr zu
starten, Inhalte »in Solr zu bekommen« und diese dann auch zu durchsuchen.
Apache Solr herunterladen
Bevor es losgehen kann, muss Apache Solr heruntergeladen werden. Dies ist auf der
Homepage von Apache Solr (http://lucene.apache.org/solr/) möglich (Abbildung 1-5).
Haben Sie das Archiv heruntergeladen, entpacken Sie es einfach in ein Verzeichnis Ihrer
Wahl. Vor der Solr-Installation ist es notwendig, dass Java in der Version 1.6 oder höher
auf Ihrem Computer installiert ist. Sind Sie sich nicht sicher oder wollen Ihre Java-Version
überprüfen, ist dies mit einem einfachen Befehl möglich. Öffnen Sie hierfür einfach ein Terminalfenster: Unter Windows tippen Sie einfach cmd oder Eingabeaufforderung in das Suchfeld ein, nachdem Sie auf den Start-Button geklickt haben. In dem Fenster, das dann
erscheint, geben Sie java -version ein, und der Output sieht ähnlich dem folgenden aus:
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
Unter Linux-Systemen öffnen Sie ein Terminalfenster und geben ebenfalls obigen Befehl
ein. Der Output sollte wieder ähnlich dem abgebildeten sein. Wichtig ist, dass Sie eine
Java-Version verwenden, die mindestens Java 1.6 entspricht. War diese Überprüfung
erfolgreich, sind die Voraussetzungen vorhanden, in die wunderbare Welt des
Open Source-Suchservers Apache Solr einzutauchen!
Apache Solr starten
Der Start von Solr ist denkbar einfach und systemunabhängig: Im Verzeichnis example
befindet sich die ausführbare Datei start.jar. Diese kann man nun folgendermaßen aufrufen:
java -jar start.jar
Erste Schritte – Solr entpacken und starten |
7
Abbildung 1-5: Apache Solr-Homepage
Für einige Sekunden kann man nun die Log-Ausgabe auf der Konsole beobachten. Nach
kurzer Zeit sind keine neuen Ausgaben mehr im Konsolenfenster zu sehen. Die letzte
Zeile weist den Benutzer darauf hin, dass ein neuer Searcher geöffnet wurde. Momentan
ist es nicht wichtig, dass Sie verstehen, was im Hintergrund alles passiert. Mehr Informationen zum Öffnen eines Searchers finden Sie in Kapitel 3, Abschnitt »Operationen auf
dem Index« auf Seite 86.
Um zu überprüfen, ob der Start erfolgreich war, öffnen Sie einen Browser Ihrer Wahl und
geben die URL http://localhost:8983/solr ein.
Hat alles funktioniert, sollte im Browser das User-Interface wie in Abbildung 1-6 zu
sehen sein.
Die Ansicht lässt sich in drei Bereiche unterteilen: Links gelangt man zu den Bereichen
Dashboard, Logging, Core Admin, Java Properties, Thread Dump und kann über eine
Drop-down-Box die einzelnen Cores einer Instanz anwählen. Diese Bereiche werden im
Folgenden erläutert, wobei für den Beginn wichtig ist, dass der Browser in etwa das in
Abbildung 1-6 gezeigte Bild darstellt.
8 | Kapitel 1: Schnelleinstieg in Solr
Abbildung 1-6: Solr Administration User Interface
Dashboard
Dieses ist in Abbildung 1-6 zu sehen und gibt einen Überblick über die laufende
Solr-Instanz. Der mittlere Bereich bietet Informationen über Solr direkt, d. h. unter
anderem, seit wann die Instanz läuft, wie der Hostname lautet und in welchem Verzeichnis der Index zu finden ist. Ebenso werden die Versionsnummern von Solr und
Lucene angezeigt. Zuletzt finden Sie noch die Java-Version und die Anzahl der zur
Verfügung stehenden Prozessorkerne.
Der rechte Bereich gibt Aufschluss über die Hardware und beantwortet die beiden
Fragen »Wie viel physischer Speicher ist belegt/frei?« und »Wie viel Swap Space ist
belegt/frei?«. Ebenso wird noch eine Momentaufnahme der JVM-Memory gegeben.
Es geht also eher um administrative Informationen.
Logging
In diesem Fenster sieht man Informationen, die von Solr ausgegeben werden und
Aufschluss über den Zustand der laufenden Instanz geben können, sollte z. B. beim
Starten von Solr nicht alles funktioniert haben. Außerdem lassen sich über diesen
Bereich die Logging-Stufen der einzelnen Solr-Komponenten einstellen. Feinere Ausgaben helfen dabei, Fehlfunktionen auf die Spur zu kommen.
Core Admin
Hier stehen dem Benutzer alle Informationen bezüglich einzelner Solr-Cores zur
Verfügung. Für detailliertere Informationen siehe Kapitel 2, Abschnitt »Architektur
innerhalb einer Solr-Instanz – CoreAdminHandler« auf Seite 35.
Java Properties
Alle Java-Properties werden hier aufgelistet. Dies beinhaltet z. B. die Java-Version,
den Java Classpath und vieles mehr.
Erste Schritte – Solr entpacken und starten |
9
Thread Dump
Die Stack Traces jedes Threads sind hier auffindbar.
Inhalte indexieren
So, ein wichtiger Schritt ist getan, und man hat lokal auf seinem Rechner einen voll funktionsfähigen Suchserver laufen! Doch wie will man suchen, man hat ja noch keinen
Inhalt. Den Prozess, Inhalt in den Solr-Suchserver zu bekommen, nennt man Indexierung. Und genau das ist der nächste Schritt auf dem Weg in den Sucholymp.
Praktisch dabei ist: Im Verzeichnis example befindet sich ein weiteres Verzeichnis namens
exampledocs. Hier sind einige vorbereitete Beispieldaten enthalten, die einen schnellen
Einstieg ermöglichen. Doch damit nicht genug: Ein Tool, das die Indexierung ohne viel
Aufwand übernimmt, wird ebenfalls schon mitgeliefert. Dieses Tool trägt den Namen
post.jar.
Um nun schnell und unkompliziert Daten in Solr zu bekommen und endlich mit der
Suche beginnen zu können, öffnet man einfach ein neues Terminalfenster und gibt
java -jar post.jar *.xml
ein. Mit diesem Befehl werden alle im Verzeichnis exampledocs befindlichen XMLDateien indexiert. Die Ausgabe, die nach diesem Befehl zu sehen ist, sollte in etwa aussehen wie die in Abbildung 1-7:
Abbildung 1-7: Ausgabe nach der Ausführung des Befehls java -jar post.jar
Nacheinander werden die einzelnen Dateien aufgeführt, nachdem sie indexiert wurden.
In diesem Beispiel sind es 14 an der Zahl. Abschließend bekommen wir die Meldung,
dass ein Commit-Prozess stattgefunden hat. Dies bedeutet, dass alle Indexänderungen
physisch im Index gespeichert wurden und nun durchsuchbar sind. Dazu später mehr.
Abschließend erhält man noch die benötigte Zeit, die für diesen Indexierungsprozess
benötigt wurde. Bevor nun wild drauflosgesucht wird, sollte man sich die Zeit nehmen
10 |
Kapitel 1: Schnelleinstieg in Solr
und zumindest einen kurzen Blick auf die Daten werfen – sonst ist es schlichtweg nicht
möglich, zu beurteilen, ob zu einer Suche die richtigen Datensätze gefunden wurden.
Öffnet man eine beliebige Datei, in diesem Fall sd500.xml, sieht man folgendes Format:
<add><doc>
<field name="id">9885A004</field>
<field name="name">Canon PowerShot SD500</field>
...
</doc></add>
Das Zentrum der Dokumente bilden die sogenannten Felder (field). Jedes Feld trägt einen
Namen (name) und hat einen Inhalt (z. B. Canon PowerShot SD 500). Die Felder werden von
<doc>-Tags eingerahmt. Diese markieren Beginn und Ende eines Dokuments. Mehrere
Dokumente können hintereinander in einer Datei gelistet und müssen jeweils von <doc>Tags umrahmt sein. Diese Dokumente werden dann wiederum von <add>-Tags eingerahmt. Diese geben den Befehl, die eingerahmten Dokumente dem Index hinzuzufügen.
Oben genanntes Beispiel beschreibt augenscheinlich eine Digitalkamera von Canon. Wir
werden dieses Beispiel im Hinterkopf behalten, wenn wir unsere erste Suche starten.
Nun sind also Daten vorhanden. Als Nächstes wollen wir unsere Daten durchsuchen.
Die erste Suche
Ein Hinweis zum besseren Verständnis an dieser Stelle: Ein Core ist ein eigenständiger
Solr-Index mit eigener Konfiguration. Eine Konfiguration legt einerseits fest, wie die Daten
indexiert werden. Das bedeutet, dass festgelegt wird, wie mit den Daten umgegangen wird,
wenn sie indexiert werden. Dies schließt z. B. eine Umwandlung in Kleinbuchstaben ein,
sodass Ihre Benutzer nicht alles exakt so eintippen müssen, wie es in Ihrer Datenquelle
steht. Ein Dokument, das Haus beinhaltet, soll gefunden werden, egal ob der Benutzer
haus oder Haus eintippt. Mehr Informationen hierzu finden Sie in Kapitel 3, Abschnitt »Der
Analyse-Prozess« auf Seite 98. Zum anderen werden die einzelnen Komponenten natürlich
konfiguriert. Kapitel 2, Abschnitt »Suche und Suchfeatures – SearchHandler« auf Seite 18,
bietet Ihnen hier reichhaltigere Informationen. Da die Konfiguration direkten Einfluss auf
den Index hat, werden diese beiden zu einer Einheit, dem Core, zusammengefasst.
Sollte der Browser mit dem Fenster http://localhost:8983/solr nicht mehr geöffnet sein,
rufen Sie diese Seite nun auf.
Linker Hand findet man nun ein Drop-down-Fenster mit der Aufschrift Core Selector.
Nach einem Klick auf dieses Fenster wird einem die Auswahl momentan noch recht einfach gemacht, da nur ein sogenannter Core zur Verfügung steht, nämlich collection1:
Abbildung 1-8
Wenn Sie collection1 auswählen, kommen Sie in das Übersichtsfenster dieses Cores, zu
sehen in Abbildung 1-8. Die linke Spalte hat sich nun um einige Elemente erweitert. Es
kann auf bestimmte Core-spezifische Seiten zugegriffen werden, unter anderem auf das
Query-Fenster, das im nächsten Schritt näher beleuchtet werden wird. Der Hauptteil die-
Erste Schritte – Solr entpacken und starten |
11
Abbildung 1-8: Übersichtsfenster eines ausgewählten Cores
ser Seite zeigt einige Informationen, die den Core näher beschreiben. Unter anderem
bekommt man Aufschluss darüber, wann der Core zuletzt geändert wurde, wie viele
Dokumente sich in dessen Index befinden und noch weitere Informationen, die Replication (siehe Kapitel 6, Abschnitt »Konfiguration der Replication« auf Seite 220) und
Dataimports (Kapitel 2, Abschnitt »Indexierung einer großen Datenmenge – Die deutsche Wikipedia« auf Seite 50) betreffen.
Abbildung 1-9: Query-Eingabemaske
12 |
Kapitel 1: Schnelleinstieg in Solr
Aber es kribbelt bereits in den Fingern, also schnell weiter zur Suche. Hierzu ruft man
über das Element Query die Suchmaske auf. Im Hauptbereich erscheint nun eine Spalte,
die (zumindest für den ersten Moment) einige kryptisch beschriebene Felder beinhaltet,
die teilweise eine Texteingabe ermöglichen, aber auch Checkboxen oder Drop-down-Felder sind. Abbildung 1-9 zeigt diese Felder. Darin kann man Werte für sogenannte Parameter festlegen. Diese Parameter definieren jeden einzelnen Solr-Aufruf, sei es ein Aufruf
zur Indexierung oder einer zur Suche. Diese Aufrufe werden auch Requests genannt.
Die ersten Ergebnisse
Für den Moment ist der q-Parameter der wichtigste. Er legt die sogenannte Query, vereinfacht gesagt, die Suche bzw. den oder die Suchbegriff(e) fest. Dieser ist momentan mit
*:* befüllt. Wenn man dies nun durch Canon ersetzt und anschließend auf den Button mit
der Aufschrift Execute Query klickt, erscheint rechts neben dieser Spalte der sogenannte
Solr-Response, also das, was von Solr zurückgegeben wird. Abbildung 1-10 zeigt diesen
Response. Und siehe da! Unsere Canon PowerShot SD500 erscheint! Die erste Suche: auf
Anhieb ein Erfolg!
Abbildung 1-10: Solr-Response
Erste Schritte – Solr entpacken und starten |
13
Schaut man sich den Response etwas genauer an, ist dieser in zwei Teile unterteilt: in den
responseHeader und den response. Der responseHeader gibt Aufschluss über die an Solr
übermittelte Query, deren Status und die für diesen Request benötigte Zeit.
responseHeader
Auch wenn dies der menschlichen Logik vielleicht widerspricht, gibt ein Status von 0
einen erfolgreichen Request an. Der Erfolg hängt jedoch nicht davon ab, ob Treffer
bezüglich einer Query gefunden wurden oder nicht. Dieser Status gibt beispielsweise
an, ob die Query syntaktisch korrekt formuliert war, der Solr-Server erreichbar war etc.
Folgende Zeile zeigt die für diesen Request benötigte Zeit an:
<int name="QTime">0</int>
Dies bedeutet, dass dieser Request in 0 Millisekunden abgearbeitet wurde. Die
Suche ist also im Moment schneller als ein Wimpernschlag. Bei steigender Dokumentenanzahl ändert sich das natürlich, wobei es in den meisten Szenarien durchaus möglich ist, die Suchzeit unter einer Sekunde zu halten.
Bei der Liste von Parametern sehen wir unsere Eingabe Canon:
<lst name="params">
...
<str name="q">Canon</str>
...
</lst>
response
Der responseHeader liefert also durchaus wichtige und interessante Informationen zu
jeder Query, aber was den Benutzer letztlich von einer Suchmaschine überzeugt, sind
die Treffer, die zu seiner Suche gefunden werden. Und diese stehen im response:
Jedes gefundene Dokument ist in <doc>-Tags eingerahmt. Dieses Dokument haben wir
uns bei der Indexierung (siehe Kapitel 1, Abschnitt »Inhalte indexieren« auf Seite 10
bereits näher angesehen. Wenn Sie also den Inhalt der Datei, die indexiert wurde, mit
dem dargestellten Dokument vergleichen, stellen Sie fest, dass auch alle Felder samt
ihren Inhalten im response stehen.
Abgesehen von den Treffern selbst sieht man ebenfalls noch die Anzahl der Treffer.
Diese sind in folgender Zeile durch numFound="2" abgebildet:
<result name="response" numFound="2" start="0">
start="0" gibt an, welcher Treffer der erste ist, der angezeigt wird.
Es wird bei 0 angefangen zu zählen, nicht bei 1. start="1" würde den »besten« Treffer somit immer überspringen.
Die Grundlagen sind somit vorhanden. Um erste Ergebnisse zu bekommen, ist für den
Moment nicht mehr notwendig als das eben Beschriebene. Die nächsten Kapitel tauchen
nun tiefer in die verschiedenen Bereiche ein.
14 |
Kapitel 1: Schnelleinstieg in Solr