Upload
truongthien
View
230
Download
4
Embed Size (px)
Citation preview
Christian Meder & Andrew Kenworthy | inovex
Lucenes Welt – Ordnen, finden, klassifizieren
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
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]
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
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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 5
Motivation
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 6
Motivation Google klassisch (2010)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 7
Motivation Google klassisch (2010)
Relevanz
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 8
Motivation Google klassisch (2010)
Autovervollstaendigung
Snippets
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)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 10
Motivation Google Evolution (2011)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 11
Motivation Google Evolution (2011)
VorschauFacetten
Instant Search
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 12
Motivation Google Evolution (2011)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 13
Motivation Google Evolution (2011)
Facetten
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 14
Motivation Google Evolution (2012)
SPYW
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 15
Motivation Google Evolution (2012)
SPYW
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 16
Motivation Amazon
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
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%
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 19
Beispiele
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 20
Beispiele Ebay Kleinanzeigen
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)
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)
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
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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 25
Projektuebersicht
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)
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 27
Projekte
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
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
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, ...
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
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.
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" />
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
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, ...
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)
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 *]
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
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
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
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
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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 43
Moeglichkeiten
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 44
Möglichkeiten Beispiel 2009
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 45
API
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 46
Commit Options
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 47
Concurrency
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
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)
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
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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 52
Schema-less
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 53
Distributed, Autosharding
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 54
Multitenancy (cf Multicore)
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
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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. 19.04.2012 57
Vielen Dank !