Lucene-Index

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Der IES bietet interne Funktionen zur Erstellung und Verwaltung eines Lucene-Index. Apache-Lucene (http://lucene.apache.org) ist eine hochperformante, hochfunktionale, textbasierte Suchmachine. Dabei handelt es sich im wesentlichen um eine Definition, wie Daten für Volltext-Suchen organisiert werden.

Ein solcher Index wird innerhalb eines eigenen Ordners im Dateisystem über mehrere Dateien organisiert. Das ermöglicht die transparente Verteilung auf unterschiedliche Systeme über Standard-Mechanismen. Der Zugriff auf den einen solchen Index ist über eine Vielzahl von Programmiersprachen möglich:

Auch der WebCrawler Nutch (http://lucene.apache.org/nutch/) erstellt für die Volltextsuche einer Website einen Lucene-Index. Diese vielfältigen Einsatzmöglichkeiten und die unglaubliche Performanz machen den Einsatz eines solchen Index interessant.

Der IES bietet über einen speziellen IndexerService die Möglichkeit eigene Indices pro Mandant zu definieren. Auf einfache Art werden dann automatisch Inhalte aus Artikeln beim Speichern in den Index übernommen. Der IES unterstützt dabei eine Vielzahl von Contenttypen, sowie die Möglichkeit Default-Werte anzugeben. Der hierbei erstellte Index ist in UTF-8 kodiert und unterstützt damit vollständig jede Sprache.

Auch die Indizierung von binären Inhalten ist für folgende Dateitypen mölglich:

  • PDF-Dokumente (bis PDF-Version 1.5)
  • Microsoft Word, Excel, Powerpoint (bis Version Office 2007)
  • RTF-Dokumente
  • OpenOffice Dokumente
  • XML-, HTML- und einfache Text-Dokumente

Weiterhin werden für unterschiedliche Typen von Elementen immer weitere Systemdaten in den Index übertragen. Auf diese Angaben kann über die entsprechenden Keys zugegriffen werden:

  • Element (gemeinsame Felder aller Elemente, auch Artikel)
  • id: ID
  • type: Typ
  • name: Name
  • sortname: Sortiername (ohne Akzent-Zeichen, alle klein geschrieben)
  • anchor: Anker
  • parent: ID des Parent (ohne Typ)
  • comment: Kommentar
  • changed: Datum der letzen Änderung
  • created: Datum der Erstellung
  • changedBy: ID des Nutzers, der das Element zuletzt bearbeitet hat
  • createdBy: ID des Nutzers, der das Element erstellt hat
  • Artikel (gemeinsame Felder aller Artikeltypen)
  • publisher: Liste aller Publisher-ID's
  • Artikel mit Datei (gemeinsame Felder aller Medien oder normalen Artikel
  • filename: Dateiname
  • suffix: Dateiendung
  • path: Pfad der Datei
  • Medienartikel
  • size: Dateigröße
  • mime: Mime-Type

Allerdings bildet der Index stets die Eingaben der Redakteure ab und hat keine Beziehung zu möglichen Freigaben. Es wird stets die aktuelle Version eines Artikels für alle konfigurierten Felder verwaltet. Es handelt sich somit um nicht freigegebene Inhalte. Mögliche Publkationen müssen eigenständig ausgewertet werden.

Um einen Index zu definieren wechselt man im IESAdmin in den Bereich Indexer. Dort kann man sowohl den Anker, als auch den Pfad, an dem der Index gespeichert werden soll angeben. Außerdem wählt man in welchen Mandanten dieser Index verwendet werden soll.

Um einen Index zu befüllen, muss im entsprechenden Template ein Formularfeld mit dem Namen SYS_INFE_indexes angegeben werden. Eine kommaseparierte Liste von Ankern gibt an in welche Indizes die Daten des Artikel übernommen werden sollen. Die Konfiguration regelt dabei, wie die Daten zu interpretieren sind.

Die Felder, die übertragen werden sollen, werden im IESAdmin für jeden Index einzeln definiert. Ein Indexer-Feld besitzt folgenden Felder:

  • Name
Name des Feldes, das indiziert werden soll.
  • Vorgabewert
Wert, der in den Index aufgenommen werden soll, wenn das Feld leer ist oder nicht existiert.
  • Typ
Daten-Typ wie Text, Zahl, Datum, Link oder Medium
  • Boost
Gewichtung des Feldes, das die Sortierreihenfolge bei Suchen auf den Index beinflusst.
  • Speichern
Gibt an, ob der Wert nicht nur indiziert sonder auch gespeichert werden soll. Werden die Daten nicht nur indiziert, sondern auch im Index gespeichert können nach der Suche auf den Index die Werte auch ausgegeben werden. Die Größe des Indexes erhöht sich allerdings erheblich, wenn auch die Daten mitgespeichert werden.