Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der...

35
Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski & Dominic Weiser, esentri

Transcript of Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der...

Page 1: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud

DOAG 2011 Konferenz + Ausstellung Frank Szilinski & Dominic Weiser, esentri

Page 2: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

2

Agenda

•  Einleitung

•  Oracle Text

•  Lucene Projekte –  Apache Solr

–  Elasticsearch

•  Solr und Oracle

•  Fazit

Page 3: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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)

Page 4: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

4

Einleitung - Suchanfragen

Entwicklung Zugriffszeiten bei Suchen

Page 5: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

5

Oracle Text

Page 6: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 7: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 8: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 9: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 10: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 11: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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]

Page 12: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

12

Fazit Lucene

•  Schlank

•  Schnell

•  Open-Source

•  Gute Skalierbarkeit

•  Kein Dokumentenparser

•  Nur Java-Schnittstellen

•  Keine Benutzeroberfläche

•  Hoher Integrationsaufwand

Vorteile Nachteile

Page 13: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 14: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

14

Solr Ablauf

Page 15: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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>

Page 16: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 17: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 18: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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.

Page 19: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 20: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

20

elasticsearch

•  Volltext-Suchmaschine

•  Open-Source (Apache v2)

•  Basiert auf Lucene

•  Entwickelt von Shay Banon (Compass)

•  RESTfull

•  Automatisches Clustering

Page 21: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 22: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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” }}]}}

Page 23: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 24: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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 }}

Page 25: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

25

elasticsearch - Verteilung

Node 1

Index 1

Index 2

Node 2

Index 1

Index 2

Node 3 Node 4

Page 26: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

26

elasticsearch

Node 1

Index 1

Node 2

Index 2

Node 3

Index 1

Node 4

Index 2

Page 27: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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{...}

Page 28: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

28

elasticsearch - Verteilung

Node 1

Index 1

Node 2

Index 2

Node 3

Index 1

Node 4

Index 2

search

Page 29: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 30: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

30

Solr und Oracle

Page 31: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 32: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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>

Page 33: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 34: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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

Page 35: Apache Lucene und Oracle in der Praxis – Volltextsuche … · Apache Lucene und Oracle in der Praxis – Volltextsuche in der Cloud DOAG 2011 Konferenz + Ausstellung Frank Szilinski

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