Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der...
Transcript of Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der...
Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud
DOAG 2011 Konferenz + Ausstellung Frank Szilinski & Dominic Weiser, esentri
2
Agenda
• Einleitung
• Oracle Text
• Lucene Projekte – Apache Solr
– Elasticsearch
• Solr und Oracle
• Fazit
3
Einleitung
„In den vergangenen 3 Jahren haben wir mehr Daten produziert als in den vergangenen 5000
Jahren“ (Zitat: Prof. Dr. Peter Henning)
„Datenmenge verdoppelt sich im Schnitt alle 18 Monate“ (Quelle: www.mittelstanddirekt.de)
4
Einleitung - Suchanfragen
Entwicklung Zugriffszeiten bei Suchen
5
Oracle Text
6
Oracle Text
• Volltextsuche für Oracle Datenbanken.
• Anstelle von SQL „Like“
• Basiert auf Daten in Indexen
• Benutzt die SQL-Schnittstelle für Indizierung, Suche und Analyse
• Es gibt unterschiedliche Ergebnisaufbereitungen – unformatiert
– HTML mit highlighting
– Original Documentenformat
7
Fazit Oracle Text
• Direkte Datenbank-Anbindung
• Mächtige Query Syntax
• Größenteils bereits integriert
• Kleine Community
• Langsamer
• Schwer zu Scalieren
• An Oracle Lizenz gebunden
• Dokumentation gut aber schwer zu finden.
Vorteile Nachteile
8
Apache Lucene
• Open-Source Java-Library
• Information-Retrieval
• Volltextsuche
• Schnell – Es wird ein Index aufgebaut worin in konstanter Zeit gesucht
werden kann.
• Grundbaustein für viele weitere Projekte – Apache Solr
– elasticsearch
9
Entwicklung Lucene
• Erste Entwicklung 1997
• Seit 2002 teil der Apache Software Foundation
• Version 3.4 seit 14.9.2011
• Probleme zwischen Lucene Core und Java 7 sind seit Java 7 Update 1 gefixt
• Ebenso sind die Probleme mit Java 6 Update 29 behoben
10
Lucene der Ablauf
Stemmer zerlegen alle Worte, des Dokuments, in seine Wortstämme
Inhalte Auffinden
Dokumente zusammen- setzen
Analyse Indizierung
Inhalte müssen an Lucene übertragen werden (crawler)
Meta-Daten aus Dokument auslesen, beispielsweise über Apache Tika
Stemmer zerlegen alle Worte, des Dokuments, in seine Wortstämme
Die Wortstämme werden in Indizes abgespeichert
11
Lucene Analyzer
Analyzer
2 4 3 5 1 Whitespace
Tokenizer Lower Case
Filter Stop Filter Stem Filter
Original Text
The Quick Brown fox jumped over the lazy dog‘s bowl.
[The] [Quick] [Brown] [fox] [jumped] [over] [the] [lazy] [dog‘s] [bowl]
[the] [quick] [brown] [fox] [jumped] [over] [the] [lazy] [dog‘s] [bowl]
[quick] [brown] [fox] [jumped] [lazy] [dog‘s] [bowl]
[quick] [brown] [fox] [jump] [lazy] [dog] [bowl]
12
Fazit Lucene
• Schlank
• Schnell
• Open-Source
• Gute Skalierbarkeit
• Kein Dokumentenparser
• Nur Java-Schnittstellen
• Keine Benutzeroberfläche
• Hoher Integrationsaufwand
Vorteile Nachteile
13
Apache Solr
• Geschwister-Projekt zu Apache Lucene
• Ergänzt das Apache Lucene Projekt um: – Benutzeroberfläche (HTTP Proxy für Lucene)
– Schnittstellen • HTTP/XML
• JSON
– Starke Typen Zuweisung
– Warm-Up • Hält Suchanfragen beim Start vor
– Caching • Cached Suchanfragen, für erneute, ähnliche Suchen
– Clustering • Mehrere Solr Clients könne auf den gleichen Index zugreifen
14
Solr Ablauf
15
Solr – Schnellkonfig (Tomcat)
1. Kopieren des Solr Stammordners an einen bekannten Ort
2. Data Ordner konfigurieren ($SOLR_HOME/conf/solrconfiq.xml)
3. Tomcat mit Solr verbinden ($CATALINA_HOME/conf/Catalina/localhost/solr-example.xml)
4. Tomcat starten
<dataDir>${solr.data.dir:/PFADZUSOLR/data}</dataDir>
<?xml version="1.0" encoding="utf-8"?> <Context docBase="/PFADZUSOLR/apache-solr-X.X.X.war"
debug="0" crossContext="true"> <Environment name="solr/home" type="java.lang.String"
value="/PFADZUSOLR" override="true"/> </Context>
16
Solr – Schnellstart (Jetty)
1. Download Apache Solr
2. Starten (Jetty)
3. Mit Daten befüllen 1. Kleines Postbeispielprogamm (SOLR_HOME/example/
exampledocs)
2. Übermittelt Daten via HTTP-POST an solr
user:~/example/exampledocs$ java –jar post.jar *.xml
user:~/solr/example$ java –jar start.jar
17
http://localhost:8983/solr/browse?q=iPod
Suchen mit Solr
• Benutzeroberfläche von Solr
• Suchanfragen auch via HTTP GET
• q - Suchbegriff
• fl – Einschränkung auf Felder
• ^ - Boost Funktion
• fq – Einschränkungen auf den Typ
18
Solr und Typen
• Im Gegensatz zu Lucene haben Felder Typen
• Je nach Typ wird das Feld bei der Eingabe behandelt.
• Klassische Typen: – Date
– Double
– Integer
– Boolean
• Typen geben Auskunft über Suchbarkeit.
19
Fazit Apache Solr
Vorteile Nachteile
• Schwerer aufzusetzen unter Tomcat
• Typisierung
• Nicht alle Dokumentenarten werden unterstützt
• Nicht echtzeitfähig
• Langsam
• Leicht aufzusetzen unter Jetty
• XML/HTTP und JSON Schnittstellen
• Warmup und Caching Mechanismen
• Leicht erweiterbar (Tika, Nutch)
• Weit verbreitet & große Community
20
elasticsearch
• Volltext-Suchmaschine
• Open-Source (Apache v2)
• Basiert auf Lucene
• Entwickelt von Shay Banon (Compass)
• RESTfull
• Automatisches Clustering
21
elasticsearch - POST
$ curl –XPUT http://host:port/index/type/id -d‘{
„user“:“esentri“, „post_data“:“2011-11-16T10:20:00“, „message“:“Nice to see you“ }‘
„ok“:true „_index“:“index“ „_type“:“type“ „_id“:“1“
request
response
22
elasticsearch - suche
curl http://host:port/index/type/_search?q=esentri
{"took":76, "timed_out":false, "_shards”: { "total":5, "successful":5, "failed":0}, "hits”: { "total":1, "max_score":0.06780553, "hits":[{ "_index":"index", "_type":"type", "_id":”1", "_score":0.06780553, "_source" :{ "user":"esentri", "post_data":"2011-11-16T10:20:00", "message":"Nice to see you” }}]}}
23
elasticsearch - Begriffe
• Node – Eine einzelne elasticseatch Instanz
• Shard – Eigenständiger Lucene Index
• Replica – Jeder Shard kann keinen oder mehr Replicas haben
– Können Parallel benutzt werden
24
elasticsearch - Verteilung
Node 1
Index 1
Index 2
Node 2
Index 1
Index 2
PUT /index{ „index“:{ „number_of_shard“:2, „number_of_replicas“:1 }}
25
elasticsearch - Verteilung
Node 1
Index 1
Index 2
Node 2
Index 1
Index 2
Node 3 Node 4
26
elasticsearch
Node 1
Index 1
Node 2
Index 2
Node 3
Index 1
Node 4
Index 2
27
elasticsearch - Verteilung
Node 1
Index 1
Node 2
Index 2
Node 3
Index 1
Node 4
Index 2
PUT /index/type/1{...}
PUT /index/type/2{...}
28
elasticsearch - Verteilung
Node 1
Index 1
Node 2
Index 2
Node 3
Index 1
Node 4
Index 2
search
29
Fazit elasticsearch
• Cloud Ready
• Fast Echtzeitfähig (1 Sec)
• Schema-free
• Schnell
• Dokumente werden als ganzes behandelt
• Kleine Community
• Keine Benutzeroberfläche
• Wenig weiterführende Dokumentation
Vorteile Nachteile
30
Solr und Oracle
31
Solr und Oracle
1. Entscheidungen: – Sollen die Daten zusätzlich im Index gespeichert werden?
– Welche Daten sollen von Solr erfasst werden?
2. Solr konfigurieren – Solr einrichten (siehe Folien)
– DataImportRequestHandler konfigurieren
3. Solr starten
4. Daten indizieren
5. Suchen
32
Solr und Oracle - DataImportRequestHandler
1. DataImportHandler in der solrconfig.xml registrieren
2. data-config.xml konfigurieren – Wie sollen die Daten abgefragt werden (queries, url)
– Welche Daten sollen gelesen werden (spalten, xml felder)
– Welche vor Vorgänge werden überwacht (ändern / hinzufügen / löschen)
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">/home/username/data-config.xml</str> </lst> </requestHandler>
33
Solr und Oracle - DataImportRequestHandler
3. Datenquelle registrieren
– Type(optional): Standard = JdbcDataSource
– Es können mehrere Datenbanken registriert werden,
– Name: zur Unterscheidung mehrerer Datenquellen
4. Daten indizieren
Weitere Anweisungen: delta-import, status, reload-config, abort
<dataSource type="JdbcDataSource" name =„db1“ driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="db_username" password="db_password"/>
http://host:port/solr/dataimport?command=full-import
34
Zusammenfassung
• Oracle Text – Verbesserung gegenüber WHERE LIKE
• Apache Lucene – Informationswiederbeschaffung
– Grundbaustein für weitere Projekte
• Apache Solr – Geschwister Projekt zu Lucene
• elasticsearch – Clusterfähiger Informationswiederbeschaffer auf Lucene Basis
• Solr und Oracle – Volltextsuche mit Vorteilen
35
Kontakt
Dominic Weiser
Bachelor of Science
Consultant der esentri consulting GmbH [email protected]
Frank Szilinski
Bachelor of Science
Geschäftsführer der esentri software GmbH [email protected]
Vielen Dank für Ihre Aufmerksamkeit!
Besuchen Sie uns auf unserem Stand -
Ebene 2!
www.esentri.com www.facebook.com/esentri www.twitter.com/esentri