Webgate Anywhere 4.0 - Abfragesprachen-Referenz
lucene

8. lucene

Allgemein


Auf Basis der Open Source Bibliothek „Lucene“ der Apache Software Foundation existiert seit WGA 3.2 eine für alle Content-Stores einheitliche Möglichkeit zur Volltextindizierung der Inhalte. Content-Stores können regelbasiert indiziert und über eine einheitliche Abfragesprache durchsucht werden. Dabei spielt es keine Rolle, welche Content-Store-Typen zum Einsatz kommen. Datenbankübergreifende Suchanfragen sind  selbst in einer Mischumgebung aus Domino-Datenbanken und relationalen Datenbanksystemen möglich.

Bitte beachten sie, dass die Lucene-Volltextindizierung sehr flexibel konfiguriert werden kann. Alle auf dieser Seite aufgeführten Beispiele und Ergebnisse gehen von der Standard-Konfiguration aus. Sollte der Lucene-Volltextindex auf ihrem System anders konfiguriert sein, verhalten sich die hier vorgestellten Abfragen eventuell nicht wie beschrieben. Nähere Informationen zur Konfiguration des Lucene-Volltextindexes entnehmen sie bitte dem Administrationshandbuch.

Syntax

Im folgenden wird die am häufigsten verwendete Abfragesyntax für Lucene näher erläutert. Eine weiterführenden Dokumentation aller Abfragemöglichkeiten erhalten sie in der Lucene-Dokumentation.

Eine Abfrage besteht aus mehreren Suchklauseln. Als Suchklausel kann sowohl ein einfacher Suchausdruck als auch eine Kombination aus Feldname und Suchausdruck verwendet werden. Eine Abfrage der Form

<tml:query type="lucene">
    Content Management
</tml:query>

führt auf der aktuellen Datenbank eine Volltextsuche nach Dokumenten durch, die die Begriffe "Content" und "Management" enthalten. Bei dieser Suche werden alle Felder der Contentdokumente, sowie die Meta-Felder TITLE und DESCRIPTION berücksichtigt.
Um eine Suche auf ein bestimmtes Feld  einzuschränken, kann in einer Suchklausel auch ein Feldname verwendet werden. Feldname und Suchausdruck werden mit hierbei mit ":" getrennt.

<feldname>:<Suchausdruck>

Die Feldnamen entsprechen den Feldern der Content-Dokumente und werden immer klein geschrieben.
Kapitelverzeichnis einblenden

8.1 Sortierung

Standardmäßig sind Lucene-Suchergebnisse nach Relevanz sortiert, d.h. Dokument mit den "besten Treffern" werden als erste angezeigt. Dies ist jedoch modifizierbar und kann durch eine Sortierung nach Itemwerten ersetzt werden.

Wurde ein Item als sortierbar indiziert so können die Lucene-Suchergebnisse nach seinem Inhalt sortiert werden.

Dazu wird das Attribut options des Tags <tml:query> genutzt, in welchem kommaseparierte Suchoptionen angegeben werden können.

Eine Suchoption welche die Ergebnisse einer Lucene-Suche sortiert hat folgenden Aufbau:

Insgesamt sieht dies folgendermaßen aus:

<tml:query type="lucene" options="sort: myitem (asc)">...Suchabfrage</tml:query>

Sie können auch nach den meisten Metadatenfeldern sortieren. Dazu geben sie den Namen des Metadatenfeldes anstelle eines Itemnamens an, und zwar komplett in Großbuchstaben, z.B.:

<tml:query type="lucene" options="sort: TITLE (asc)">...Suchabfrage</tml:query>

Die Tabelle am Ende dieses Dokumentes dokumentiert, welche Metadatenfelder sortierbar sind.

Eine Sortierung nach mehreren Items oder Metadaten gleichzeitig ist derzeit nicht möglich.

8.2 Operatoren

Suchklauseln können mit verschiedenen Opertatoren verknüpft werden. Je nach Operator steht dieser direkt vor einer Suchklausel oder zwischen zwei Suchklauseln.

<Operator><feldname>:<Suchbegriff>

oder

<feldname>:<Suchbegriff> <Operator> <feldname>:<Suchbegriff>

Folgende Operatoren sind verfügbar:

