Open Source Search: Die Welt von Apache Lucene - WJax 2009
-
Upload
inovex-gmbh -
Category
Technology
-
view
1.968 -
download
1
description
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.