Open Source Search: Die Welt von Apache Lucene - WJax 2009

34
Open Source Search The World of Apache Lucene Christian Meder | inovex GmbH

description

Der Qualitätsanspruch von Endbenutzern an Relevanz, Einfachheit, Performanz und Verfügbarkeit von Suchfunktionalität wird maßgeblich von Google geprägt. Kann sich Open-Source-Software dieser Herausforderung stellen? Dieser Vortrag gibt einen Überblick über die aktuellen Möglichkeiten von Lucene 2.9, Solr 1.4 und weiteren Produkten im Umfeld von Apache Lucene.

Transcript of Open Source Search: Die Welt von Apache Lucene - WJax 2009

Page 1: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Open Source SearchThe World of Apache Lucene

Christian Meder | inovex GmbH

Page 2: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Agenda Motivation Überblick Lucene Solr The world

Page 3: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Motivation

Page 4: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Google

Relevante Ergebnisse Relevante Auszüge in Trefferliste

Page 5: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Google Schnelle Antwortzeiten Hohe Verfügbarkeit Autovervollständigung

Page 6: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Google Spellchecker „Meinten Sie“

Page 7: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Google

Umkreissuche

Page 8: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Amazon Relevante Ergebnisse Schnelle Antwortzeiten Hohe Verfügbarkeit Autovervollständigung

Page 9: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Die Messlatte: Amazon Facetten: Preis, Lieferanten, Verfügbarkeit

Page 10: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Häufige Realität Wenig relevante Ergebnisse Feldbasierte Suche

Page 11: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Häufige Realität Nur einfache exakte Substring Suche

Page 12: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Häufige Realität Langsame Antwortzeiten Keine globale Suche über heterogene

Datenquellen: Dokumente, Datenbanken, etc.

Wenig Sortierung und Einschränkungsmöglichkeiten (Facetten)

Page 13: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Überblick

Page 14: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Sucharchitektur

Page 15: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Indizierungsarchitektur

Page 16: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Komponenten Crawler:

– Nutch– grub– droids, ...

Extraktoren: tika Kern: lucene DB-Integrationen:

– Compass– hibernate search, ...

Such-Server: solr

Page 17: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene

Page 18: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene Basics Nur eine Bibliothek zum Nachschlagen von

Informationen Kern einer Sucharchitektur Erfordert Grundverständnis und

Einarbeitung Skalierbar Technisch ausgereift und mächtig Viele Ports: .Net, C, Python, ... AOL, Apple, Disney, Eclipse, JIRA, Liferay,

E.ON, Monster, wikipedia, ...

Page 19: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene Geschichte 0.01 (2000) Doug Cutting auf Sourceforge 1.2 (2002) Apache Jakarta Projekt 2.0 (2006) Sortieren, Datums- und

Zahlenfelder, Bereichsfilter, ... 2.9 (25.9.2009) near realtime search,

optimierte Behandlung von Zahlenfeldern, neue Analyzer (Persisch, Chinesisch), ...

2.9.1 (6.11.2009) Bugfix

Page 20: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene: Core Indexing IndexWriter Analyzer, Tokenizer, TokenFilter

– whitespace– lowercase– standard– stopwords– Porter stemming

Page 21: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene: Core Indexing Directory

– Filesystem, NIOFS, RAM, MMAP Document Field

– Analyzed– Stored– NumericField

Page 22: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene: Core Searching IndexSearcher Term Query TermQuery TopDocs

Page 23: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Lucene: Query syntax java linux +java +linux title:java „lucene in action“ java* java~ date:[11/01/2009 TO 11/10/2009] price:[20 TO 40]

Page 24: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr

Page 25: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: Basics Enterprise Suchserver Schnittstelle: XML über HTTP Skalierbar: sharding, Replikation Administrationsoberfläche Schema-basiert: numerische Typen,

dynamische Felder, ... Viele konfigurierbare Analyseklassen Facetten Dokumentation noch schwierig

Page 26: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: Features Markierte Treffer (highlighting) Vorschläge bei Tippfehlern (spelling

suggestions) Ähnliche Dokumente („More like this“) Dismax Query DataImportHandler: DB, XML, ... Indexanalyse

– Debugging– Explain

Page 27: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: Geschichte 2006 code donation von CNET 1.1: 17.1.2007 aus incubator zu lucene

Subprojekt 1.2: 2.6.2007 1.3: 15.9.2008 1.4: 10.11.2009 AOL, CNET, MTV, flug.idealo.de,

whitehouse.gov, ...

Page 28: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: Schema Beispiel <field name="city" 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="availabilitydate" type="date" indexed="true" stored="true" />

<field name="skills" type="text" indexed="true" stored="true" multiValued="true" />

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

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

<!-- local lucene field types -->

<field name="lat" type="sdouble" indexed="true" stored="true"/>

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

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

Page 29: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: 1.4 Features TermsComponent für Auto-Suggest DataImportHandler Erweiterungen Solr Cell: Tika Integration Mehrfachauswahl bei Facetten Performance Verbesserungen

– Indizierung– Suche– Facetten

Verbesserte Index Replication

Page 30: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Solr: Projektbeispiel

Page 31: Open Source Search: Die Welt von Apache Lucene - WJax 2009

The world

Page 32: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Nutch Web crawler Verteilt, parallel erstellt gerichteten Graphen Multi-Format (HTML, PDF, Office, ...) MapReduce, Hadoop Erweiterbar mit plugins Baut auf lucene oder solr

Page 33: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Compass Abbildung von Datenmodellen auf Suche Spring-Integration Automatische Spiegelung von ORM in

Suche für JPA, hibernate, OpenJPA, ... Einfache Integration von Lucene-basierter

Suche in ORM-basierte Projekte

Page 34: Open Source Search: Die Welt von Apache Lucene - WJax 2009

Vielen Dank.