Operator Beschreibung Position
AND, && Der Operator AND verknüpft zwei Suchklauseln mit UND. Es werden alle Dokumente gefunden, die beide Suchklauseln enthalten. Statt AND kann auch die Zeichenfolge && verwendet werden. Der Operator AND ist der Standardoperator von WGA, d.h. mehrere Suchklauseln ohne Operator werden automatisch mit UND verknüpft. zwischen zwei Suchklauseln
OR, || Der Operator OR verknüpft zwei Suchklauseln mit ODER. Es werden alle Dokumente gefunden, die eine der beiden Suchklauseln enthalten. Statt OR kann auch die Zeichenfolge || verwendet werden. zwischen zwei Suchklauseln
+ Der Operator + bestimmt, dass alle Ergebnisse die entsprechende Suchklausel enthalten müssen. direkt vor einer Suchklausel
NOT, -, ! Der Operator NOT bestimmt, dass alle Ergebnisse die entsprechende Suchklausel nicht enthalten dürfen. Anstatt NOT können auch die Zeichen - oder ! verwendet werden. Der Operator NOT kann nicht alleine verwendet werden. Ein Abfrage muss immer mindestens eine positiv formulierte Suchklauseln enthalten. Die Abfrage NOT "albert einstein" liefert keine Ergebnisse. NOT vor einer Suchklausel mit Leerzeichen getrennt, - oder ! direkt vor einer Suchklausel ohne Leerzeichen

8.3 Fortgeschrittene Syntax

Wildcards


Ein Suchausdruck kann zwei Arten von Wildcards enthalten. 

Ein "?" ersetzt genau ein Zeichen.
Ein "*" ersetzt mehrere Zeichen innerhalb des Ausdrucks.

Wildcards dürfen nicht als erstes Zeichen eines Ausdrucks verwendet werden.

Suchbegriffe mit Leerzeichen

Sucht man in spezifischen Feldern nach Begriffen, die Leerzeichen enthalten, so ist folgendes zu beachten:
Der angegebene Feldname bezieht sich immer nur auf den direkt darauf folgenden Suchausdruck. Die Abfrage:

body:Content Management mit WGA

sucht im Feld body nur nach dem Begriff "Content". Da das Leerzeichen als Trenner für unterschiedliche Such-Termini gewertet wird gehören die folgenden Begriffe nicht mehr zur feld-spezifischen Suche. Die Begriffe "Management", "mit" und "WGA" werden ganz normal feld-unspezifisch gesucht, also in allen Items sowie den Metadaten-Feldern TITLE und DESCRIPTION.

Sollen alle diese Begriffe ausschließlich im Feld body gesucht werden, muss die Abfrage wie folgt formuliert werden:

body:Content body:Management body:mit body:WGA

Hierdurch wird auch ersichtlich, dass die Reihenfolge der Begriffe im Text beliebig sein kann. Will man dass diese Wortfolge in genau der angegebenen Reihenfolge ohne Zwischenworte gesucht wird, so muss man eine "exakte Suche" wie im folgenden Abschnitt verwenden.

Exakte Suche

Um eine exakte Suche nach einer Zeichenfolge durchzuführen, muss die Zeichenfolge in Anführungszeichen gesetzt werden. Z.B.:

body:"Content Management mit WGA"

Meta-Felder

Auch Meta-Felder eines Contentdokumentes werden von WGA indiziert und stehen zur Suche zur Verfügung. Meta-Felder werden in Großbuchstaben angegeben. Folgende Abfrage sucht nach allen Dokumenten, die im Titel den Begriff "Management" enthalten:

TITLE:Management

Eine Liste mit allen indizierten Metafeldern finden sie am Ende dieses Dokumentes.

Suche in den Inhalten von Datei-Anhängen

Will man gezielt nur nach Begriffen suchen, die sich in den Inhalten von Datei-Anhängen von Inhaltsdokumenten befinden, so kann der spezielle Item-Name "allattachments" benutzt werden. Hierüber wird nur in den Inhalten von Datei-Anhängen gesucht, nicht jedoch in Items.

allattachments:"Content Management"

Suche nach Datumswerten und Zahlen

Die Lucenesuche basiert auf einem Volltextindex, indem alle Inhalte als String indiziert werden. Es wird also kein Unterschied zwischen Zahlen, Datumswerten und Texten gemacht. Dieser Umstand muss bei der Suche nach Datumswerten und Zahlen berücksichtig werden.

Datumswerte

Datumswerte werden von Lucene als Text im Format "yyyyMMddHHmmss" indiziert. Enthält ein Datum keine Uhrzeit, so sind die entsprechenden Felder 0. Der 01.09.2005 ist also im Index in der Form "20050901000000" gespeichert.
Eine Abfrage, die alle Dokumente liefert, die am 01.09.2005 geändert worden sind, wird wie folgt formuliert:

