Einführung in Lucene
Transcription
Einführung in Lucene
Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Einführung in Lucene Dr. Christian Herta April, 2009 Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Outline 1 Lernziele - Inhalt 2 Übersicht 3 Indizierung mit Lucene 4 Suche mit Lucene Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Lernziele - Inhalt Zweck von Lucene Wesentliche Klassen von Lucene und ihr Zusammenspiel Grundlegende Benutzung von Lucene zur Suche und Indizierung Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Outline 1 Lernziele - Inhalt 2 Übersicht 3 Indizierung mit Lucene 4 Suche mit Lucene Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Was ist Lucene? Information (Text) Retrieval Library für Suche und Indizierung d.h. (JAVA)-API - kein Anwendungsprogramm aber es gibt Anwendungen basierend auf Lucene, wie z.B. Solr, nutch kein Spidering und Dokumentenverarbeitung Apache Jakarta Projekt Apache Software License Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Outline 1 Lernziele - Inhalt 2 Übersicht 3 Indizierung mit Lucene 4 Suche mit Lucene Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Wichtigen Klassen für die Indizierung IndexWriter Directory Analyzer Document Field Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene IndexWriter Zentrale Komponente für die Indizierung Schreibzugri (write access) auf den Index Erzeugt neuen Index Fügt Dokumente zum Index hinzu Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Directory Repräsentiert die Lokalisierung (Speicherort) des Index Abstrakte Klasse Unterklassen sind als Implementierung bei Lucene dabei, wie: FSDirectory: Speicherung des Indexes auf Festplatte RAMDirectory: In Memory Repräsentation Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Analyzer Vorverareitung des zu indizierenden Textes Abstrakte Klasse Etliche konkrete Implementationen in Lucene enthalten Analyseschritte Tokenisierung Stemming Beseitigung von Interpunktion und Sonderzeichen Beseitigung von Stopwörtern Sprachabhängig Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Initialisierung des IndexWriter Listing 1: Initialisierung des IndexWriter 1 File f ; 2 // . . . 3 4 5 6 7 8 init f IndexWriter writer = new I n d e x W r i t e r (f , new S t a n d a r d A n a l y z e r ( ) , true , / / c r e a t e I n d e x W r i t e r . M a x F i e l d s . UNLIMITED ) ; 9 // last parameter sets Dr. Christian Herta the maximum Einführung in Lucene field lenght Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Document Document ist die Entität, die indiziert und gefunden wird Document ist in Felder strukturiert Lucene indiziert Text aber auch numerische Werte (ab Lucene 2.9 auch native numerische Werte in NumericField ) Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Field Repräsentation der Felder des Document Felder können verschiedene Eigenschaften haben Indiziert Analysiert (wie Tokenisiert) Stored Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene (virtuelles) Dokument erzeugen Listing 2: Dokument erzeugen und füllen 1 2 3 4 5 6 7 8 9 10 11 File f ; . . . // i n i t i a l i z a t i o n o f f Document doc = new Document ( ) ; doc . add ( new F i e l d ( " c o n t e n t " ) , new F i l e R e a d e r ( f ) , F i e l d . S t o r e .NO, F i e l d . I n d e x . ANALYZED ) ; ) ; doc . add ( new F i e l d ( " f i l e n a m e " ) , f . getCanonicalPath () , F i e l d . S t o r e . YES , F i e l d . I n d e x .NOT_ANALYZED) ; Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Dokument zum Index hinzufügen Listing 3: Dokumente indizieren 1 // f o r 2 3 4 all Document doc .. w r i t e r . addDocument ( doc ) ; .. 5 6 // 7 writer is instance writer . close (); of Dr. Christian Herta IndexWriter Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Outline 1 Lernziele - Inhalt 2 Übersicht 3 Indizierung mit Lucene 4 Suche mit Lucene Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Wichtigen Klassen IndexSearcher Term Query TermQuery TopDocs Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene IndexSearcher Zentrale Komponente für den Zugri auf den Index bei der Suche Read-only Mode Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Term Term Paar Feldname Wert(Inhalt) des Feldes Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Query Query ist abstrakte Klasse Verschiedene konkrete Implementierungen TermQuery BooleanQuery PhraseQuery etc. Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene TopDocs TopDocs ist Container für die Ergebnisse der Suche Für die Ergebnisse erhält man docID Such-Score (oat) Dr. Christian Herta Einführung in Lucene Lernziele - Inhalt Übersicht Indizierung mit Lucene Suche mit Lucene Code-Schnipsel: Suche mit Lucene 1 2 3 4 5 6 7 Listing 4: Wichtige Klassen für die Suche IndexSearcher searcher = new I n d e x S e a r c h e r ( "/tmp/ i n d e x " ) ; Query q u e r y = new TermQuery ( new Term ( " c o n t e n t s " , " Lucene " ) ) ; TopDocs h i t s = s e a r c h e r . s e a r c h ( query , 1 0 ) ; searcher . close (); Dr. Christian Herta Einführung in Lucene