Jax 2012 - Apache Solr as Enterprise Search Platform

42
Apache Solr als Enterprise Search Plattform

description

http://www.shi-gmbh.comDie Informationsmengen in Unternehmen vervielfachen sich mit rasantem Tempo. Zudem sind Unternehmensinformationen oft auf eine Vielzahl unterschiedlicher IT-Systeme verteilt. Auf der anderen Seite ist ein schneller, zuverlässiger Zugriff auf die Gesamtheit der relevanten Informationen von zunehmender strategischer Bedeutung. Enterprise Search umfasst alle Informationstechnologien, die einen schnellen Zugriff auf verteilte und heterogenen Informationsquellen unternehmensweit ermöglichen. In diesem Vortrag wird der bekannte Suchserver Apache Solr im Kontext von Enterprise Search beleuchtet. Die damit verbundenen Herausforderungen wie Berechtigungen, Indexierung und Relevanz werden genauer betrachtet. Darüber hinaus werden verschiedene im Apache-Solr-Umfeld relevante Technologien und Frameworks sowie Best Practices vorgestellt, mit denen eine Enterprise-Search-Lösung schnell zum Erfolg gebracht werden kann.

Transcript of Jax 2012 - Apache Solr as Enterprise Search Platform

Page 1: Jax 2012 - Apache Solr as Enterprise Search Platform

Apache Solr als Enterprise Search Plattform

Page 2: Jax 2012 - Apache Solr as Enterprise Search Platform

Markus Klose - SHI

• Projektmanagement

• Requirements Engineering

• Certified Solr Trainer

• Enterprise Solution

• Infrastruktursoftware

• Beratung / Implementierung

Page 3: Jax 2012 - Apache Solr as Enterprise Search Platform

Agenda

• Enterprise Search

• Solr Basics

• Herausforderungen & Lösungen

• Ausblicke

Page 4: Jax 2012 - Apache Solr as Enterprise Search Platform

Enterprise Search

85% aller Firmen haben auf weniger als 50% aller ihrer Daten Zugriff (Google)

Page 5: Jax 2012 - Apache Solr as Enterprise Search Platform

Enterprise Search

Page 6: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 7: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 8: Jax 2012 - Apache Solr as Enterprise Search Platform

Solr Basics

• Solr Architektur– Konfigurationen

– RequestHandler

– ResponseWriter

– UpdateHandler

– ReplicationHandler

– ….

Page 9: Jax 2012 - Apache Solr as Enterprise Search Platform

Solr Basics

Konfiguration

• solr.xml– Konfiguration meherer Cores

• solrconfig.xml– Handler / SearchComponents etc.

– Caching / Index Settings

• schema.xml– Felder / Typen / Analyze

Page 10: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 11: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 12: Jax 2012 - Apache Solr as Enterprise Search Platform

Herausforderungen

• Anbindung versch. Datenquellen

• Verteilte / heterogene Systeme

• Berechtigungen

• Relevanz / Precision & Recall

• Mehrsprachigkeit

• Einheitliche Suche

• etc.

Page 13: Jax 2012 - Apache Solr as Enterprise Search Platform

Anbindung verschiedener Datenquellen

• Indexierung - Solr

• Indexierung - DataImportHandler

• Indexierung - Clients

• Indexierung - externe Tools

Herausforderungen

Page 14: Jax 2012 - Apache Solr as Enterprise Search Platform

Indexierung - Solr

Page 15: Jax 2012 - Apache Solr as Enterprise Search Platform

Indexierung - DIH

• Bestandteile– DataSource

– EntityProcessor

– Transformator

• Use Cases– Datenbanken

– Feeds (RSS/ATOM) & XML Dateien

– Rich Content

– Mail Server

Page 16: Jax 2012 - Apache Solr as Enterprise Search Platform

Indexierung – Clients

• Java (SolrJ)

• JavaScript

• PHP

• Ruby

• C# (SolrNet)

• Python

Apache Solr PHP Client