MODIFIED:20050901*

Zahlen

Zahlen werden unverändert indiziert. Die Abfrage

VERSION:5

liefert alle Dokumente mit der Versionsnummer 5.

Suchen in bestimmten Bereichen (von, bis)

Die Abfrage eines Feldes auf einen bestimmten Bereich (von, bis) ist über folgende Syntax möglich:

<feldname>:<B>[<von> TO <bis>]</B> oder
<feldname>:{<von> TO <bis>}

Die Suche mit [ ] ist inklusive der Werte <von> und <bis>. Es werden also auch Dokumente gefunden, die genau den Wert <von> oder den Wert <bis> im entsprechenden Feld enthalten. Die Suche mit { } ist exclusive der Werte <von> und <bis>. Das Suchergebnis enthält nur Dokumente zwischen den Werten <von> und <bis>.

Eine Abfrage, die alle Dokumente liefert, die zwischen dem 15.08.2005 und dem 01.09.2005 geändert worden sind, wird wie folgt formuliert:

MODIFIED:[20050815000000 TO 20050901235959]

Suchen nach größer oder kleiner als ...

Lucene unterstützt derzeit keine Abfragen auf größer oder kleiner. Diese Art der Abfragen können aber in eine Bereichssuche umgeschrieben werden. Möchten sie z.B. alle Dokumente finden, die nach dem 01.09.2005 geändert worden sind, so müssen sie die Abfrage als Bereichssuche mit einem fiktiven Enddatum definieren:

MODIFIED:{20050901000000 TO 20700101000000}

Alle Dokumente die vor dem 15.09.2005 erstellt wurden liefert folgende Abfrage mit dem fiktiven Anfangsdatum 01.01.1900:

MODIFIED:{19000101000000 TO 20050915000000}

Datenbankübergreifende Suchen


Mit Lucene ist es möglich, datenbankübergreifend Abfragen selbst bei unterschiedlichen Datenbanktypen (SQL, Domino) durchzuführen. Die Datenbank(en) auf die sich die Abfrage bezieht wird im Query-Tag über die Option "db" angegeben. Hier sind folgende Werte möglich:

Option "db" Beschreibung
<Datenbankschlüssel>,<Datenbankschlüssel>,... Datenbankschlüssel von Datenbanken in welchen gesucht werden soll, kommasepariert
* Es wird in allen Datenbanken der Domäne gesucht welche einen Lucene-Volltextindex besitzen.
** Es wird in allen Datenbanken gesucht welche in WGA eingebunden sind und einen Lucene-Volltextindex besitzen.

8.4 Sonstige Funktionen

Die Suchoption "explain" kann dem Attribut "options" in Tag <tml:query> mitgegeben werden, um Lucene dazu zu veranlassen, mathematische Erläuterungen für die Gewichtung der Suchergebnisse  auszugeben.  Diese Erläuterung kann als Metadaten-Feld "searchExplanation" an Inhalten abgerufen werden, die per Lucene-Suche ermittelt wurden.

<tml:collection>
    <tml:query type="lucene" options="explain">...Abfrage...</tml:query>
    <tml:foreach>
        <tml:link> - <tml:meta name="searchExplanation"/> <br>
    <tml:foreach>
</tml:collection>

Die Erläuterung zeigt in einer mathematischen Darstellungsweise auf, welche "Relevanz-Wertung" das Dokument erhalten hat und wie diese berechnet wurde:

2.5275803 = sum of: 0.6440604 = weight($LUCENE_DBKEY:doc-wga40 in 2637), product of: 0.38211125 = queryWeight($LUCENE_DBKEY:doc-wga40), product of: 1.685531 = idf(docFreq=1976) 0.22670081 = queryNorm 1.685531 = fieldWeight($LUCENE_DBKEY:doc-wga40 in 2637), product of: 1.0 = tf(termFreq($LUCENE_DBKEY:doc-wga40)=1) 1.685531 = idf(docFreq=1976) 1.0 = fieldNorm(field=$LUCENE_DBKEY, doc=2637) 1.8835199 = weight(allcontent:system in 2637), product of: 0.9241163 = queryWeight(allcontent:system), product of: 4.07637 = idf(docFreq=180) 0.22670081 = queryNorm 2.038185 = fieldWeight(allcontent:system in 2637), product of: 2.0 = tf(termFreq(allcontent:system)=4) 4.07637 = idf(docFreq=180) 0.25 = fieldNorm(field=allcontent, doc=2637)
Details zur Auswertung dieser Erläuterung finden sie in der Lucene-Dokumentation.

