Hibernate Search

Werbung
Hibernate Search
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.0
www.oio.de
[email protected]
Java, XML und Open Source seit 1998
) Software Factory )
) Object Rangers )
• Schlüsselfertige Realisierung
von Java Software
• Unterstützung laufender
• Individualsoftware
• Pilot- und Migrationsprojekte
• Sanierung von Software
• Software Wartung
• Perfect Match
• Rent-a-team
• Coaching on the project
• Inhouse Outsourcing
Java Projekte
) Competence Center)
• Schulungen, Coaching,
Weiterbildungsberatung,
Train & Solve-Programme
• Methoden, Standards und
Tools für die Entwicklung
von offenen, unternehmensweiten Systemen
2
Hibernate Search
© 2009 Orientation in Objects GmbH
1
Ihre Speaker
Serge Ndong
3
Hibernate Search
© 2009 Orientation in Objects GmbH
Gliederung
• Einführung
• Vergleich SQL Suche,
Volltextsuche
• Konfiguration
• Mapping
• Queries
• Ausblick
4
Hibernate Search
© 2009 Orientation in Objects GmbH
2
search
try to
find something
by looking or otherwise
seeking carefully
and thoroughly
Quelle: http://www.askOxford.com
5
Hibernate Search
© 2009 Orientation in Objects GmbH
Grenzen von SQL
Approximation (oder Synonym)
‚hybernate‘ statt hibernate
Wildcard und Wortsuche
%hibernate%
brauchbaren Ergebnisse zuerst
Relevanz
‚Persistenz‘ nah zu ‚Hibernate‘
Bedeutungsnähe
Spaltengewichtung
Suchen auf mehreren Spalten
„a book about persisting Objects
with ybernate from Wang“
6
Hibernate Search
© 2009 Orientation in Objects GmbH
3
Mismatch: Domain Modell - „Lucene-Welt“
Domain Modell
„Lucene-Welt“
Buch Dokument
Kategorie
name:String
Buch
titel:String
isbn:String
autor1:String
autor2:String
?
Titel:
Hibernate Search
isbn:
1933988649
autor1:
Emmanuel Bernard
autor2:
john Griffin
exemplare.
ausleihdatum:01.12:2008
Exemplar
ausleihdatum:Date
exemplare.
ausleihdatum:16.12:2008
7
Hibernate Search
© 2009 Orientation in Objects GmbH
Hibernate Search
Hibernate Eventsystem
Synchron oder Asynchron
Transparente Indizierung
Objektstruktur in Indexstruktur Transfer
verbindet Lucene mit Hibernate
Hibernate Plattform
Licence - LGPL
verwendet Hibernate Core
8
Hibernate Search
© 2009 Orientation in Objects GmbH
4
Konfiguration
• Configuration by Exception
– 80% default Konfiguration
hibernate.properties
#Hibernate Search Configuration
hibernate.search.default.indexBase /users/application/indexes
hibernate.cfg.xml
<property name=„ hibernate.search.default.indexBase“>
/users/application/indexes
</property>
9
Hibernate Search
© 2009 Orientation in Objects GmbH
Mapping
@Indexed(index="buechererverwaltung")
@Entity@Table(name = "Buecher")
public class Buch {
@DocumentId
@Id @Column(name = "buch_id")
private Integer id;
@Field
private String titel;
@Field(store = Store.YES, index = Index.UN_TOKENIZED)
private String isbn;
@IndexedEmbedded
@ManyToOne @JoinColumn(name = "verlag_FK")
private Verlag herausgeber;
@ContainedIn
@OneToMany(mappedBy = "buch") @JoinColumn(name = "Buch_FK")
private Set<Exemplar> exemplare = new HashSet<Exemplar>();
10
Hibernate Search
© 2009 Orientation in Objects GmbH
5
Mapping
Field Bridge
@Field
private String titel;
– Built-in
– Konvertierung vom Objekttyp zum String
– Vergleich
Index Strategien
@Field
@Field(name = “isbn_sort", index = Index.UN_TOKENIZED,
store = Store.YES)
private
String isbn;
– Tokenized?
– Speicherung von Daten im Index
– Eine Eigenschaft mehrfach Indizieren
11
Hibernate Search
© 2009 Orientation in Objects GmbH
Mapping
Analyser
@Field
@Analyzer(impl=PhoneticAnalyzer.class)
private String titel;
– Text in Wörte zerstückeln (auf Tokenized Felder)
– Default Analizer Konfigurierbar
– auch auf Entität- und Feldebene einsetzbar
Boost Factor
@Field
@Boost(1.5f)
private String oioTags;
– default ist 1.0
– Beeinflusst den Document Rank
– Wert für Feld = Entity Wert * Feld Wert
12
Hibernate Search
© 2009 Orientation in Objects GmbH
6
Mapping - Beziehungen
Verlag
Buch
Exemplar
Relation
@IndexedEmbedded
@ManyToOne @JoinColumn(name = "verlag_FK")
private Verlag herausgeber;
@ContainedIn
@OneToMany(mappedBy = "buch") @JoinColumn(name = "Buch_FK")
private Set<Exemplar> exemplare = new HashSet<Exemplar>();
13
Hibernate Search
© 2009 Orientation in Objects GmbH
Query
• Abfrage ähnlich wie JPA und Criteria Query
• Objekte werden zurückgegeben, keine Dokumente
– kein Code zum Konvertieren
• Objekte aus dem Persitenzkontext
– “Hibernate managed“ Objekten werden zurückgegeben
• Benutzt die org.hibernate.Query /javax.persitence.query
– Unterstützung von Paging
• Querry auf abhängige Objekten
– Join ähnliche Queries
14
Hibernate Search
© 2009 Orientation in Objects GmbH
7
Query
1. Lucene Query
2. Hibbernate Search wrappen
MultiFieldQueryParser parser;
parser = new MultiFieldQueryParser(
new String[] { “title“, “descr“},
new StandardAnalyzer());
org.apache.lucene.search.Query query = null;
query = parser.parse(„o wie OIO“);
// org.hibernate.search.jpa.FullTextEntityManager
// org.hibernate.search.jpa.Search
FullTextEntityManager fullTextEM;
fullTextEM = Search.getFullTextEntityManager(entityMang);
// org.hibernate.search.jpa.FullTextQueryFullTextQuery
FullTextQueryFullTextQuery query;
query = fullTextEM.createFullTextQuery(query, Book.class);
15
Hibernate Search
© 2009 Orientation in Objects GmbH
Query
3. Params
4. Happieness
query.setFirstResult(15);
query.setMaxResults(10);
// gibt dann nur die document_id zurück
// welches meist auch die Id ist
query.setProjection(FullTextQuery.ID);
List<Object[]> results = hibQuery.getResultList();
List<BookDTO> booksView = new ArrayList<BookDTO>();
for (Object[] result : results) {
String id = (String) result[0];
booksView.add(findAsDTO(id));
}
return booksView;
16
Hibernate Search
© 2009 Orientation in Objects GmbH
8
Query Ausführungsschritte
Such-String
Hibernate
Search
query
Ergebnisse
aufbereiten
Anfrage
Ergebnisdokumente
Lucene
index
Objekte
laden
Persistence
context
DB
17
Hibernate Search
© 2009 Orientation in Objects GmbH
Features
• Sortierung bei Felden statt bei der Relevanz
– Index.UN_TOKENIZED oder INDEX_NO_NORMS
• Natives Lucene
• Manuelle Indizierung
• Index Sharding
• Sandbox
18
Hibernate Search
© 2009 Orientation in Objects GmbH
9
features (Proketion / Filter)
Proketion
properties statt
„managed“ Objekte
Filter
Security
Kategorien
metadata
SCORE
DOCUMENT_ID
BOOST
...
Quelle: Hibernate Search in Action
19
Hibernate Search
© 2009 Orientation in Objects GmbH
Literaturhinweise
• Hibernate Search in Action
• Sprache: Englisch
broschiert - 450 Seiten - Manning
publications
• Erscheinungsdatum: 28. Dezember 2008
ISBN: 1933988649
• Lucene in Action
• Sprache: Engisch
• broschiert - 456 Seiten - Manning
publications
• Erscheinungsdatum: 1. Dezember 2004
• ISBN: 1932394281
20
Hibernate Search
© 2009 Orientation in Objects GmbH
10
Vielen Dank für Ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.0
www.oio.de
[email protected]
? ? ?
?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.0
www.oio.de
[email protected]
11
Mehr von OIO zum Thema...
• Schulung: Java Persistence API mit Hibernate
–
http://www.oio.de/seminar/java/seminar-hibernate-training-jpa-schulung.htm
• Vortrag: Persistent mit Hibernate
–
http://www.oio.de/m/konf/jax2005/Persistenz_mit_Hibernate_final.pdf
• Referenz: Richtiges Arbeiten mit Hibernate
–
http://www.oio.de/referenzen/competence-center/referenz-beratung-hibernateexpertenwissen.htm
• Beratung zu JPA und Hibernate
–
http://www.oio.de/beratung-consulting/open-source-software/javaframeworks/hibernate-consulting.htm
23
Hibernate Search
© 2009 Orientation in Objects GmbH
12
Herunterladen