Apache Solr als Enterprise
    Search Plattform
Markus Klose - SHI
• Projektmanagement
• Requirements Engineering
• Certified Solr Trainer

• Enterprise Solution
• Infrastruktursoftware
• Beratung / Implementierung
Agenda

•   Enterprise Search
•   Solr Basics
•   Herausforderungen & Lösungen
•   Ausblicke
Enterprise Search


85% aller Firmen haben auf weniger als
50% aller ihrer Daten Zugriff (Google)
Enterprise Search
Enterprise Search mit Solr
• Open Source vs. Kommerziell
• Solr
  – Relevanz-Algorithmus (TF-IDF)
  – Kein Vendor-Lock
  – Zugriff auf Source Code
  – Aktive Community
  – Keine Lizenzgebühren / Kosten
  – Performance
Solr Basics
• Solr …
  – … Framework für Such Applikationen
  – … nutzt Lucene
  – … Infrastruktur (Cache, Analyzer etc.)
  – … konfigurierbar (customizing)
  – … läuft in allen gängigen Servlet
    Containern
  – … aktuelle Version 3.6
Solr Basics

      • Solr Architektur
        –   Konfigurationen
        –   RequestHandler
        –   ResponseWriter
        –   UpdateHandler
        –   ReplicationHandler
        –   ….
Solr Basics
Konfiguration
• solr.xml
  – Konfiguration meherer Cores
• solrconfig.xml
  – Handler / SearchComponents etc.
  – Caching / Index Settings
• schema.xml
  – Felder / Typen / Analyze
Solr Basics
HTTP Requests
• Indexierung
  – http://host:8983/solr/update/csv?stream.file=data.csv&strea
    m.contentType=text/plain;charset=utf-8

• Suche
  – http://host:8983/solr/select?q=baseball&fq=type:pdf&sort=titl
    e asc

• Administration (SWAP)
  – http://host:8983/solr/admin/cores?action=SWAP&core=live&
    other=test
Solr Basics
Solr Ökosystem
  – Hadoop: Verteiltes Dateisystem
  – Mahout: Data-Mining
  – Tika: Metadaten Indexierung
  – Nutch: Web Crawler
  – ManifoldCF: Repository Connector
  – Pypes – Verarbeitungs Pipeline (Python)
  – RabbitMQ - Messaging System
Herausforderungen
•   Anbindung versch. Datenquellen
•   Verteilte / heterogene Systeme
•   Berechtigungen
•   Relevanz / Precision & Recall
•   Mehrsprachigkeit
•   Einheitliche Suche
•   etc.
Herausforderungen
Anbindung verschiedener Datenquellen

•   Indexierung - Solr
•   Indexierung - DataImportHandler
•   Indexierung - Clients
•   Indexierung - externe Tools
Indexierung - Solr
Indexierung - DIH
• Bestandteile
  – DataSource
  – EntityProcessor
  – Transformator
• Use Cases
  – Datenbanken
  – Feeds (RSS/ATOM) & XML Dateien
  – Rich Content
  – Mail Server
Indexierung – Clients
•   Java (SolrJ)   Apache Solr PHP Client
•   JavaScript
•   PHP
•   Ruby
•   C# (SolrNet)
•   Python
Indexierung – externe Tools
• Nutch
• Heritrix
• ManifoldCF
  – … Sharepoint, Documentum …
• Google Connector Framework
Herausforderungen
Verteilte Systeme / Skalierbarkeit

• Replikation
• Sharding
• Unique IDs
Basisarchitektur
Indexierung


              • Eine Instanz übernimmt
    Solr
                sowohl die Indexierung
                als auch die Suche
  Suche
Indexierung
Replication
• Hohes Volumen an
  Suchanfragen                          Master




• 1 Master mit N Slaves
                              Slave 1            Slave2



• Delta Replikation möglich
• Konfigurationsdateien
  können repliziert werden
                                        Suche
Master-Slave-Konfiguration
Sharding
 Indexierung
                    • Verteilung von großen
                      Datenmengen
