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

Post on 23-Jun-2015

1.968 views 1 download

Tags:

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

Open Source SearchThe World of Apache Lucene

Christian Meder | inovex GmbH

Agenda Motivation Überblick Lucene Solr The world

Motivation

Die Messlatte: Google

Relevante Ergebnisse Relevante Auszüge in Trefferliste

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

Die Messlatte: Google Spellchecker „Meinten Sie“

Die Messlatte: Google

Umkreissuche

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

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

Häufige Realität Wenig relevante Ergebnisse Feldbasierte Suche

Häufige Realität Nur einfache exakte Substring Suche

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

Datenquellen: Dokumente, Datenbanken, etc.

Wenig Sortierung und Einschränkungsmöglichkeiten (Facetten)

Überblick

Sucharchitektur

Indizierungsarchitektur

Komponenten Crawler:

– Nutch– grub– droids, ...

Extraktoren: tika Kern: lucene DB-Integrationen:

– Compass– hibernate search, ...

Such-Server: solr

Lucene

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, ...

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

Lucene: Core Indexing IndexWriter Analyzer, Tokenizer, TokenFilter

– whitespace– lowercase– standard– stopwords– Porter stemming

Lucene: Core Indexing Directory

– Filesystem, NIOFS, RAM, MMAP Document Field

– Analyzed– Stored– NumericField

Lucene: Core Searching IndexSearcher Term Query TermQuery TopDocs

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]

Solr

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

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

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

– Debugging– Explain

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, ...

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" />

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

Solr: Projektbeispiel

The world

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

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

Vielen Dank.