January 19, 2009

Apache Lucene

« A simple ActiveMQ example | Main | Selenium mit Java »
Lucene stellt eine OpenSource Bibliothek zur Volltext Indexierung dar. Die Bibliothek ist auf nahezu allen bekannten Programmiersprachen portiert und intuitiv nutzbar. Schöner Aspekt an Lucene ist eine eigene Query Engine. Lucene erzeugt einen Index, auf dem der Entwickler über die Lucene Query Language zugreifen kann. Schwerpunkte bei Lucene liegen auf Performance und Skalierbarkeit.

Einfaches Beispiel für die Anwendung:
/* Index schreiben */

Analyzer analyzer =  new org.apache.lucene.analysis.SimpleAnalyzer( );
//Index-Verzeichnisname, Analyzer-Typ, true um einen neuen index anzulegen
IndexWriter iwriter = new IndexWriter ("developersblogtestindex", analyzer, true);

//Dokumente hinzufügen
String docText[] = new String[4];
docText[0] = "Ich programmiere"; 
docText[1] = "eine Software";
docText[2] = "die die Lucene";
docText[3] = "Indexierung nutzt";

for (int i = 0;  i < 4; docText.length){
    Document doc = new Document ();
    //Tokenizer für die einzelnen Wörter
    Field f = new Field ("text", docText[i], Field.Store.YES, Field.Index.TOKENIZED); 
    doc.add(f);
    //zum Index hinzufügen
    iwriter.addDocument (doc);
}

iwriter.close();


/* Index auslesen */

Searcher searcher = new IndexSearcher("developersblogtestindex");
QueryParser qp = new QueryParser("text", analyzer); 
Query query = qp.parse ("Lucene");
Hits hits = searcher.search(query);

int end = hits.length();
for (int i = 0; i < end; i++) {
    Document doc = hits.doc(i);
    String txt = doc.get("text");
    System.out.println("Hit(" + i + ") " + txt);
}
searcher.close();
Viele Grüße
Rafael

Technorati Tags:

Posted by rafael.sobek at 1:53 PM in Uncategorized