open source search: die welt von apache lucene - wjax 2009
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
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.