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.
Anbindung verschiedener Datenquellen
• Indexierung - Solr
• Indexierung - DataImportHandler
• Indexierung - Clients
• Indexierung - externe Tools
Herausforderungen
Indexierung - Solr
Indexierung - DIH
• Bestandteile– DataSource
– EntityProcessor
– Transformator
• Use Cases– Datenbanken
– Feeds (RSS/ATOM) & XML Dateien
– Rich Content
– Mail Server
Indexierung – Clients
• Java (SolrJ)
• JavaScript
• PHP
• Ruby
• C# (SolrNet)
• Python
Apache Solr PHP Client
Indexierung – externe Tools
• Nutch
• Heritrix
• ManifoldCF– … Sharepoint, Documentum …
• Google Connector Framework
Verteilte Systeme / Skalierbarkeit
• Replikation
• Sharding
• Unique IDs
Herausforderungen
Basisarchitektur
• Eine Instanz übernimmt sowohl die Indexierung als auch die Suche
SolrSolr
Indexierung
Suche
Replication
• Hohes Volumen an Suchanfragen
• 1 Master mit N Slaves
• Delta Replikation möglich
• Konfigurationsdateien können repliziert werden
MasterMaster
Slave 1Slave 1 Slave2Slave2
Suche
Indexierung
Master-Slave-Konfiguration
Sharding
• Verteilung von großen Datenmengen
• Solr sucht über alle Shards & fasst die Ergebnisse zusammen
• Kein globaler TF-IDF
Shard 1Shard 1 Shard 2Shard 2
Indexierung
Searching
Sharding & Replication
• Flexibles Szenario
• Große Datenmengen und hohes Aufkommen von Suchanfragen
Master 1Master 1 Master 2Master 2
Indexierung
Slave 11Slave 11 Slave 12Slave 12 Slave 21Slave 21 Slave 22Slave 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
Heterogene Systeme / Mehrsprachigkeit
• Deduplikation
• Solr - Konfiguration– Dismax/eDismax
• Schema - Konfiguration – Analyse (Tokenizer / Filter)
– Dynamische Felder
– Copy Fields
Herausforderungen
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
Einheitliche Suche / Berechtigung
• AutoSuggest
• Facetten
• DidYouMean
• Clustering / Field Collapsing
• Berechtigungen
Herausforderungen
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
SolrSolr
Auth.jsp
fq=
allow:“12-33-45-7“ AND
-deny:“12-33-45-7“
q=jax&fq=…
Response
q=jax
Response
Relevanz / Precision & Recall
• TF-IDF
• Sortierung / Function Queries
• Boosting
• Syntax
Herausforderungen
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