Shard 1   Shard 2

                    • Solr sucht über alle
                      Shards & fasst die
                      Ergebnisse zusammen

   Searching
                    • Kein globaler TF-IDF
Sharding & Replication                 Indexierung

• Flexibles Szenario

                                     Master 1       Master 2
• Große Datenmengen und
  hohes Aufkommen von
  Suchanfragen
                          Slave 11   Slave 12       Slave 21   Slave 22




                                                Suche
Unique IDs
• Update / Deletes / Verteilte Systeme
• Solr FieldType solr.UUIDField
• Basistypen nutzen

• Typische Fehler
  – ID nicht einzigartig -> weniger im Index
  – ID nicht reproduzierbar -> verschiedene
    Versionen im Index
Herausforderungen
Heterogene Systeme / Mehrsprachigkeit

• Deduplikation
• Solr - Konfiguration
   – Dismax/eDismax
• Schema - Konfiguration
   – Analyse (Tokenizer / Filter)
   – Dynamische Felder
   – Copy Fields
Deduplikation
• Doppelte Dokumente im Index
• schema.xml

• solrconfig.xml
Dismax / eDismax
• DisMax – Disjunction Maximum

• extrem variabel einsetzbar
• versucht immer etwas zurückzuliefern
Analyse
• Feldzentrische Verarbeitung des
  Inhalts
  – Tokenizer
  – Tokenfilter
  – CharFilter
Schema - Konfiguration
• Dynamische Felder

• Copy Field

• Default Werte
Herausforderungen
Einheitliche Suche / Berechtigung

•   AutoSuggest
•   Facetten
•   DidYouMean
•   Clustering / Field Collapsing
•   Berechtigungen
AutoSuggest
• Vorschlag des zu suchenden Begriffs
Facetten
• Gruppierung der Ergebnismenge
• Navigationselement
DidYouMean
• Wortvorschlag, basierend auf dem
  Index
• „Meinten Sie“ - Fuktionalitäten
Clustering
• Alternative Darstellung der Trefferliste
Search - Berechtigungen
• Kein Standard
• Beispiel: ActiveDirectory bei SHI
  – Index: zusätzliche Information
  – Suche: zusätzliche FilterQuery

                       Auth.jsp
                           fq=           q=jax&fq=…
          q=jax
                    allow:“12-33-45-7“                Solr
                            AND
         Response                         Response
                    -deny:“12-33-45-7“
Herausforderungen
Relevanz / Precision & Recall

•   TF-IDF
•   Sortierung / Function Queries
•   Boosting
•   Syntax
TF-IDF
• Scoring in 2 Phasen
  – Boolsche Modell
  – Vector Space Modell


• Relevanzalgorithmus
Sortierung / Function Queries
• Sortierung
  – default ist Score
  – Konstantes Scoring bei *:*, Range und fq
  – Beispiel: sort=titel asc,author desc


• Function Queries
  – Beeinflussung des Ranking (bf/boost
    Parameter oder sort)
  – Beispiel: recip(ms(NOW,mydatefield),3.16e-11,1,1)
Syntax
•   Query -> q
•   FilterQuery ->fq
•   Boolean Operatoren -> OR, AND, NOT, +, -
•   Phrasen -> “Harrison Ford”~5

•   Wildcard -> fi?m, film*
•   Fuzzy -> Hale*0.9
•   Boost -> q=star OR trek^4.0
•   Range -> preis:[1 TO 10] oder preis:{1 TO 10}
Ausblicke
• Solr Cloud
  – Verteilte Suche mit zentraler Konfiguration


• Near Real Time Search
  – Alternative Commit Strategie


• JOIN
  – „Verknüpfung“ von Dokumenten
