Cover image for Einführung in Apache Solr

Book description

Eine leistungsfähige Volltextsuche ist heute auf Websites, in Online-Shops oder auch im Unternehmen nicht mehr Kür, sondern Pflicht. Gefragt ist eine flexible Suchtechnologie, die auf unterschiedlichsten Systemen genutzt werden kann. Hier kommt Apache Solr 4 ins Spiel: Dieser Open Source-Suchserver bietet Entwicklern auf Basis von Standard-Webtechnologien eine mächtige und dabei einfach zu integrierende und zu benutzende Search Engine. Einführung in Apache Solr bietet Ihnen einen fundierten Einstieg in diese Suchtechnologie: Das Buch vermittelt Ihnen das nötige Handwerkszeug, um eine individuelle Suchlösung auf Basis von Apache Solr aufzusetzen. Beschrieben wird, aus welchen Komponenten Solr sich zusammensetzt, wie die Indexierung manipuliert werden kann und welche Möglichkeiten Solr für die Suche bietet. Schnelleinstieg: Erstellen Sie nach der Solr-Installation einen Index und setzen Sie Ihre erste Suche ab. Index-Konfiguration: Erfahren Sie, welche Möglichkeiten der Analyse-Prozess bietet, um die Inhalte von Dokumenten suchoptimiert im Index abzulegen. Solr-Features out-of-the-box: Nutzen Sie Funktionalitäten wie Facetten, AutoSuggest oder Meinten Sie für Ihre Suche und sehen Sie am Beispiel der Browse-Oberfläche, wie man sie einbinden kann. Scoring und Relevanz: Erfahren Sie, mit welchen Mitteln Sie bei Solr sowohl die Qualität als auch die Quantität der Treffer beeinflussen können. Solr-Architekturen: Lernen Sie die zwei Architekturansätze Master/Slave und SolrCloud kennen und richten Sie sie für Ihr System ein. Deployment und Monitoring: Informieren Sie sich über das Deployment in einem Servlet-Container sowie über das Aufsetzen eines Monitorings.