8.5 Indizierte Metadaten-Felder

Folgende Metafelder werden in der angegebenen Indizierungsart indiziert:

Metadaten-Feld Beschreibung Indizierungsart Sortierbar
AUTOR Autor des Inhaltes analyzed Ja
BASEIMAGE Grafik für Navigatoren keyword Ja
CREATED Erstellungsdatum date Ja
DBKEY Datenbankschlüssel keyword Ja
DESCRIPTION Kurzbeschreibung des Inhaltes fulltext Ja
DOCNAME, NAME, UNIQUENAME Eindeutiger Name keyword Ja
EMAIL E-Mail-Adresse des Autors analyzed Ja
HIDDENINNAV Ist "true", wen das Dokument in Navigatoren angezeigt werden soll, anonsten "false". keyword Ja
HIDDENINSEARCH Ist "true", wen das Dokument in Suchergebnissen angezeigt werden soll, anonsten "false". keyword Ja
HIDDENINSITEMAP Ist "true", wen das Dokument in Sitemaps angezeigt werden soll, anonsten "false". keyword Ja
HTMLHEAD Zusätzliche HTML-Headinformationen keyword Ja
KEY Content-Key keyword Ja
KEYWORDS Schlüsselwörter zur Verwendung in Suchmaschinen keyword Nein
LANGUAGE Sprachcode, z.B. "de" keyword Ja
LASTCLIENT WGA-Client über welchen das Dokument zuletzt gespeichert wurde keyword Ja
LASTMODIFIED, MODIFIED Datum der letzten Modifikation date Ja
LINKTARGET Name des HTML-Frames, in welchem das aktuelle Dokument geöffnet werden soll wenn es per Link ausgewählt wird keyword Ja
MOUSEOVERIMAGE Grafik für Navigatoren zur Anzeige bei Mauszeiger-Berührung keyword Ja
READERS Berechtigungsfeld: Leser mit Zugriffsberechtigung auf das Inhaltsdokument analyzed Nein
REFRESH "true", wenn die Seite nach einer Zeitperiode vom Browser neu geladen werden soll, ansonsten "false". keyword Ja
REFRESHTIME Zeitperiode in Sekunden, nach welcher der Browser die Seite neu laden soll. keyword Ja
REFRESHURL URL, welche anstelle der aktuellen Seite beim Refresh geladen werden soll keyword Ja
SELECTEDIMAGE Grafik für Navigatoren bei aktuell angezeigtem Inhaltsdokument keyword Ja
STATUS Workflow-Status des Inhaltsdokumentes:
"w" - Arbeitskopie
"g" - Zur Genehmigung
"p" - Freigegeben
"a" - Archiviert
keyword Ja
STRUCTENTRY, STRUCTKEY Schlüssel des zugehörigen Struktureintrags keyword Ja
TITLE Titel fulltext Ja
TRACKINGKEYS Tracking-Keys der Inhaltsseite keywords Nein
USENAVIMAGE "true", wenn für diesen Inhalt Grafiken im Navigator verwendet werden sollen, ansonsten "false" keyword Ja
VALIDFROM Datum, ab welchem das Dokument angezeigt wird date Ja
VALIDTO Datum, bis zu welchem das Dokument angezeigt wird date Ja
VERSION Versionsnummer keyword Ja
VIRTUALLINK Informationen zum Ziel des virtuellen Dokumentes. Inhalt hängt vom Typ des virtuellen Links ab:
"int" - Content-Key des Ziel-Dokumentes
"exturl" - URL zu externer Webseite
"file" - Folgende Syntax: <documentkey>/<filename>, Wobei <documentkey> der Name eines Dateicontainers oder der Schlüssel eines Inhaltsdokumentes sein kann
"intfile" - Name einer Datei am aktuellen Inhaltsdokument
keyword Ja
VIRTUALLINKTYPE Typ des virtuellen Dokumentes:
"int" - Ziel ist ein Inhaltsdokument der aktuellen Datenbank
"exturl" - Ziel ist eine beliebige URL
"file" - Ziel ist ein Dateianhang an einem Datei-Container oder Inhaltsdokument in der aktuellen Datenbank
"intfile" - Ziel ist ein Dateianhang am aktuellen Inhaltsdokument
keyword Ja
VISIBLE Generelles Sichtbarkeits-Flag. "true", wenn das Dokument sichtbar ist, "false" wenn nicht. keyword Ja
WFHISTORY Workflow-Historie analyzed Nein


<< table WebTML Tag-Referenz >>