Weiterführende Informationen
• Solr
  – Wiki (http://wiki.apache.org/solr)
  – Jira (https://issues.apache.org/jira/browse/SOLR)
  – Mailinglist (http://lucene.apache.org/solr/mailing_lists.html)


• Websites
  – SHI (http://www.shi-gmbh.com/blog)
  – Lucid Imagination (http://www.lucidimagination.com)
Demo / Q & A


Vielen Dank für Ihr Interesse

Jax 2012 - Apache Solr as Enterprise Search Platform

  • 1.
    Apache Solr alsEnterprise Search Plattform
  • 2.
    Markus Klose -SHI • Projektmanagement • Requirements Engineering • Certified Solr Trainer • Enterprise Solution • Infrastruktursoftware • Beratung / Implementierung
  • 3.
    Agenda • Enterprise Search • Solr Basics • Herausforderungen & Lösungen • Ausblicke
  • 4.
    Enterprise Search 85% allerFirmen haben auf weniger als 50% aller ihrer Daten Zugriff (Google)
  • 5.
  • 6.
    Enterprise Search mitSolr • Open Source vs. Kommerziell • Solr – Relevanz-Algorithmus (TF-IDF) – Kein Vendor-Lock – Zugriff auf Source Code – Aktive Community – Keine Lizenzgebühren / Kosten – Performance
  • 7.
    Solr Basics • Solr… – … Framework für Such Applikationen – … nutzt Lucene – … Infrastruktur (Cache, Analyzer etc.) – … konfigurierbar (customizing) – … läuft in allen gängigen Servlet Containern – … aktuelle Version 3.6
  • 8.
    Solr Basics • Solr Architektur – Konfigurationen – RequestHandler – ResponseWriter – UpdateHandler – ReplicationHandler – ….
  • 9.
    Solr Basics Konfiguration • solr.xml – Konfiguration meherer Cores • solrconfig.xml – Handler / SearchComponents etc. – Caching / Index Settings • schema.xml – Felder / Typen / Analyze
  • 10.
    Solr Basics HTTP Requests •Indexierung – http://host:8983/solr/update/csv?stream.file=data.csv&strea m.contentType=text/plain;charset=utf-8 • Suche – http://host:8983/solr/select?q=baseball&fq=type:pdf&sort=titl e asc • Administration (SWAP) – http://host:8983/solr/admin/cores?action=SWAP&core=live& other=test
  • 11.
    Solr Basics Solr Ökosystem – Hadoop: Verteiltes Dateisystem – Mahout: Data-Mining – Tika: Metadaten Indexierung – Nutch: Web Crawler – ManifoldCF: Repository Connector – Pypes – Verarbeitungs Pipeline (Python) – RabbitMQ - Messaging System
  • 12.
    Herausforderungen • Anbindung versch. Datenquellen • Verteilte / heterogene Systeme • Berechtigungen • Relevanz / Precision & Recall • Mehrsprachigkeit • Einheitliche Suche • etc.
  • 13.
    Herausforderungen Anbindung verschiedener Datenquellen • Indexierung - Solr • Indexierung - DataImportHandler • Indexierung - Clients • Indexierung - externe Tools
  • 14.
  • 15.
    Indexierung - DIH •Bestandteile – DataSource – EntityProcessor – Transformator • Use Cases – Datenbanken – Feeds (RSS/ATOM) & XML Dateien – Rich Content – Mail Server
  • 16.
    Indexierung – Clients • Java (SolrJ) Apache Solr PHP Client • JavaScript • PHP • Ruby • C# (SolrNet) • Python
  • 17.
    Indexierung – externeTools • Nutch • Heritrix • ManifoldCF – … Sharepoint, Documentum … • Google Connector Framework
  • 18.
    Herausforderungen Verteilte Systeme /Skalierbarkeit • Replikation • Sharding • Unique IDs
  • 19.
    Basisarchitektur Indexierung • Eine Instanz übernimmt Solr sowohl die Indexierung als auch die Suche Suche
  • 20.
    Indexierung Replication • Hohes Volumenan Suchanfragen Master • 1 Master mit N Slaves Slave 1 Slave2 • Delta Replikation möglich • Konfigurationsdateien können repliziert werden Suche
  • 21.
  • 22.
    Sharding Indexierung • Verteilung von großen Datenmengen Shard 1 Shard 2 • Solr sucht über alle Shards & fasst die Ergebnisse zusammen Searching • Kein globaler TF-IDF
  • 23.
    Sharding & Replication Indexierung • Flexibles Szenario Master 1 Master 2 • Große Datenmengen und hohes Aufkommen von Suchanfragen Slave 11 Slave 12 Slave 21 Slave 22 Suche
  • 24.
    Unique IDs • Update/ Deletes / Verteilte Systeme • Solr FieldType solr.UUIDField • Basistypen nutzen • Typische Fehler – ID nicht einzigartig -> weniger im Index – ID nicht reproduzierbar -> verschiedene Versionen im Index
  • 25.
    Herausforderungen Heterogene Systeme /Mehrsprachigkeit • Deduplikation • Solr - Konfiguration – Dismax/eDismax • Schema - Konfiguration – Analyse (Tokenizer / Filter) – Dynamische Felder – Copy Fields
  • 26.
    Deduplikation • Doppelte Dokumenteim Index • schema.xml • solrconfig.xml
  • 27.
    Dismax / eDismax •DisMax – Disjunction Maximum • extrem variabel einsetzbar • versucht immer etwas zurückzuliefern
  • 28.
    Analyse • Feldzentrische Verarbeitungdes Inhalts – Tokenizer – Tokenfilter – CharFilter
  • 29.
    Schema - Konfiguration •Dynamische Felder • Copy Field • Default Werte
  • 30.
    Herausforderungen Einheitliche Suche /Berechtigung • AutoSuggest • Facetten • DidYouMean • Clustering / Field Collapsing • Berechtigungen
  • 31.
    AutoSuggest • Vorschlag deszu suchenden Begriffs
  • 32.
    Facetten • Gruppierung derErgebnismenge • Navigationselement
  • 33.
    DidYouMean • Wortvorschlag, basierendauf dem Index • „Meinten Sie“ - Fuktionalitäten
  • 34.
  • 35.
    Search - Berechtigungen •Kein Standard • Beispiel: ActiveDirectory bei SHI – Index: zusätzliche Information – Suche: zusätzliche FilterQuery Auth.jsp fq= q=jax&fq=… q=jax allow:“12-33-45-7“ Solr AND Response Response -deny:“12-33-45-7“
  • 36.
    Herausforderungen Relevanz / Precision& Recall • TF-IDF • Sortierung / Function Queries • Boosting • Syntax
  • 37.
    TF-IDF • Scoring in2 Phasen – Boolsche Modell – Vector Space Modell • Relevanzalgorithmus
  • 38.
    Sortierung / FunctionQueries • Sortierung – default ist Score – Konstantes Scoring bei *:*, Range und fq – Beispiel: sort=titel asc,author desc • Function Queries – Beeinflussung des Ranking (bf/boost Parameter oder sort) – Beispiel: recip(ms(NOW,mydatefield),3.16e-11,1,1)
  • 39.
    Syntax • Query -> q • FilterQuery ->fq • Boolean Operatoren -> OR, AND, NOT, +, - • Phrasen -> “Harrison Ford”~5 • Wildcard -> fi?m, film* • Fuzzy -> Hale*0.9 • Boost -> q=star OR trek^4.0 • Range -> preis:[1 TO 10] oder preis:{1 TO 10}
  • 40.
    Ausblicke • Solr Cloud – Verteilte Suche mit zentraler Konfiguration • Near Real Time Search – Alternative Commit Strategie • JOIN – „Verknüpfung“ von Dokumenten
  • 41.
    Weiterführende Informationen • Solr – Wiki (http://wiki.apache.org/solr) – Jira (https://issues.apache.org/jira/browse/SOLR) – Mailinglist (http://lucene.apache.org/solr/mailing_lists.html) • Websites – SHI (http://www.shi-gmbh.com/blog) – Lucid Imagination (http://www.lucidimagination.com)
  • 42.
    Demo / Q& A Vielen Dank für Ihr Interesse