comundus GmbH
Inhalte clever verwalten - OpenCms

Die Suche in Ihrem Mitarbeiterportal

comundus realisiert auf Basis von OpenCms Mitarbeiterportale und Internetauftritte. In beiden Unternehmenslösungen spielt die Suche eine zentrale Rolle. Eine intelligente Suchfunktion kann darüber entscheiden, ob aus Besuchern Kunden werden und Mitarbeiter effizient und effektiv ihr Wissen teilen können.

OpenCms Suche mit Lucene

Die Suche in OpenCms basiert auf dem Lucene Framework. Die Jakarta Lucene ist eine leistungsstarke, voll funktionsfähige Text-Such-Engine, geschrieben in Java. Sie ist eine Technologie, die für fast jede mögliche Anwendung verwendbar ist. Lucene ist allerdings keine fertige Suchmaschine, sondern stellt Klassen und Funktionen zur Verfügung, um für beliebige Projekte eine eigene Suchmaschine zu bauen. Lucene unterstützt standardmäßig reichhaltige Suchoptionen.

Verhalten von OpenCms und Lucene

  • OpenCms erkennt, dass eine neue Ressource in die Suche aufgenommen werden soll.
  • OpenCms schaut, um welche Ressourcenart es sich handelt und extrahiert suchrelevante Daten - bei XmlContent z.B. Titel, Body, Dateipfad des Anhangs etc., bei Bildern z.B. Bildname, Bildpfad, etc. als Text.
  • OpenCms ruft Lucene auf und übergibt die aus der neuen Ressource extrahierten suchrelevanten Daten; dabei kann OpenCms noch angeben, ob diese eine besondere Gewichtung - "boost" - haben sollen. Außerdem wird Text, welcher aus wenigen Einzelwörtern besteht, höher gewichtet. So z.B. beim Titel, der oft nur aus einem Wort besteht im Gegensatz zum Content, der aus tausenden Wörtern bestehen kann.
  • Lucene untersucht den von OpenCms übergebenen Text und schreibt Informationen über die Häufigkeit der im Text enthaltenen Worte sowie deren Relevanz in den Index.

Folgende Operatoren bietet die Lucene Engine in OpenCms:

Fuzzy Suche

um eine undeutliche Suche zu formulieren wird das Tilde-Symbol ("~") verwendet
Beispiel: "seit~" liefert: Seite, seinen, weitere, Leiter...

Boolesche Suche

Verknüpfen von Wörtern mit UND, OR, AND
Beispiel: "Guten AND Tag" – beide Begriffe sollen vorkommen
Beispiel: "Tag NOT guten" – "Tag" soll vorkommen "gut" soll nicht vorkommen

Proximity Suche/Distanzsuche

"Guten wiedersehen"~10
(zeigt Ergebnisse, in dem die beiden Wörter maximal 10 Wörter zwischen sich haben)

Wildcard

Platzhalter (?,*) z. B. te?t
Die Suche ist über Platzhalter möglich, aber nicht am Anfang des Wortes:
z. B. *wort, *gang geht nicht
z. B. Haus*, Baum* geht

Einer der vielen Operatoren von Lucene ist die Wildcard. Ein Platzhalter gleich * kann am Ende oder in der Mitte eines Wortes gesetzt werden. Es zeigt sich, dass Kunden erwarten, dass eine Suche über Platzhalter am Anfang des Wortes möglich ist. Das Problem wird wie folgt gelöst: Es gibt eine Methode in der Klasse QueryParser. Mit dem Aufruf QueryParser.setAllowLeadingWildcard (true) kann man dies aktivieren. Nachteil, die Suchperformance leidet ordentlich.
Mehr zum Thema Wildcardsuche finden Sie im Lucene Wiki

Feldsuche
Lucene unterstützt Felddaten
Beispiel: "title:Seitentitel AND text: Inhalt".

Bereichssuche

Ein Bereich kann zum Beispiel ein Zeitraum sein (Erstelldatum zwischen 01.01.2011 und 08.01.2011 - inklusiv den beiden Tagen):
"created: [20110101 TO 20110108]"
oder exklusiv den beiden Tagen sein:
"created: {20110101 TO 20110108}"

Verstärkungsfaktor

Verstärkungsfaktor einem Tag zuordnen. Mit dem "^"-Symbol.
"Tag^4 du"  "Tag" wird 4 x stärker als "du" gewichtet

Die Beschreibung weiterer Funktionen stehen im Dokument OpenCms und Lucene zum Download als PDF bereit.