57
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 1 Lucene's Welt: Ordnen, Finden, Klassifizieren JAX, 2012 Andrew Kenworthy Christian Meder inovex GmbH

Lucene's Welt

Embed Size (px)

DESCRIPTION

Google, Amazon und Co. setzen den Standard für performante Such-, Klassifikations- und Vorschlagsfunktionen. Wie können die Apache-Projekte aus dem Lucene-Umfeld hier mithalten? Welche Projekte helfen bei welchen Fragestellungen? Diese Session möchte einen aktuellen Ein- und Überblick über das Apache-Lucene-Ökosystem und seine Anwendungen in den Bereichen Suche, Data Mining und BI geben.

Citation preview

Page 1: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 1

Lucene's Welt: Ordnen, Finden, Klassifizieren

JAX, 2012

Andrew KenworthyChristian Mederinovex GmbH

Page 2: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 2

Speaker

Andrew KenworthySchwerpunkte Business Intelligence Java Solr [email protected]

Page 3: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 3

Speaker

Christian MederSchwerpunkte open source (free software) Linux Web Java Android CTO@inovex Christian Meder

Page 4: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 4

Agenda

Motivation Beispiele Projektübersicht Projekte Möglichkeiten Bewertung

Page 5: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 5

Motivation

Page 6: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 6

Motivation Google klassisch (2010)

Page 7: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 7

Motivation Google klassisch (2010)

Relevanz

Page 8: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 8

Motivation Google klassisch (2010)

Autovervollstaendigung

Snippets

Page 9: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 9

Motivation Google klassisch (2010)

Spellchecker

Antwortzeiten

Aehnliche Seiten (More like this)

Page 10: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 10

Motivation Google Evolution (2011)

Page 11: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 11

Motivation Google Evolution (2011)

VorschauFacetten

Instant Search

Page 12: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 12

Motivation Google Evolution (2011)

Page 13: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 13

Motivation Google Evolution (2011)

Facetten

Page 14: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 14

Motivation Google Evolution (2012)

SPYW

Page 15: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 15

Motivation Google Evolution (2012)

SPYW

Page 16: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 16

Motivation Amazon

Page 17: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 17

Motivation

„Die Aussage eines Probanden bei einem Usability-Test einer Faceted Search Lösung im Rahmen dieser Studie ist damit richtungsweisend:

„Mit dem Filter hier habe ich das Gefühl, dass selbst eine schnöde Suche richtig Spaß machen kann.””

Quelle: Faceted Search: Die neue Suche im Usability-Test (zum kostenlosen Download unter http://usability.de)

usability.de

Page 18: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 18

Motivation osscensus.org

Rank Package Installs1 firefox 3761 82%2 zlib 3118 67%3 wget 3000 65%4 xerces 2494 54%5 prototype 2450 53%6 eclipse 2428 52%7 c.-logging 2423 52%8 docbook-xml 1692 52%9 lucene 2394 52%10 xalan 2363 51%11 commons-lang 2349 51%12 wsdl4j 2242 48%13 tk 1557 48%14 samba 1554 48%15 activation 2175 47%

Page 19: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 19

Beispiele

Page 20: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 20

Beispiele Ebay Kleinanzeigen

Page 21: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 21

Beispiele

Site metrics:• ~ 3.2 M active ads• 16 – 24 M PVs per day• Peak hours = 1.8 M PVs (~ 500 PVs per second)Solr request metrics:• ~ 60 M requests per day• Peak hours = ~ 1500 request per secondAvg. response time• 20 ms (search) and 3 ms for auto-suggest

Ebay Kleinanzeigen (aus Olaf Zschiedrich solr@ebay Kleinanzeigen)

Page 22: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 22

Beispiele

• 2 datacenters• 1 Master + 6 Slaves per datacenterSlaves show very low resource consumption. Could go down to 4slaves per datacenter while still having 50% overcapacity

• Master only used for indexing• Load balancer in front of slaves• Varnish in front of slaves (for dedicated use cases)• Working closely with SITE-OPS Team• DEV-OPS are part of development process

Ebay Kleinanzeigen (aus Olaf Zschiedrich solr@ebay Kleinanzeigen)

Page 23: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 23

Beispiele ElasticSearch

IGN's search 10 nodes / 2 clusters 56 M documents Scala over TCP PHP/JS over HTTP ~5k rpm

Page 24: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 24

Beispiele ElasticSearch

Sonian Inc. Cloud electronic document search 20+ cluster 5 billion documents Index into 100s TB

Page 25: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 25

Projektuebersicht

Page 26: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 26

Projektübersicht Lucene

Lucene: Suchbibliothek Solr: Suchserver Nutch: Crawler Tika: Inhaltsanalyse ElasticSearch (Compass): Suchserver Mahout: Machine Learning ManifoldCF: Repository Connectors (incubation)

Page 27: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 27

Projekte

Page 28: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 28

Architektur Indizierung

Inhalte

Bereitstellung

Aufbereitung

Analyse

Indizierung

Index

Lucene

Solr

Page 29: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 29

Projekte Lucene

Information Retrieval

Bibliothek

Kern einer Sucharchitektur

effizient

skalierbar

Viele Ports: .Net, C, Python

Vielfach integriert in

Produkte

Page 30: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 30

Historie Lucene

0.01 (2000) Doug Cutting 1.2 (2002) Apache Jakarta Projekt - 2.9 (2009) Sortieren, Datums- und Zahlenfelder, Bereichsfelder, near realtime search, neue Analyzer, ... 3.0 (2009) cleanup release, deprecations 3.1 - 3.6 (2011/2012) performance, grouping, autocomplete Verbesserungen, facet, join, ...

Page 31: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 31

Projekte Solr

Enterprise Suchserver

XML über HTTP

skalierbar

Adminoberfläche

schema-basiert

viele Analyse-Klassen

Handler, Filter, Facetten

Page 32: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 32

Projekte Solr: Schema

enthält Felder / Feldtypen

Feldtypen mit

unterschiedlichen Analysern

dynamische Felder

CopyField

Konfigurierbare Textanalyse

Listen von Synonymen, Stopp-

Wörtern, etc.

Page 33: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 33

Projekte Solr: Schema, Beispiele Felder

<field name="subject" type="string" indexed="true" stored="true" />

<field name="contactPhotoURL" type="string" indexed="false" stored="true" />

<field name="priceperhour" type="sfloat" indexed="true" stored="true" />

<field name="created" type="date" indexed="true" stored="true" />

<field name="subject" type="string" indexed="true" stored="true" multiValued="true" />

<field name="all_text" type="text" indexed="true" stored="false" />

<dynamicField name="skills_*" type="text" indexed="true" stored="true" multiValued="true" />

<copyField source="subject" dest="all_text" />

Page 34: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 34

Projekte Solr: Features

Markierte Treffer

Spellchecker

MoreLikeThis

Dismax Query

DataImportHandler: DB,

XML, ...

Indexanalyse

Page 35: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 35

Historie Solr

2006 code donation von CNET 1.1: 17.1.2007 aus incubator zu lucene Subprojekt 1.2: 2.6.2007 spellcheck, sounds-like, ... 1.3: 15.9.2008 verteiltes Suchen, ... 1.4: 10.11.2009 db dataimporthandler, ... 3.1 – 3.6 (2011/2012) geospatial support, grouping/collapsing, ...

Page 36: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 36

Projekte Solr: Queries

HTTP Interface mit verschiedenen Formaten (XML, JSON...)

Mehrfachsortierung

Auto Suggest

Dismax query

Snippets

Spelling suggestions

More Like This

einfache Datumsberechnungen

Function Query

einfache Statistik (min, max, ...)

Facetten Suche (Filtern nach mehreren Facetten)

Page 37: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 37

Projekte Solr: Einfache Beispiele für q

+goethe +schiller

+goethe -schiller

title:faust

title:faust AND -all_text:goethe

“romeo and juliet”

water*

water~

created:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]