Page 17: Jax 2012 - Apache Solr as Enterprise Search Platform

Indexierung – externe Tools

• Nutch

• Heritrix

• ManifoldCF– … Sharepoint, Documentum …

• Google Connector Framework

Page 18: Jax 2012 - Apache Solr as Enterprise Search Platform

Verteilte Systeme / Skalierbarkeit

• Replikation

• Sharding

• Unique IDs

Herausforderungen

Page 19: Jax 2012 - Apache Solr as Enterprise Search Platform

Basisarchitektur

• Eine Instanz übernimmt sowohl die Indexierung als auch die Suche

SolrSolr

Indexierung

Suche

Page 20: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 21: Jax 2012 - Apache Solr as Enterprise Search Platform

Master-Slave-Konfiguration

Page 22: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 23: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 24: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 25: Jax 2012 - Apache Solr as Enterprise Search Platform

Heterogene Systeme / Mehrsprachigkeit

• Deduplikation

• Solr - Konfiguration– Dismax/eDismax

• Schema - Konfiguration – Analyse (Tokenizer / Filter)

– Dynamische Felder

– Copy Fields

Herausforderungen

Page 26: Jax 2012 - Apache Solr as Enterprise Search Platform

Deduplikation

• Doppelte Dokumente im Index

• schema.xml

• solrconfig.xml

Page 27: Jax 2012 - Apache Solr as Enterprise Search Platform

Dismax / eDismax

• DisMax – Disjunction Maximum

• extrem variabel einsetzbar

• versucht immer etwas zurückzuliefern

Page 28: Jax 2012 - Apache Solr as Enterprise Search Platform

Analyse

• Feldzentrische Verarbeitung des Inhalts

– Tokenizer

– Tokenfilter

– CharFilter

Page 29: Jax 2012 - Apache Solr as Enterprise Search Platform

Schema - Konfiguration

• Dynamische Felder

• Copy Field

• Default Werte

Page 30: Jax 2012 - Apache Solr as Enterprise Search Platform

Einheitliche Suche / Berechtigung

• AutoSuggest

• Facetten

• DidYouMean

• Clustering / Field Collapsing

• Berechtigungen

Herausforderungen

Page 31: Jax 2012 - Apache Solr as Enterprise Search Platform

AutoSuggest

• Vorschlag des zu suchenden Begriffs

Page 32: Jax 2012 - Apache Solr as Enterprise Search Platform

Facetten

• Gruppierung der Ergebnismenge

• Navigationselement

Page 33: Jax 2012 - Apache Solr as Enterprise Search Platform

DidYouMean

• Wortvorschlag, basierend auf dem Index

• „Meinten Sie“ - Fuktionalitäten

Page 34: Jax 2012 - Apache Solr as Enterprise Search Platform

Clustering

• Alternative Darstellung der Trefferliste

Page 35: Jax 2012 - Apache Solr as Enterprise Search Platform

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

Page 36: Jax 2012 - Apache Solr as Enterprise Search Platform

Relevanz / Precision & Recall

• TF-IDF

• Sortierung / Function Queries

• Boosting

• Syntax

Herausforderungen

Page 37: Jax 2012 - Apache Solr as Enterprise Search Platform

TF-IDF

• Scoring in 2 Phasen– Boolsche Modell

– Vector Space Modell

• Relevanzalgorithmus

Page 38: Jax 2012 - Apache Solr as Enterprise Search Platform

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)

Page 39: Jax 2012 - Apache Solr as Enterprise Search Platform

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}

Page 40: Jax 2012 - Apache Solr as Enterprise Search Platform

Ausblicke

• Solr Cloud– Verteilte Suche mit zentraler Konfiguration

• Near Real Time Search– Alternative Commit Strategie

• JOIN– „Verknüpfung“ von Dokumenten

Page 41: Jax 2012 - Apache Solr as Enterprise Search Platform

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)

Page 42: Jax 2012 - Apache Solr as Enterprise Search Platform

Demo / Q & A

Vielen Dank für Ihr Interesse