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: kommentar@oreilly.de 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 kommentar@oreilly.de 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: kommentar@oreilly.de 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