price:[20 TO 50]

price:[100 TO *]

Page 38: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 38

Projekte Solr: Beispiele für Parameter

sort=score asc

sort=created asc

sort=created asc, title asc

start=10

rows=20

fl=*

fl=id, title

fl=*, score

created:[NOW/DAY-1MONTH TO NOW/DAY]

fq=created:[NOW/DAY-2YEARS TO

NOW/DAY]&fq=all_text:poetry

Page 39: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 39

Projekte Nutch

Web Crawler

verteilt, parallel

Erstellt gerichteten

Graphen

Multi-Format (HTML, PDF,

Office, Tika, ...)

MapReduce, Hadoop

Lucene oder Solr

Page 40: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 40

Projekte Tika

Inhaltsanalyse

Extrahiert Metadaten und

strukturierte Inhalte

nutzt existierende Parser

große und wachsende

Anzahl an Formaten

weitere Parser einfach

ergänzbar

Page 41: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 41

Projekte ElasticSearch

nutzt Lucene

Facetten, Typen, ...

elastic: sharding/replicas

automatisch

schemalos

Vorgänger: Compass

Framework

Page 42: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 42

Projekte Mahout

Machine Learning

Empfehlungen

Clustering

Classification

Hadoop

Zahlreiche Algorithmen

Page 43: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 43

Moeglichkeiten

Page 44: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 44

Möglichkeiten Beispiel 2009

Page 45: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 45

API

Page 46: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 46

Commit Options

Page 47: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 47

Concurrency

Page 48: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 48

org.apache.solr.common.SolrException: Error opening new searcher. exceeded limit of maxWarmingSearchers=2, try again later.

request: http://localhost:8983/solr/update?commit=true&waitFlush=true&waitSearcher=true&...

at ...

In standard solr configuration:

<maxWarmingSearchers>2</maxWarmingSearchers>

Config

Page 49: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 49

Solr Wiki:

"...every time a new index searcher is opened, some autowarming of the cache occurs before Solr hands queries over to that version of the collection. It is crucial to individual query latency that queries have warmed caches."

→ Near-Real-Time (Lucene since 2.9, Solr/trunk, ElasticSearch)

Page 50: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 50

INDEX

Belkin

→ belkin

QUERY

Belkin

→ belkin

But...

belk*

→ belk

Page 51: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 51

<solr persistent="false">

<cores adminPath="/admin/cores" defaultCoreName="core0">

<core name="originalcore" instanceDir="core0">

<property name="dataDir" value="/data/core0" />

</core>

<core name="newcore" instanceDir="core1" >

<property name="dataDir" value="/data/core1" />

</core>

</cores>

</solr>

MultiCore

Page 52: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 52

Schema-less

Page 53: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 53

Distributed, Autosharding

Page 54: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 54

Multitenancy (cf Multicore)

Page 55: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 55

Lucene & Hadoop- Hadoop: parallel processing power- Lucene: dynamic, rapid search

But...- HDFS: no random read/writes- Solr: distributed indexes

So...- Index built in HDFS, export to local- HBase

Page 56: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 56

Bewertung The road ahead

Solr: einfach, konfigurierbar,

skalierbar, endnutzerfreundlich

Lucene: lowlevel,

komplexer, volle Flexibilität

ElasticSearch: relativ neu,

aber automatische Skalierung

Mahout: komplex, mächtig,

skalierbar

Page 57: Lucene's Welt

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 57

Vielen Dank !