RSS-Feed anzeigen

Gruß Thomas!

Intro oder "Was ist Lucene?"

Bewerten
Ich habe von Berufs wegen und an der Universität viel mit dem Thema Lucene zu tun. Dabei lerne ich so gut wie jeden Tag etwas neues dazu (oder lerne, dass ich etwas falsch benutzt habe ) und möchte euch hier in diesem Blog darüber berichten. Seid bitte nachsichtig mit mir, das ist mein erster Blog und es kann passieren, dass ich zu sehr mit Fachbegriffen um mich werfe. Sagt mir einfach Bescheid, wenn ich etwas näher beleuchten soll.

So jetzt aber erst mal zum Anfang:

Was ist Lucene?

"Apache LuceneTM is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform." source

Lucene ist eine in Java gescrhiebene Volltext-Suchengine mit der man so gut wie jeder Anwendung Such-Features verleihen kann. Lucene ist zwar Industriestandard, ist aber eine sehr Low-Level API mit der man zwar viel machen kann, aber sich auf oft selbst in den Fuß schiessen kann, wenn man sie falsch verwendet. Daher gibt es einige High-Level Adaptionen, die versuchen Lucene einfacher benutzbar zu machen (http://www.elasticsearch.org/, http://hibernate.org/search/, http://lucene.apache.org/solr/), die auch unterschiedlich komplizierte Features haben. So bieten z.B. viele (alle 3 der vorhin genannten) Engines die Möglichkeit den Suchindex auf mehrere Rechner mehr oder minder automatisiert zu verteilen und abstrahieren von den Low-Level Basics von Lucene.

Warum benutze ich nicht eine dieser High-Level APIs?

Mache ich schon, aber mein derzeitiges Projekt erfordert extrem spezielle Analyse der Input-Texte und erfordert _keine_ Replikation auf mehreren Servern. Daher wäre es eher kontraproduktiv sich auf eine der großen (und daher auch trägeren wenn es um neue Lucene Features geht, v.a. bei HibernateSearch und ElasticSearch) APIs zu stützen, wenn man mit etwas Eigeninitiative Lucene selbst bändigen kann ohne die Möglichkeit zu verlieren, Lucene so zu konfigurieren und zu benutzen wie man es gerade braucht. Das ist der Grund, warum ich meine eigene kleine API nebenher immer weiter mit neuen Features versehe und voran treibe (https://github.com/Hotware/LuceneBeanExtension). Vielleicht schafft es ja auch irgendwann mal eins meiner Features in die offizielle Lucene API zu kommen, wer weiß?

So das wars aber auch mal für das Intro. Interessiert euch das Thema? Wenn ja werde ich gerne in den nächsten Tagen und Wochen etwas mehr schreiben und vielleicht auch ein, zwei Intros zu Lucene verfassen.

Martin

Kommentare

Trackbacks