Table of Contents

  1. Vorwort
  2. Einleitung
    1. An wen sich dieses Buch richtet
    2. Aufbau dieses Buchs
    3. In diesem Buch genutzte Konventionen
    4. Verwendung der Codebeispiele
    5. Kontakt
    6. Danksagung
  3. 1. Schnelleinstieg in Solr
    1. Was ist Solr?
    2. Was ist Lucene?
    3. Was kann Solr?
      1. Features
      2. Community
      3. Einsatzmöglichkeiten
    4. Ein kurzer historischer Rückblick
    5. Also ist Solr Google?
    6. Erste Schritte – Solr entpacken und starten
      1. Apache Solr herunterladen
      2. Apache Solr starten
      3. Inhalte indexieren
      4. Die erste Suche
      5. Die ersten Ergebnisse
  4. 2. Die Konzepte von Solr kennenlernen
    1. Apache Solr innerhalb einer Applikation
    2. Der Grundaufbau von Solr
      1. Indexierung – UpdateRequestHandler
      2. Suche und Suchfeatures – SearchHandler
        1. Welche SearchComponents gibt es?
        2. Ein Beispiel: Wie werden SearchComponents definiert und eingebunden?
      3. Echtzeitsuche – RealTimeGetHandler
      4. Rückgabe des Ergebnisses – ResponseWriter
      5. Administration – AdminHandler
        1. LukeRequestHandler
        2. SystemInfoHandler
        3. PluginInfoHandler
        4. ThreadDumpHandler
        5. PropertiesRequestHandler
        6. ShowFileRequestHandler
      6. Ausfallsicherheit – ReplicationHandler
      7. Architektur innerhalb einer Solr-Instanz – CoreAdminHandler
        1. Statusabfrage eines Cores
        2. Anlegen eines Cores
        3. Löschen eines Cores
        4. Einen Core neu laden
        5. Vertauschen von zwei Cores
        6. Umbenennen eines Cores
        7. Zusammenführen zweier Indexe
        8. Aufteilen eines Index
    3. Die Indexierung – Out-of-the-Box-Möglichkeiten
      1. Indexierung von XML-, CSV-, JSON-Dateien – UpdateRequestHandler
      2. Extraktion von Inhalt – Solr Cell – ExtractingRequestHandler
      3. Datenbanken, RSS, Wikipedia, ... indexieren – DataImportHandler
        1. Indexierung einer großen Datenmenge – Die deutsche Wikipedia
        2. Indexierung der neuen und geänderten Dokumente: der Delta-Import
        3. Die Extraktion von Daten und deren Verarbeitung – EntityProcessors
        4. Die Manipulation von Daten – Transformers
        5. Weitere Datenquellen
      4. Beeinflussung des Indexierungsprozesses – UpdateRequestProcessors
        1. Vorhandene UpdateRequestProcessors – Deduplikation & Sprachenidentifizierung
        2. Die Klasse FieldMutatingUpdateProcessorFactory
        3. Script UpdateProcessors
    4. Die Suche – Wie kann ich suchen?
      1. Einfache Suche – Termsuche
      2. Boolesche Operatoren
      3. Einsatz von Wildcards
      4. Query Parser
        1. Lucene Query Parser
        2. Dismax und Extended Dismax Query Parser
        3. Surround Query Parser
        4. Boost Query Parser
        5. Weitere Query Parser
      5. Fuzzy Search – Ungenaue Suche
      6. Phrasensuche mit dem Lucene Query Parser
      7. Range-Queries
      8. Filter-Queries
      9. Sortierung
  5. 3. Den Index konfigurieren
    1. Der Lucene-Index
      1. Operationen auf dem Index
        1. Add & Update
        2. Atomic Update
        3. Delete
        4. Commit
        5. Optimize
        6. Rollback
    2. Die Schema-Konfiguration
      1. Solr-Feldtypen
        1. String und Text
        2. Boolean
        3. Numerische Typen
        4. Datum
        5. Binär
        6. GEO-Informationen
        7. Währungen
        8. Random
        9. External
      2. Solr-Felder
      3. Allgemeine Einstellungen
        1. Unique Key
        2. CopyFields
        3. Similarity
        4. Deprecated Settings
    3. Der Analyse-Prozess
      1. Konfiguration des Analyse-Prozesses
      2. 1. Schritt: CharFilter
        1. MappingCharFilterFactory
          1. Konfiguration
          2. Input/Output
        2. PatternReplaceCharFilterFactory
          1. Konfiguration
          2. Input/Output
        3. HTMLStripCharFilterFactory
          1. Konfiguration
          2. Input/Output
      3. 2. Schritt: Tokenizer
        1. WhitespaceTokenizerFactory
          1. Konfiguration
          2. Input/Output
        2. KeywordTokenizerFactory
          1. Konfiguration
          2. Input/Output
        3. StandardTokenizerFactory
          1. Konfiguration
          2. Input/Output
        4. ClassicTokenizerFactory
          1. Konfiguration
          2. Input/Output
        5. LetterTokenizerFactory
          1. Konfiguration
          2. Input/Output
        6. PatternTokenizerFactory
          1. Konfiguration
          2. Input/Output
        7. PathHierarchyTokenizerFactory
          1. Konfiguration
          2. Input/Output
      4. 3. Schritt: TokenFilter
        1. LowerCaseFilterFactory
          1. Konfiguration
          2. Input/Output
        2. PatternReplaceFilterFactory
          1. Konfiguration
          2. Input/Output
        3. StopFilterFactory
          1. Konfiguration
          2. Input/Output
        4. NGramFilterFactory
          1. Konfiguration
          2. Input/Output
        5. EdgeNGramFilterFactory
          1. Konfiguration
          2. Input/Output
        6. ShingleFilterFactory
          1. Konfiguration
          2. Input/Output
        7. LengthFilterFactory
          1. Konfiguration
          2. Input/Output
        8. WordDelimiterFilterFactory
          1. Konfiguration
          2. Input/Output
        9. SynonymFilterFactory
          1. Konfiguration
          2. Input/Output
        10. ReversedWildcardFilterFactory
          1. Konfiguration
          2. Input/Output
        11. ClassicFilterFactory
          1. Konfiguration
          2. Input/Output
        12. TrimFilterFactory
          1. Konfiguration
          2. Input/Output
      5. Typische Anwendungsfälle der Analyse
        1. Autor-Facette
          1. Ausgangssituation und Ziel
          2. Feldtypkonfiguration
        2. Telefonnummer
          1. Ausgangssituation und Ziel
          2. Feldtypkonfiguration
        3. Rechtstrunkierte Suche ohne *-Wildcard
          1. Ausgangssituation und Ziel
          2. Feldtypkonfiguration
        4. Phrasensuche in Titeln
          1. Ausgangssituation und Ziel
          2. Feldtypkonfiguration
        5. Exakte Suche ohne Füllwörter
          1. Ausgangssituation und Ziel
          2. Feldtypkonfiguration
      6. Die sprachspezifische Analyse
        1. Schema-Definition für die Wikipedia
      7. Das Analyse-Interface
      8. Ein Blick in den Index
        1. LukeHandler
        2. Schema Browser
  6. 4. Was kann Solr out-of-the-box?
    1. Die Konfigurationsdatei solrconfig.xml
      1. Allgemeine Einstellungen
      2. Index-Einstellungen
      3. Query-Einstellungen
      4. Request Dispatcher-Einstellungen
      5. Konfiguration der Admin-Oberfläche
    2. Such-Features out-of-the-box
      1. Velocity und der /browse-RequestHandler
      2. Facetten – Suchergebnisse verfeinern
        1. Feld-Facetten
        2. Range-Facetten
        3. Date-Facetten
        4. Query-Facetten
        5. Pivot-Facetten
        6. LocalParams
        7. Facetten in der Wikipedia
      3. AutoSuggest – Suchbegriffe vorschlagen
        1. AutoSuggest mit Spellcheck
        2. AutoSuggest mit Facetten
        3. AutoSuggest mit der Terms-Komponente
        4. AutoSuggest in der Wikipedia
      4. Highlighting – Suchbegriffe im Treffer hervorheben
        1. Highlighting in der Wikipedia
      5. Result Grouping – ähnliche Dokumente gruppieren
        1. Grouping in der Wikipedia
      6. Meinten Sie ... – Tippfehler ausbessern
        1. Suggester
        2. IndexBasedSpellChecker
        3. DirectSolrSpellChecker
        4. FileBasedSpellChecker
        5. »Meinten Sie ...« in der Wikipedia
      7. MoreLikeThis – ähnliche Dokumente finden
        1. Variante MoreLikeThis-Component
        2. Variante MoreLikeThis-Handler
        3. MoreLikeThis in der Wikipedia
      8. Elevate – Top-Treffer definieren
        1. Elevate in der Wikipedia
      9. Terms-Komponente – Solr-Felder auslesen
        1. Terms-Komponente in der Wikipedia
          1. Terms-Facetten
          2. Terms-AutoSuggest
      10. TermVector-Komponente – Term-Informationen auswerten
      11. Stats-Komponente – statistische Auswertung
        1. Terms-Komponente in der Wikipedia
      12. /browse-RequestHandler für die Wikipedia
  7. 5. Scoring und Relevanz beeinflussen
    1. Precision versus Recall
    2. Den Scoring-Mechanismus verstehen
      1. Konstantes Scoring
      2. Lucene-Scoring
      3. Der TF-IDF-Algorithmus
      4. Custom-TF-IDF-Scoring
    3. Scoring-Probleme analysieren
      1. Lucenes Explain TF-IDF-Funktionalität
    4. Das Scoring beeinflussen
      1. Query Parser für die Scoring-Manipulation nutzen
        1. Lucene versus eDismax
          1. Lucene Query Parser
          2. Dismax/eDismax-Query Parser
          3. Schlussfolgerung
        2. Spezielle Query Parser
        3. Query Parser für die Wikipedia
      2. Mit FunctionQueries das Scoring beeinflussen
        1. Was sind FunctionQueries?
        2. Wie nutzt man FunctionQueries
        3. Vordefinierte Funktionen
          1. Mathematische Funktionen
          2. Datumsfunktionen
          3. Relevanzfunktionen
          4. Boolesche Funktionen
          5. Vermischtes
      3. Typische Scoring-Anwendungsfälle
        1. Wie kann man Dokumente boosten, die alle Suchbegriffe enthalten?
          1. Ausgangssituation und Ziel
          2. Lösung
        2. Wie kann man aktuellere Dokumente boosten?
          1. Ausgangssituation und Ziel
          2. Lösung
        3. Wie kann man populäre Dokumente boosten?
          1. Ausgangssituation und Ziel
          2. Lösung
        4. Wie kann man exakte Suche belohnen?
          1. Ausgangssituation und Ziel
          2. Lösung
  8. 6. Skalierung der Suche – die Solr-Architektur gestalten
    1. Master/Slave-Architektur
      1. Starten zweier Server
      2. Konfiguration der Replication
        1. Einrichtung des Masters
        2. Einrichtung des Slaves
      3. Indexierung
      4. Replication
        1. Ein Solr-Server als Master und Slave – geht das?
        2. Erhöhung der Ausfallsicherheit – Erhöhung der tragbaren Suchlast
        3. Index zu groß? – Sharding
        4. Grenzen der verteilten Suche
        5. Das höchste Maß Flexibilität – Kombination von Sharding und Replication
        6. Weitere wichtige HTTP-API-Befehle und -Parameter
      5. Mit Replication Backups erstellen
    2. SolrCloud
      1. Reichen Replication und Sharding nicht aus?
      2. SolrCloud – Diese Gedanken stecken hinter dieser Innovation
      3. Who is Who oder: Die Terminologie der SolrCloud
      4. Zero-Installation – einfach loslegen
      5. Indexieren und Suchen in der SolrCloud
      6. Erhöhung der Ausfallsicherheit der Administrationsseite – externes ZooKeeper-Ensemble
        1. Erste Schritte mit Apache ZooKeeper
        2. Die Konfiguration des ersten ZooKeeper-Servers
        3. Das ZooKeeper-Ensemble
        4. SolrCloud und ZooKeeper-Ensemble
      7. Mehr Infos – clusterstate.json
      8. SolrCloud-Verwaltung – Collections-API
        1. Eine neue Collection erstellen
        2. Eine bestehende Collection löschen
        3. Eine Collection neu laden
        4. Einen Alias-Namen für eine Collection vergeben
        5. Einen Alias-Namen für eine Collection löschen
        6. Architektonische Schönheitskorrekturen – Shard Splitting
      9. Wohin gehen meine Dokumente? – Document Routing
        1. Anwendungsfälle
      10. Verwaltung mehrerer Collections in der SolrCloud
        1. Ein Solr-Konfigurationsverzeichnis – beliebig viele Collections
        2. Konfigurationsname ist identisch mit Collection-Name
        3. Explizite Verlinkung von Solr-Konfiguration zu Collection
        4. Weitere Möglichkeiten des ZooKeeper-CLI
      11. Pitfalls – Auf was Sie sonst noch achten sollten
        1. Halten Sie Ihre SolrCloud aktuell
        2. Überlegen Sie sich so früh wie möglich eine geeignete Architektur
        3. Übertragen Sie keine Master/Slave-Strategien auf Ihre SolrCloud
        4. Halten Sie Ihre Suchanfragen so minimalistisch wie möglich
  9. 7. Ein Blick über den Tellerrand
    1. Mit Solr arbeiten – Client-APIs
      1. Liste der verfügbaren Client-APIs
      2. Der Java-Client – SolrJ
        1. Solr-Server erstellen
        2. Aufbau und Indexierung eines Solr-Dokuments
        3. Suche
        4. Verarbeitung des Response
    2. Deployment von Solr in Apache Tomcat
      1. Tomcat-Download
      2. Tomcat-Installation
      3. Solr-Deployment
    3. Monitoring Ihrer Solr-Installation
      1. JMX-Aktivierung und Tools
        1. Existierender MbeanServer
        2. Existierender MbeanServer mit bekannter agentId
        3. Erstellen eines neuen MbeanServer
        4. Monitoring via JConsole und JVisualVM
      2. Log-Auswertung
    4. Die Community – Wie kann ich zum Projekt beitragen?
    5. Die Apache Software Foundation
      1. Apache Hadoop – Lösung für verteilte Systeme
      2. Apache Mahout – Clustering, Klassifikation & Recommendations
        1. Clustering
        2. Klassifikation
        3. Recommender Engines
      3. Apache Stanbol – Content Enrichment
      4. Apache OpenNLP – Verarbeitung natürlicher Sprache
      5. Apache Nutch – Webseiten crawlen
      6. Apache ManifoldCF – flexibles Crawling-Framework
    6. Die Konkurrenz – Elasticsearch
      1. Die Deutsche Wikipedia mit Elasticsearch indexieren
        1. Elasticsearch herunterladen
        2. Elasticsearch entpacken
        3. Plug-ins installieren
        4. Konfiguration anpassen
        5. Elasticsearch starten
        6. Wikipedia-River installieren
        7. Wikipedia indexieren
        8. Korrektur des Clusterzustands
          1. Konfiguration anpassen
          2. Starten
        9. Ihre erste Elasticsearch-Suche
  10. A. Glossar
  11. B. Über die Autoren
  12. Stichwortverzeichnis
  13. Kolophon
  14. Copyright