Suchmaschine
Einführung#
Die Volltextsuche (auch FTS, engl. für FullTextSearch) ist ein integraler Bestandteil von imperia und wird genutzt, um Wörter oder Kombinationen von Wörtern in den Dokumenten eines Projekts zu finden. Sie dient also dem Durchsuchen der verfügbaren Dokumente auf einem Zielsystem. Dokumente auf einem Produktivsystem können ebenfalls durchsucht werden. Dies ist nützlich wenn die Funktionen der Suche, die in das imperia-Benutzerinterface eingebunden ist, nicht ausreichen. Dokumente die den Workflow bereits verlassen haben werden in der Volltextsuche indiziert.
Standardmäßig verarbeitet die Volltextsuche ASCII Dokumente (HTML, ASP, etc.). Mit der Hilfe zusätzlicher Programme ist es ebenfalls möglich, Microsoft Office®- (*.doc, *.xls, etc.) und PDF-Dokumente zu durchsuchen. Die Suche kann durch Gruppierung auf bestimmte Bereiche beschränkt werden, die auf Ordner- oder Meta-Ebene limitiert werden kann. Die Suche kann dahingehend angepasst werden, dass verschiedene Such- und Ergebnisseiten für verschiedene Nutzergruppen angezeigt werden. Verschiedene Domains ermöglichen es verschiedene Suchindizies zu verwalten. Auf diese Weise können die Datenbanken von Systemen mit mehreren Nutzern können separat indiziert und durchsucht werden.
Im Grunde indiziert die FTS den sichtbaren HTML-Text eines Dokumentes. Es ist ebenfalls möglich nicht sichtbare Metafelder zu indizieren und sichtbaren HTML-Code von der Indizierung auszuschließen.
Eingabe der Search Queries/Search Syntax#
Die Eingabe der Suche funktioniert über Templates. Mehr Informationen über das Erstellen von Suchtemplates kann im Kapitel imperia's Full Text Search Templates im Programmierhandbuch.Außerdem gibt es einige Syntax-Regeln für die Eingabe der Suchbegriffe:
- Eine Suchanfrage besteht aus einem oder mehr Wörtern.
- Die Verfeinerung der Suche liefert präzisere Suchergebnisse, indem man mehrere Suchbegriffe kombiniert.
- Die Gruppierfunktion, logische Operatoren und die Möglichkeit nach bestimmten Phrasen zu suchen ist ebenfalls verfügbar.
- Die angefragte Suche kann ebenfalls nach dem Inhalt bestimmter Metafelder gefiltert werden.
Die Syntax für diese speziellen Suchvarianten wird in den folgenden Kapiteln beschrieben. Der Abstand zwischen einzelner Wörter zu einem Schlüsselwort im Text des durchsuchten Dokuments spielt keine Rolle in der Kalkulation der Relevanz.
Case-sensitive#
Die FTS ignoriert Groß- und Kleinschreibung in den Suchbegriffen.
Sonderzeichen und Punktuation#
Grundsätzlich ignoriert die FTS Sonderzeichen und Punktuation, da diese generell nicht indiziert werden. Aus diesem Grund gibt es Ausnahmen für feststehende Begriffe wie C ++
. Trotzdem gibt es Ausnahmen der Nutzung von Sonderzeichen in einer Suchanfrage. Die Sonderzeichen "
, (
, )
, :
. \
und |
können genutzt werden um eine spezielle Suche auszuführen (siehe unten).
Wildcards#
Nutzen Sie das Sternchen “*” in Suchbegriffen um eine Wildcard für einen oder mehrere Buchstaben zu nutzen. Je mehr Wildcards in einer Suchanfrage genutzt werden, desto ressourcenintensiver wird diese verarbeitet. Aus Performance-Gründen erlauben Wildcard-Suchen standardmäßig Anfragen mit nur einem Wort (querymode = strict
) und einer Wildcard.
Diese Einstellung kann aber geändert werden, indem andere Werte für querymode
eingesetzt werden, siehe Abschnitt querymode unter Direktiven in Option-Blöcken.
Wenn Wildcards mit den Standardeinstellungen in Verbindung mit anderen Wörtern genutzt werden, sind die Ergebnisse nicht akkurat. In diesem Fall ignoriert die FTS die Wildcard. Eine Suche nach *a *e AND Begriff*
liefert Dokumente mit "a" oder "e" und dem "Begriff" anstatt Dokumente die mit "a" anfangen und mit "e" enden und den "Begriff" enthalten.
Wildcards, die nicht Teil des Suchbegriffs sind (Leerzeichen davor und dahinter), werden von der FTS ignoriert.
Es ist nicht möglich einen oder mehrere Begriffe mit Wildcards zu ersetzen, siehe Phrasensuche.
Bitte beachten
Stellen Sie sicher, dass die richtigen Werte für minValidCharacters
gesetzt sind, siehe Abschnitt Direktiven in Option-Blöcken.Weiterhin gelten für querymode
alle anderen Parsing- und Processing-Regeln.
Alternative Schreibweisen/Silbentrennung#
Eine Funktion um alternative Schreibweisen für ein Wort mit oder ohne Silben, zusammen geschrieben oder getrennt, ist aktuell nicht implementiert. Getrennt geschriebene Wörter werden auch getrennt indiziert. Es ist nicht möglich speziell nach getrennten Wörtern zu suchen.
Umlaute#
imperias Volltextsuche macht keine Unterschiede zwischen verschiedenen Schreibweisen mit Umlauten. Die Suchbegriffe “Bürgermeister” und “Buergermeister” liefern die gleichen Ergebnisse.
Phonetische Ähnlichkeiten#
Die FTS ignoriert phonetische Ähnlichkeiten. Dies trifft auch auf Begriffe wie "Graphik" und "Grafik", etc. zu.
Stoppwörter#
imperias Volltextsuche bietet die Möglichkeit eine Liste von Stoppwörtern zu definieren. Die Wörter in dieser Liste tauchen nicht im Index auf. Die FTS ignoriert die Stoppwörter auch in den Suchanfragen. Eine Anfrage, die ein Wort aus der Liste der Stoppwörter sowie andere Suchbegriffe enthält, gibt das gleiche Ergebnis zurück wie die gleiche Anfrage ohne das Stoppwort. Dabei ist es egal, ob die einzelnen Wörter mit einem AND oder OR verbunden sind oder, ob es eine Phrasensuche ist. Enthält eine Suche ausschließlich Stoppwörter, liefert sie kein Ergebnis.
Im Ergebnis-Template gibt es die Möglichkeit eine spezielle Rückmeldung für jedes Stoppwort in den Suchen zu definieren.
Stoppwortlisten können global oder domänenspezifisch konfiguriert werden. Kombinationen der zwei Varianten sind ebenfalls möglich. Informationen darüber, wie man diese Listen erstellt, lesen Sie im Abschnitt Stoppwortlisten anlegen und verwalten bzw. wie man unter "blacklist" die Listen verwaltet im Abschnitt Basis-Tags und -Direktiven.
Phrasensuche#
Wenn eine oder mehrere Wörter in Anführungszeichen markiert sind, werden diese als Suchphrase identifiziert. Die Suche wird nur Ergebnisse liefern, die alle Wörter in den Phrasen in exakt der gleichen Reihenfolge beinhalten. Die Punktuation in dem Originaldokument ist dabei irrelevant.
Kategorisierte Suche#
Restriktionen einer Suche bezüglich bestimmter Kategorien können getroffen werden, indem Metagruppen bei der Indexerstellung definiert werden, die anschließend in das Suchformular als Auswahloption bereitgestellt werden. Lesen Sie dazu im Abschnitt "<metaGroup>" unter Tags in Domain-Blöcken weiter.
URL-Suche#
Eine gezielte URL-Suche, ähnlich zu der Google Such-Engine, kann auch in imperias FTS genutzt werden. Zu diesem Zweck muss ein Metafeld site
im Dokument definiert werden. Schlüsselwörter die die Syntax 'site:www.myurl.en' nutzen, werden die Relevanten Ergebnisse liefern. Syntaktisch ist dies ein Filter für die einzelnen Teile der Metainhalte. Mehr Informationen unter Filtern nach Metainhalten.
Wortstamm#
Aktuell ist die Suche nach alternativen Wörtern mit dem gleichen Wortstamm nicht implementiert.
Gruppierung#
Durch Klammern "()" können ein oder mehrere Wörter in einem Suchbegriff gruppiert werden. Achten Sie auf korrekte Klammersetzung. Fehlt eine öffnende oder schließende Klammer funktioniert die Gruppierung nicht. Stattdessen interpretiert die FTS die Klammern als individuelle Komponente des Suchbegriffs.
Filtern nach Metainhalten#
Um Suchen nach Metainhalten filtern zu können, nutzen Sie:
metaFieldName:term
OR
metaFieldName:|term term2|
Das zweite Beispiel mit dem Pipe-Zeichen, enthält einen implizierten AND-Operator für die beiden Begriffe.
Kombinieren und Ausschließen von Schlüsselwörtern, logische Operatoren#
Mit den AND und OR Operatoren können Teile der Suchbegriffe miteinander verknüpft werden.
- Die Verknüpfung “Wort1 AND Wort2” liefert nur Ergebnisse, in denen beide Wörter enthalten sind.
- Wenn “Wort1 OR Wort2” genutzt wird, werden Ergebnisse geliefert, die einen der beiden Suchbegriffe enthalten. Dies ist die Standardeinstellung, wenn mehrere Wörter ohne einen zugeordneten Operator angegeben werden.
- Wenn ein bestimmtes Wort aus der Suche ausgeschlossen werden soll, kann NOT vor dieses Wort gestellt werden.
Für die AND, OR und NOT Operatoren sind Groß- und Kleinschreibung der Wörter nicht relevant. Sprachspezifische Synonyme für die logischen Operatoren können in der Suchkonfiguration spezifiziert werden (file site/config/fts.conf
). Zusätzlich fungieren folgende Zeichen als “shortcuts” für logische Operatoren:
Operator | Shortcut |
---|---|
AND | + |
OR | ? |
NOT | -, ! |
Logische Operatoren können willkürlich kombiniert werden. Dies kann in der Suchkonfiguration geändert werden (mehr unter "defaultOperator" im Abschnitt Direktiven in Option-Blöcken)
Ein Sonderfall sind Suchbegriffe mit einem Bindestrich. Wenn nach “Handball-WM” gesucht wird, interpretiert die FTS dies als: (handball OR wm) OR "handball world cup" OR "handballwm". Wenn der “AND”-Operator als Standard gesetzt wird, wird folgendes gesucht: (handball AND wm) OR "handball world cup" OR "handballwm".
Anzeigen der Suchergebnisse#
Die Suchergebnisse werden über eigene Templates ausgegeben. Die spezielle Syntax um Ergebnistemplates zu erstellen wird im Kapitel Ergebnistemplates im Programmierhandbuch erläutert.
Standardmäßig werden die Ergebnisse in einer absteigenden Liste nach Relevanz sortiert. Weitere Sortieroptionen können über die Konfiguration der Ergebnisfilter eingestellt werden. Orientieren Sie sich an den Anweisungen für sortBy unter Sortierung der Treffer bestimmen.
Wenn ein einzelnes Ergebnis ausgegeben wird, wird eine konfigurierbare Menge an Kontext zu dem eingegebenen Suchbegriff ebenfalls ausgegeben.
Anzeigen von Kontext#
Wenn Suchergebnisse ausgegeben werden zeigt die FTS auch Kontext für jedes Ergebnis. Die Position des Schlüsselwortes im Paragraphen, sowie die Anzahl der Wörter in diesem Auszug sind einstellbar.
Wenn die Suchanfrage aus mehreren Wörtern besteht, wird der erste Textabschnitt, in dem die Wörter am häufigsten auftauchen, und nicht die definierte Anzahl an Wörtern überschreitet, ausgegeben. Selbst wenn ein Dokument alle Suchbegriffe enthält werden diese nicht zwingend im Kontext angezeigt, falls die Anzahl der Wörter nicht ausreichend ist.
Des Weiteren ist der erste Abschnitt nicht zwingend der, der die Suchphrase enthält.
Highlighting#
Wenn die Ergebnisse hervorgehoben werden sollen, muss dies in den Anweisungen im Ergebnistemplate hinterlegt werden. Es gibt spezielle Highlight-Modi und CSS-Klassen um Suchbegriffe wie Wildcards hervorzuheben. Weitere Hinweise dazu sind im Kapitel Result Templates im Programmierhandbuch zu finden.
imperia bietet Standard-CSS-Dateien für die Darstellung von Hervorhebungen. Indem lokale CSS-Klassen im Ergebnistemplate definiert werden, werden diese Standard-Design der Hervorhebungen mit den eigenen Formatierungen ersetzt. Lesen Sie weiter im Abschnitt "highlight" unter Direktiven in Option-Blöcken.
Ergebnisfilter#
Normalerweise sendet imperia die Ergebnisse an den anfragenden Client direkt nach der Bearbeitung der Suchanfrage. Ein offenes Interface-Plug-in ermöglicht es, dass Ergebnisse bearbeitet werden, bevor sie ausgegeben werden. Auf diese Weise können spezielle Methoden der Sortierung oder Manipulierung der Darstellung der Metadaten für das gewünschte Dokument implementiert werden.
Ergebnisfilter-Plug-ins sollten unter site/modules/core/Dynamic/FTSResultFilter
gespeichert werden. Der Ordner enthält eingie Beispiele. Die verfügbaren Methoden für die Darstellung der Trefferliste wird in der POD im site/modules/core/Imperia/FTS/ResultFilterPlugin.pm
Modul beschrieben.
Für Informationen über die Aktivierung der Ergebnisfilter in der FTS, lesen Sie "resultFilterPlugin" im Abschnitt Direktiven in Option-Blöcken.
Berechnung der Relevanz#
Die Berechnung der Relevanz eines Dokuments in einer Trefferliste wird in mehreren Schritten durchgeführt. Während der Indizierung bestimmt die FTS einen Relevanzwert für jedes Wort, das im Text enthalten ist. Dies wird basierend auf der Anzahl der Dokumente, die das angefragte Wort enthalten, getan und darauf, wie häufig es in diesen Dokumenten auftaucht. Die finale Relevanz jedes einzelnen Wortes im Index wird berechnet, indem die Wortanzahl mit dem Durchschnittswert in Relation gesetzt wird. Wörter wie "und", "ist", etc. besitzen eine vergleichsweise geringe Relevanz, da sie häufig und in vielen Dokumenten vorkommen. Obwohl der Relevanzwert schlussendlich als absolute Zahl bestimmt wird, wird der Output in Prozent angegeben. Hierfür wird das Dokument mit dem höchsten Wert als Orientierungspunkt für die Umwandlung genutzt.
Für eine FTS Suchanfrage wird die Relevanz eines abgefragten Dokumentes anhand des Produktes der Relevanz eines Suchbegriffs und seine Häufigkeit in jedem Dokument identifiziert. Wenn ein Suchbegriff aus mehreren Wörtern besteht, wird die Relevanz aus der Summe der Werte der einzelnen Wörter berechnet.
Die Relevanz eines Dokuments kann beeinflusst werden, indem man Boni vergibt. Dies kann über folgende zwei Wege erreicht werden:
- Boni können auf Basis der Position eines Wortes in einem Dokument vergeben werden. Weitere Informationen dazu erhalten Sie unter "<bonus>" im Abschnitt Basis-Tags und -Direktiven
- Boni können anhand des Datums des Dokuments vergeben werden. Weitere Informationen dazu erhalten Sie im Kapitel DateBonus: Treffer mit datumsbasierten Boni sortieren.
Im Abschnitt Sortierung der Treffer bestimmen stellen Sie die Sortiermethode innerhalb der Relevanz ein.
imperias Volltextsuche konfigurieren#
Die FTS nutzt zwei Skripte: site/bin/fts_index.pl
für die Indizierung und cgi-bin/fts_search.pl
um Suchanfragen zu bearbeiten.
Es gibt außerdem ein weiteres Skript (fts_conf_convert.pl
), das bei der Konvertierung von bestehenden Konfigurationen aus älteren Versionen von imperias FTS in ein neues Format unterstützt. Die gesamte Konfiguration wird von den Konfigurationsdateien /site/config/index.conf
und /site/config/fts.conf
kontrolliert. Eine Beispielkonfiguration kann unter /site/config/index.conf.sample
gefunden werden, wo außerdem kurze Beschreibungen der Funktionen der Parameter zu finden sind.
Ein Quick Start Guide ist unter Quick Start Guide zu finden. Die Skripte werden auch noch in späteren Abschnitten thematisiert.
Voraussetzungen#
imperias FTS benötigt folgende Perl-Module:
-
BerkeleyDB >= 4.0. (empfohlene Version, Mindestvoraussetzung Version 3.0)
-
BerkeleyDB::Btree
-
Config::General (*)
-
File::Spec (*)
-
File::Copy (*)
-
File::Path (Teil des Interpreters seit Perl 5.8.X)
-
Tree::RedBlack (*)
Die Module die mit einem Sternchen markiert sind, sind in imperia enthalten, der Rest muss installiert werden bevor die FTS selbst genutzt wird. Diese Perl-Module können von www.cpan.org
bezogen werden. Wenn eines der benötigten Module fehlt, wird in einer entsprechenden Fehlermeldung darauf hingewiesen.
Optional ist das Modul "Compress::Zlib". Dieses Modul wird nur benötigt wenn der Cache des Index komprimiert werden soll.
Wenn andere Dateiformate (z.B. PDF) zusätzlich zu HTML und Textdateien indiziert und durchsucht werden sollen, müssen zusätzliche Parserprogramme installiert werden.
Aktuell sind folgende Parser-Plug-ins verfügbar:
-
Für Microsoft Office®-Dokumente gibt es das Programm catdoc, das von
http://www.wagner.pp.ru/~vitus/software/catdoc/
bezogen werden kann (Stand: September 2016). Empfohlen ist Version 0.94x, die unter GPL 2 Lizenz steht. Dies ist eine Sammlung von Parsern, die folgende Programme enthalten:-
DOC - Parser für Word Dokumente
-
XLS - Parser für Excel Dokumente
-
PPT - Parser für Powerpoint Dokumente
-
-
Für PDF-Dateien wird XPDF benötigt - ein Parser, der auf einer Programmsuite namens xpdf basiert. Der Parser ist unter folgender URL verfügbar:
http://www.xpdf.com/
(Stand: Mai 2017) undhttp://www.foolabs.com/xpdf/
. Dieser enthält die folgenden Programme:-
pdftotext
-
pdfinfo
-
Quick Start Guide#
Die FTS wird in drei Schritten aufgesetzt:
- Konfiguration
- Indizierung
- Template-Erstellung
Neben anderen Dingen wird durch die Konfiguration bestimmt, ob ein Dokument über die Suche gefunden werden kann. Templates können genutzt werden, um Suchkriterien, Suchparameter und die Ausgabe der Suchergebnisse festzulegen. Ein Suchindex wird während der Indizierung erstellt. Die Suche selber beschreibt auf welche Weise Suchwörter miteinander verknüpft werden können.
Es gibt Default-Werte für alle zu konfigurierenden Parameter, welche im Konfigurationsbeispiel genutzt werden. Beispiel-Templates können unter site/fts/templates
gefunden werden. Wenn keine spezielle Konfiguration benötigt wird, können Sie folgende Schritte durchführen:
-
Konfiguration: Im
site/config
Ordner sind Beispiel-Konfigurationsdateien für die Indizierung (index.conf.sample
) und die Ausgabe der Suche (fts.conf.sample
) zu finden. Sie können diese Dateien in dieindex.conf
undfts.conf
kopieren. -
Indizierung !!! note "Bitte beachten" Für große Projekte kann dieser Prozess etwas Zeit beanspruchen.
Führen Sie das Skript
site/bin/fts_index.pl
mit den Parametern-b
und-i
aus, um den Index zu erstellen. -
Nun können Sie Suchbegriffe in die vorbereiteten Templates eingeben, indem das Suchskript
fts_search.pl
aus dem cgi-bin Ordner im Browser aufgerufen wird:http://your_server.en/cgi-bin/fts_search.pl
oderhttp://ihr_server.de/cgi-bin/fts_search.pl?ADV=1
für ein genaueres Suchformular mit zusätzlichen Suchoptionen.
Konfiguration der Volltextsuche#
imperias FTS wird in zwei Bereiche unterteilt - das Erstellen des Suchindexes und das Suchen nach Begriffen im Suchindex, einschließlich der Trefferausgabe.
Dieser funktionale Bereich wird auch in der Konfiguration widergespiegelt, was in mehreren Dateien geschieht. Bereits bestehende Suchkonfigurationen aus älteren Versionen von imperia können mit einem Skript migriert werden. Weitere Informationen unter Konfiguration der Indexerstellung. Wenn Sie mehrere Suchindizes wollen, kann dies geschehen, indem mehrere Domains definiert werden. Das ermöglicht es beispielsweise die Suchkonfiguration für mehrere Zielsysteme zu nutzen.
Domains können genutzt werden um verschiedene Teile der Datenbank separat zu durchsuchen. Falls beispielsweise ein Teil der Daten auf einem Zielsystem nur für Mitarbeiter durchsuchbar sein sollen, müssen die entsprechenden Domains konfiguriert werden. In den meisten Fällen ist es jedoch ausreichen die Standard-Domaineinstellungen zu nutzen (default
).
Allgemeine Syntax-Konventionen#
Die Vorgaben der Syntax für die FTS Konfiguration basiert auf der Syntax für die Konfiguration des Apache Webservers. Einige Vorgaben werden in Klammern angegeben. Diese "Tags" bilden Blöcke in denen weitere tags oder Weisungen verschachtelt sein können. Ähnlich zu Markup-Sprachen oder der Apache-Konfiguration gibt es öffnende und schließende Tags.
Beispiel:
<option>
Weisungen
</option>
Bei einigen Tags werden die Parameter im Main-Tag gesetzt. Die Parameter werden mit Gleichzeichen und Anführungszeichen gesetzt oder ohne. Beispiel:
<directory = "path/to/directory">
Weisungen
</directory>
oder
<directory path/to/directory>
Weisungen
</directory>
Desweiteren können Weisungen wie folgt genutzt werden:
Directive="Value"
Beispiel:
chmap = "UTF-8"
Die Gleichzeichen und Anführungszeichen sind optional. Ausnahmen sind Fälle, in denen Parameter und Weisungen Leerzeichen enthalten. Hier müssen Anführungszeichen genutzt werden um sicherzustellen, dass der gesamte Ausdruck verwendet wird.
Grundsätzlich wird die Benutzung von Anführungszeichen empfohlen um Fehlinterpretationen zu vermeiden. Das oben aufgeführte Beispiel würde nicht funktionieren wenn eine einfach Änderung gemacht werden würde.
Folgendermaßen ist es falsch:
<directory path/to/directory >
Weisungen
</directory>
Das Leerzeichen vor der schließenden Klammer (Vergleichszeichen) wird als Teil des Pfades interpretiert, also "path/to/directory " anstelle von "path/to/directory". Im Gegensatz dazu funktioniert diese Variante ohne Probleme wenn der Pfad in Anführungszeichen gesetzt wird.
Korrekt:
<directory "path/to/directory" >
Weisungen
</directory>
In diesem Fall ignoriert der Parser das zusätzliche Leerzeichen. Groß- und Kleinschreibung werden vom Interpreter auch nicht beachtet.
Kommentarzeilen leiten Sie durch ein Raute-Zeichen (#) am Zeilenanfang ein. Verwenden Sie für Wertzuweisungen keine Umlaute oder Sonderzeichen außer Bindestrich (-) und Unterstrich (_). Ausgenommen hiervon sind reguläre Ausdrücke.
Reguläre Ausdrücke in der Konfiguration#
Reguläre Ausdrücke in den Konfigurationsdateien sind in ihrer Funktionalität stark an Perl angelehnt. Ihnen stehen sämtliche syntaktischen Möglichkeiten, die Sie in Perl im "Rumpf" eines Suchmusters (zwischen den Schrägstrichen) notieren können, zur Verfügung. Modifier (single line, multi line, ignore case etc.) sind nicht verwendbar. Generell werden die von Ihnen definierten Muster mit der Option "ignore case" ausgewertet. Einen Sonderfall stellen Datei- bzw. Verzeichnisnamen dar. Hier ist je nach Betriebssystem die Groß- und Kleinschreibung relevant.
Konfiguration der Indexerstellung (index.conf)#
Über die Datei site/config/index.conf
konfigurieren Sie die Indexerstellung. Die Konfiguration wird vom Skript fts_index.pl
eingelesen und verarbeitet.
Wichtig
Änderungen an der Konfiguration der Indexerstellung werden erst aktiv, wenn Sie einen neuen Index erstellen.
Im Folgenden finden Sie eine Auflistung der verwendeten Tags und Direktiven. Die einzelnen Anweisungen sind dabei jeweils in der höchstmöglichen Strukturebene aufgeführt, in der sie verwendbar sind. Einige können Sie auch noch an anderen Stellen einsetzen, was dann entsprechend vermerkt ist.
Basis-Tags und -Direktiven#
<domain>
Das Tag „domain“ beschreibt verschiedene unabhängige Konfigurationen für verschiedene Indizes innerhalb einer Konfigurationsdatei. Bis auf wenige Ausnahmen, die allgemeingültige Einstellungen festlegen und deswegen auch auf oberster Ebene definiert werden können, notieren Sie alle weiteren Tags und Direktiven innerhalb eines Domain-Abschnittes.
Die Verwendung von Domains ist flexibel. Sie können entweder verschiedene Datenbestände oder auch ein- und denselben Datenbestand mit unterschiedlichen Einstellungen indizieren. Beispielsweise lassen sich unterschiedliche Domains für Mitarbeiter und Kunden einrichten. Bei der Indexerstellung für die Suche, die von Ihren Kunden genutzt werden soll, würden Sie dann die Bereiche mit Informationen ausklammern, die nur zum firmeninternen Gebrauch bestimmt sind. Der Index für die von den Mitarbeitern genutzte Suche würde jedoch auch die nicht-öffentlichen Bereiche einschließen.
Gegenüber einer Filterung, die Sie zum Beispiel durch Gruppierung der Information erreichen, hat dies den Vorteil, dass die Trennung der verfügbaren Daten sicherer ist. In Informationsgruppen „versteckte“ Inhalte sind demgegenüber durch geschickte bzw. glückliche Manipulation der Aufrufparameter des Suchskripts unter Umständen auch unberechtigten Besuchern zugänglich.
Bitte beachten
Die in der Datei index.conf.sample genannte domain „default“ ist eine eigenständige Domain und dient nicht etwa der Erfassung von Default-Werten für andere Domains.
Syntax:
<domain= "domain_name">
[Tags und Direktiven zur Konfiguration des Index dieser Domain]
</domain>
Beispiel:
<domain = "secure”>
#limited index; only intranet
</domain>
<domain = ”web”>
#general index; public web content
</domain>
<settype>
Mit dem Tag „settype“ definieren Sie, welche Dateitypen indiziert werden sollen. Der Aufbau entspricht einer mehrwertigen Liste. Folgende Schlüssel stehen zur Verfügung:
-
HTML
Mit diesem Plug-in können Sie HTML-Dateien indizieren.
-
TXT
Dieses Plug-in ermöglicht die Indizierung von TXT-Dateien.
-
XPDF
Mit Hilfe des XPDF-Plug-ins ist es möglich, PDF-Dateien zu indizieren.
-
DOC
Um DOC-Dateien zu indizieren, verwenden Sie bitte dieses Plug-in.
-
PPT
Das PPT-Plug-in erlaubt die Indizierung von PPT-Dateien.
-
XLS
Unter Verwendung des XLS-Plug-ins lassen sich XLS-Dateien indizieren.
-
NULL
Mit Hilfe des NULL-Plug-ins können Sie einen reinen Meta-Index erstellen.
Syntax:
<setType>
Typ = [regulärer Ausdruck]
</setType>
Der reguläre Ausdruck beschreibt Dateiendungen.
Beispiel:
<setType>
HTML = "\..?html?$"
TXT = "\.txt$"
<setType>
Bitte beachten
Die Dokumenttypen PDF, DOC, PPT und XLS werden über externe Parser indizierbar gemacht. Dieses Tag kann außerdem innerhalb eines Domain-Abschnittes eingesetzt werden.
Für mehrsprachige Auftritte mit Dateinamen nach dem Muster index.html.de
muss das Suchmuster entsprechend angepasst werden.
<bonus>
Mit dem Bonus-Tag können Sie die Gewichtung der Volltextsuche beeinflussen, indem Sie einem Begriff abhängig von seiner Position in der Struktur eines Dokuments zusätzliches Gewicht verleihen. Dabei vergeben Sie Boni für bestimmte Strukturelemente und Metafelder eines Dokuments. Diese werden dann bei der Ermittlung der Häufigkeit eines Begriffes in einem Dokument hinzugezählt, wenn ein Begriff innerhalb des entsprechenden Strukturelements vorkommt.
Wenn Sie beispielsweise für Überschriften ersten Grades einen Bonus von zwei eingestellt haben, erhöht sich der Zähler für einen Begriff also jedes Mal um drei, wenn dieser innerhalb einer Überschrift ersten Grades erscheint (+1 für den Begriff, +2 durch den Bonus).
Sie können für folgende Elemente Boni vergeben:
-
title (<title></title>)
-
bold (<b></b>)
-
italics (<i></i>)
-
header1 (<h1></h1>)
-
header2 (<h2></h2>)
-
header3 (<h3></h3>)
-
header4 (<h4></h4>)
-
header5 (<h5></h5>)
-
header6 (<h6></h6>)
-
keywords (imperia -Metafeld oder pageMetaComment
keywords
) -
description (imperia meta field oder pageMetaComment
description
)
Wichtig
Die obige Auswahl von Strukturelementen steht Ihnen nur bei HTML-Dokumenten in vollem Umfang zur Verfügung. Bei PDF-Dateien kann lediglich für das Title-Element ein Bonus vergeben werden. Für Microsoft Office®-Dokumente lassen sich keine Boni festlegen.
Als Werte kommen Ganzzahlen und Dezimalzahlen in Frage. Notieren Sie Dezimalzahlen in der englischen Schreibweise mit einem Punkt als Dezimalzeichen.
Syntax:
<bonus>
Strukturelement = Ziffer
</bonus>
Beispiel:
<bonus>
italics = 1.2
title = 2
bold = 1.3
header1 = 1.2
header2 = 1.2
header3 = 1.2
</bonus>
Sie haben auch die Möglichkeit, Boni datumsbasiert, siehe Abschnittt DateBonus: Treffer mit datumsbasierten Boni sortieren sowie domainspezifisch zu definieren.
<exclude>
Sie können dieses Tag nutzen, um den Inhalt einzelner Metafelder oder Dateien, die ein bestimmtes Metafeld enthalten, von der Indizierung auszuschließen.
Syntax:
<exclude>
[Direktiven]
</exclude>
Eine Beschreibung der in Include-Blöcken verfügbaren Direktiven und Beispiele finden Sie in Direktiven in Exclude-Blöcken. Dieses Tag lässt sich auch innerhalb von Domain-, Directory-, DirectoryMatch- und Files-Blöcken einsetzen.
<include>
Sie können dieses Tag nutzen, um Dateien, die ein bestimmtes Metafeld enthalten, indizieren zu lassen.
Syntax:
<include>
[Direktiven]
</include>
Eine Beschreibung der in Include-Blöcken verfügbaren Direktiven und Beispiele finden Sie in Direktiven in Include-Blöcken. Dieses Tag lässt sich auch innerhalb von Domain-, Directory-, DirectoryMatch- und Files-Blöcken einsetzen.
<pageMetaComment>
Mit diesem Tag können Sie ein Metafeld definieren, das durchsucht werden und dessen Inhalt in Templates ausgegeben werden kann. Innerhalb des Tags legen Sie eine Start- und eine Endmarkierung fest, mit denen Sie den Metafeldinhalt vom übrigen Text des Dokuments abgrenzen.
Syntax:
<pageMetaComment = "meta_name">
start = "<!--startcomment-->"
stop = "<!--stopcomment-->"
</pageMetaComment>
Beispiel:
<pageMetaComment = "FSK 0">
start = "<!--start_FSK 0-->"
stop = "<!--stop_FSK 0-->"
</pageMetaComment>
Dieses Tag ist auch in Directory-, DirectoryMatch- und Files-Blöcken verwendbar.
blacklist
Mit dieser Direktive geben Sie eine oder mehrere Stoppwortlisten an, die für alle konfigurierten Domains der Volltextsuche gültig sein sollen. In einer Stoppwortliste aufgeführte Wörter indiziert die Volltextsuche nicht. Damit eine Suchanfrage die Stoppwörter ebenfalls ignoriert, müssen Sie die Direktive auch in der Suchkonfiguration site/config/fts.conf
setzen.
Syntax:
blacklist = BEZEICHNER
Mit BEZEICHNER
geben Sie eine Stoppwortliste an, die Sie mit dem Skript site/bin/fts_blacklist.pl
in das System eingetragen haben. Lesen Sie hierzu auch Stoppwortlisten anlegen und verwalten.
PDFINFO, PDFTOTEXT, XLS2CSV, CATDOC, CATPPT
Sollte sich das Parserprogramm nicht im Umgebungspfad befinden, notieren Sie jeweils eine absolute Pfadangabe zum Programm. Diese Tasg können auch innerhalb von Domain-Blöcken verwendet werden.
Tags in Domain-Blöcken#
<metaGroup>
Dieses Tag erlaubt Ihnen, Dateien anhand von Metafeldern und deren Inhalt zu Gruppen zusammenzufassen. Diese Gruppen können Sie bei Suchanfragen als Filter an das Suchskript übergeben. In einem MetaGroup-Block definieren Sie eines oder mehrere Metafelder mit zugehörigen Inhalten. Dokumente, die die entsprechenden Metafelder und Metafeldinhalte aufweisen, gehören dann zu dieser Gruppe.
Weitere Informationen finden Sie im Programmierhandbuch im Kapitel Transfer Parameter and Variables in Search Templates.
Syntax:
<metaGroup>
<meta Metafeldname>
[Gruppendefinition(en)]
</meta>
</metaGroup>
Beispiel:
<metaGroup>
<meta charset>
<groupname "CZECH">
match = "ISO-8859-2"
</groupname>
<groupname "RU">
match = "ISO-8859-5|KOI.+"
</groupname>
<groupname "INTL">
match = "UTF-8"
</groupname>
<groupname "WESTERN">
match = "ISO-8859-1"
</groupname>
</meta>
</metaGroup>
Meta-Gruppen lassen sich außerdem noch innerhalb von Directory-Blöcken einrichten.
<option>
Das Option-Tag beschreibt verschiedene Direktiven zur Steuerung der Indexerstellung. Die Beschreibung der einzelnen Direktiven finden Sie in Option-Direktiven.
Syntax:
<option>
[Direktiven]
</option>
Beispiel:
<option>
verbosityLevel = 1
followSymLinks = ON
</option>
<directory>
Das Directory-Tag dient in erster Linie zur Festlegung der Verzeichnisse, die indiziert werden sollen. Außerdem können Sie es als Container für weitere Parameter nutzen. Die Indizierung des documentDir, die der DOCUMENT-ROOT
Ihres Systems entspricht, ist per Default aktiviert.
Syntax:
<directory "path/to/directory”>
[Direktiven]
</directory>
Absolute Pfadangaben notieren Sie mit einem führenden Slash bzw. einem Laufwerksbuchstaben gefolgt von einem Doppelpunkt. Alle anderen Pfadangaben werden relativ zum documentDir
ausgewertet.
Tipp
Wenn Sie die Indexerstellung von documentDir
deaktivieren wollen, nutzen Sie folgendes:
<directory "pfad/zum/verzeichnis">
index = 0
</directory>
Beispiele:
Beim folgenden Beispiel handelt es sich um eine absolute Pfadangabe. Das Verzeichnis entspricht dabei dem Default-Wert für die Direktive documentDir
(siehe Option-Direktiven). Alternativ könnten Sie auch mit einem Leerstring (<directory=””>) darauf verweisen.
<directory /imperia/htdocs>
[Direktiven]
</directory>
Das folgende Beispiel zeigt eine relative Pfadangabe. Das Verzeichnis FTS
befindet sich direkt unterhalb des documentDir-Verzeichnisses.
<directory FTS>
[Direktiven]
</directory>
Die Beschreibung der einzelnen Direktiven finden Sie in Tags und Direktiven in Directory-Blöcken.
<directoryMatch>
Wenn Sie statt eines Verzeichnisnamens Bestandteile des Verzeichnisnamens als Kriterium für die Anwendung bestimmter Direktiven einsetzen wollen, nutzen Sie das Tag <directoryMatch>. Im einleitenden Tag definieren Sie einen regulären Ausdruck. Dieser wird bei der Indexerstellung auf die einzelnen Verzeichnisse angewendet. Passt der reguläre Ausdruck auf den Verzeichnisnamen, kommen die im entsprechenden DirectoryMatch-Block definierten Direktiven zur Anwendung.
Bitte beachten
Es werden nacheinander nur die einzelnen Verzeichnisnamen geprüft. Es ist nicht möglich, auf Bestandteile des gesamten Verzeichnispfades über Verzeichnistrenner hinweg zu prüfen.
Syntax:
<directoryMatch = "[regulärer_Ausdruck]">
[Direktiven]
</directoryMatch>
Beispiel:
<directoryMatch = ".+print$">
index = 0
</directoryMatch>
Nach dieser Definition würden folgende Verzeichnisse nicht indiziert:
-
news_print
-
products_print
Trotzdem würden jedoch folgende Verzeichnisse indiziert werden:
-
news_print/doc
-
news_print/pdf
-
products_print/doc
-
products_print/pdf
-
print
<files>
Mit dem Files-Tag können Sie Direktiven für bestimmte Dateien festlegen. Im einleitenden Tag definieren Sie dabei mit einem regulären Ausdruck, welche Dateien beachtet werden. Die Direktiven werden auf Dateien angewendet, deren Name auf das Muster passt.
Syntax:
<files = "regulärer Ausdruck">
[Direktiven]
</files>
Beispiele:
<files = "parse_this.html">
index = 2
</files>
Die Datei parse_this.html
wird indiziert.
Bitte beachten
Die Direktive index=2
aktiviert die Indizierung. Der Wert 2 wird innerhalb von files-Blöcken wie 1 bzw. yes
bzw. true
gewertet. Lesen Sie hierzu auch Tags und Direktiven in Directory-Blöcken.
<files \.text>
index = 1
chmap = "UTF-8"
</files>
Dateien mit der Endung .text
werden indiziert. Für Erläuterungen zu den in den Beispielen verwendeten Direktiven lesen Sie bitte Tags und Direktiven in Directory-Blöcken.
Dieses Tag können Sie auch in Directory- und DirectoryMatch-Blöcken einsetzen.
Direktiven in Exclude-Blöcken#
fileMetaKey
Bestimmen Sie ein Metafeld, bei dessen Vorhandensein das betreffende Dokument nicht indiziert werden soll. Der Wert dieser Direktive wird als regulärer Ausdruck gewertet.
Syntax:
fileMetaKey = "regulärer_Ausdruck"
Beispiel:
<exclude>
fileMetaKey "^mod.*"
fileMetaKey "^layout_test$"
metaKey "imperia"
</exclude>
Das Beispiel legt folgende Ausschlusskriterien fest:
-
Dateien, die ein Metafeld enthalten, dessen Name mit "mod" beginnt, wobei dahinter weitere Zeichen folgen können, werden nicht indiziert.
-
Dateien mit dem Metafeld
layout_test
werden nicht indiziert. -
Inhalte von Metafeldern, die im Namen die Zeichenfolge "imperia" enthalten, werden nicht in den Index aufgenommen.
metaKey
Geben Sie ein Metafeld an, dessen Inhalt nicht indiziert werden soll. Der Wert dieser Direktive wird als regulärer Ausdruck gewertet.
Syntax:
metaKey = "regulärer_Ausdruck"
Beispiel:
<excludeByValue>
<condition>
metaKey "^page_type$"
metaValue "^overview$"
</condition>
</excludeByValue>
Das Beispiel legt folgende Ausschlusskriterien fest: Seiten werden ausgeschlossen, die das Metafeld "page_type" mit dem Wert "overview" enthalten.
Direktiven in Include-Blöcken#
fileMetaKey
Bestimmen Sie ein Metafeld, bei dessen Vorhandensein das betreffende Dokument indiziert werden soll. Der Wert dieser Direktive wird als regulärer Ausdruck gewertet.
Syntax:
fileMetaKey = "regulärer_Ausdruck"
Beispiel:
<include>
fileMetaKey "^mod.*"
fileMetaKey "^layout_test$"
</include>
Das Beispiel definiert folgende Metafelder als Kriterium für ein Indizieren eines Dokuments:
-
Dateien, die ein Metafeld enthalten, dessen Name mit "mod" beginnt, wobei dahinter weitere Zeichen folgen können, werden indiziert.
-
Dateien mit dem Metafeld
layout_test
werden indiziert.
Tags und Direktiven in Directory-Blöcken#
<pageMeta>
Mit diesem Tag bestimmen Sie, welche Metataginhalte und imperia-Metafeldinhalte in den Index aufgenommen werden und unter welchem Namen sie dort referenzierbar sind.
Syntax:
<pageMeta>
Name_des_imperia_Metafelds = meta_alias_im_Suchtemplate
Name_des HTML-Metatags = meta_alias_im_Suchtemplate
</pageMeta>
Beispiel:
In PDF-Dateien sind neben dem eigentlichen Inhalt auch einige Metainformationen gespeichert. Allerdings liegen diese als Textinformationen in einem Format vor, auf das Sie nicht ohne Weiteres zugreifen können. Die Direktive pageMeta ermöglicht Ihnen, gezielt die Metainformationen eines PDF-Dokuments zu indizieren, um Sie bei der Ausgabe eines Suchergebnisses verwenden zu können. Das Programm pdfinfo
liefert folgende Metainformationen zu einem PDF-Dokument:
Title: Microsoft Word - MyTitle
Author: John Doe
Creator: PScript5.dll Version 5.2.2
Producer: Acrobat Distiller 6.0 (Windows)
CreationDate: Fri Jul 8 10:28:06 2005
ModDate: Tue Aug 9 11:18:17 2005
Tagged: no
Pages: 23
Encrypted: no
Page size: 595 x 842 pts (A4)
File size: 343800 bytes
Optimized: no
PDF version: 1.5
Um beispielsweise Titel, Erstellungs- und Änderungsdatum einer PDF-Datei in den Index der Volltextsuche aufzunehmen, definieren Sie folgenden PageMeta-Block:
<pagemeta>
title = dc_title
creationdate = page_time
moddate = mod_date
</pagemeta>
Die indizierten Meta-Tag- bzw. imperia-Metafeld-Inhalte lassen sich im Ergebnis-Template ausgeben. Enthält ein Dokument in der Trefferliste die indizierten Meta-Tags oder Metafelder, erscheint der jeweilige Inhalt in an der entsprechenden Stelle in der Trefferliste.
Eine Suchanfrage nach den Metafeld- bzw. Meta-Tag-Inhalten liefert ebenfalls Treffer. Auch, wenn die Inhalte nicht zum sichtbaren Text des Dokuments gehören, wie das zum Beispiel bei Meta-Tags der Fall ist.
Das PageMeta-Tag können Sie auch innerhalb von DirectoryMatch- und Files-Blöcken einsetzen.
<pageMetaCS>
Da alle Direktiven in der Indexkonfiguration "case-sensitiv" interpretiert werden, muss ein Workaround genutzt werden um die Meta Tags zu indizieren, deren Namen Großbuchstaben enthalten.
Die Idee dabei ist dem Originalnamen des Meta Tags einen Alias zu geben:
<pageMetaCS>
<alias>
originalName = "_group_test_ID"
aliasName = "_group_test_id"
</alias>
</pageMetaCS>
dirGroup
Die Direktive dirGroup
ermöglicht es, Verzeichnisse bzw. Verzeichnisinhalte zu Gruppen zusammenzufassen. Ein Verzeichnis kann dabei mehreren Gruppen angehören. So definierte Gruppen lassen sich mit dem Parameter GROUP
beim Aufruf des Suchskripts zur Filterung verwenden (Lesen Sie hierzu auch im Programmierhadnbuch das Kapitel Transfer Parameters and Variables in Search Template).
Syntax:
dirGroup = [Gruppenname(n)]
Beispiel:
<directory ="products_de">
index = yes
dirGroup = german
</directory>
<directory ="news_de">
index = yes
dirGroup = german
</directory>
<directory = "products_en">
index= yes
dirGroup = english
</directory>
<directory = "products_en">
index= yes
dirGroup = english
</directory>
Die Verzeichnisse produkte_de
und news_de
gehören nach oben stehender Definition zur Gruppe german
, die Verzeichnisse produkte_en
und news_en
zur Gruppe english
. Das gilt ebenfalls für die jeweiligen Unterverzeichnisse. Beispielsweise gehören auch die Verzeichnisse produkte_de/camping
und produkte_de/haushalt
zur Gruppe german
.
Mehrere Gruppen notieren Sie durch Leerzeichen voneinander getrennt.
<directory ="products_de">
index = yes
dirGroup = assortment german products
</directory>
Diese Direktive ist auch innerhalb von DirectoryMatch-Blöcken anwendbar. Beachten Sie dabei die besondere Funktionsweise von directoryMatch
(siehe Tags in Domain-Blöcken).
Beispiel:
<directoryMatch =".+_de">
index = yes
dirGroup = german
</directory>
<directoryMatch = ".+_en">
index= yes
dirGroup = english
</directory>
Alle Verzeichnisse, deren Name auf "_de" endet, gehören zur Gruppe german
. Alle Verzeichnisse, deren Name auf "_en" endet, gehören zur Gruppe english
.
Im Unterschied zum vorhergehenden Beispiel schließt das etwaige Unterverzeichnisse nicht mit ein. Die Verzeichnisse produkte_de/camping
und produkte_de/haushalt
müssten also produkte_de/camping_de
und produkte_de/haushalt_de
benannt sein, um ebenfalls zur Gruppe german
gezählt zu werden.
index
Mit der Index-Direktive steuern Sie die Indexerstellung. Sie können einstellen, ob Verzeichnisse bzw. Dateien indiziert werden. Bei Verzeichnissen steuern Sie, ob Unterverzeichnisse ebenfalls indiziert werden sollen. Einstellungen aus übergeordneten Verzeichnissen lassen sich durch Verwendung der Direktive für Unterverzeichnisse (directory
) oder Dateien (files
) überschreiben.
Zur Aktivierung einer rekursiv ausgeführten Indizierung setzen Sie die folgenden Werte ein:
-
yes
-
true
-
1
Um ein Verzeichnis oder eine Gruppe von Dateien von der Indizierung auszuschließen, verwenden Sie folgende Werte:
-
no
-
false
-
0
Bitte beachten
Innerhalb von Directory-Tags gilt „yes“ als Default-Wert, wenn Sie keine Index-Direktive setzen.
Verwenden Sie einen beliebigen anderen Wert, um nur das jeweilige Verzeichnis indizieren zu lassen. Unterverzeichnisse werden dann nicht durchsucht, es sei denn, Sie haben dies durch anderslautende Direktiven explizit aktiviert.
Beispiel:
index = yes-no-descend
Bitte beachten
In Files-Blöcken gibt es diese Option nicht. Dort gilt jeder Wert, der die Option nicht explizit abschaltet, als Aktivierung.
Diese Direktive ist auch innerhalb von DirectoryMatch- und Files-Blöcken anwendbar.
Bitte beachten
Innerhalb von Files-Blöcken bezieht sich die Index-Direktive ausschließlich auf die betreffenden Dateien, nicht auf die Verzeichnisse, in denen sich diese befinden.
chmap
Mit dieser Direktive können Sie einen Standard-Zeichensatz für Verzeichnisse festlegen. Bei der Indexerstellung wertet der Parser diese Angabe aus. Gibt es in den indizierten Dateien eine abweichende Angabe, z. B. durch ein entsprechendes Meta-Tag, hat diese Vorrang. Als mögliche Werte kommen alle vom Perlmodul Locale::Recode
unterstützten Zeichensätze in Frage.
Syntax:
chmap = "character set"
Beispiel:
chmap= "ISO-8859-1"
Diese Direktive können Sie auch in DirectoryMatch-Blöcken verwenden.
inherit
Diese Direktive ermöglicht es Ihnen, Einstellungen für ein Verzeichnis an dessen Unterverzeichnisse weiterzuvererben, auch wenn Sie das Verzeichnis selbst nicht bzw. nicht rekursiv indizieren lassen wollen. Einstellungen sind mit inherit
nur über eine Verzeichnisebene vererbbar. In Unterverzeichnissen gesetzte, widersprüchliche Direktiven überschreiben vererbte Einstellungen.
Bitte beachten
Die Einstellung für „index“ lässt sich nicht vererben.
Syntax:
inherit
Beispiel:
<directory = "news_de">
index = "0"
chmap = "ISO-8859-1"
inherit
</directory>
<directory = "news_de/economics">
index = "1"
</directory>
<directory = "news_de/politics">
index = "1"
</directory>
<directory = "news_de/sports">
index = "not-recursive"
inherit
</directory>
<directory = "news_de/weather">
index = "1"
chmap = "utf-8"
</directory>
<directory = "news_de/sports/fly_fishing">
index = "1"
</directory>
<directory = "news_de/sports/handball">
index = "1"
</directory>
In diesem Beispiel soll das Verzeichnis news_de
nicht indiziert werden. Allerdings wird festgelegt, dass der Inhalt ISO-8859-1-encodiert ist. Diese Einstellung soll auf Unterverzeichnisse weitervererbt werden, weswegen die Direktive inherit
gesetzt wird. In den Unterverzeichnissen news_de/wirtschaft
, news_de/politik
und news_de/sport
gilt deswegen auch die in der übergeordneten Ebene gesetzte chmap-Direktive.
Ausnahme ist das Verzeichnis news_de/wetter
, da hier mit chmap = "utf-8"
ein anderer Zeichensatz eingestellt wird. Da das Verzeichnis news_de/sport
wegen der Einstellung index = "not-recursive"
auch nicht rekursiv durchsucht wird, muss mit einem weiteren Einsatz von inherit
dafür gesorgt werden, dass die beiden Verzeichnisse news_de/sport/fliegenfischen
und news_de/sport/eisstockschiessen
ebenfalls als ISO-8859-1-encodiert gelten. Ohne diese weitere Inherit-Direktive würde die Zeichensatzeinstellung nicht weitervererbt.
"Inherit" lässt sich auch in Exclude-, Files-, MetaGroup-, PageMetaComment- und PageMeta-Blöcken einsetzen, wenn diese innerhalb eines Directory-Blocks stehen.
Option-Direktiven#
cacheSize
Diese Direktive gibt die Anzahl der Begriffe an, die in einer Cache-Datei enthalten sind. Wenn Sie sie auf den Wert 0 setzen oder entfernen, wird kein Cache erstellt. Werte kleiner als 100 sind nicht sehr empfehlenswert, da dann sehr kleine Dateien generiert werden und so je nach Größe der Zuordnungseinheiten Speicherplatz auf der Festplatte verschwendet wird.
Syntax:
cacheSize = [Zahl]
Beispiel:
cacheSize = 150
cacheMapLevels
Diese Direktive spezifiziert, wie der Cache auf dem Filesystem gespeichert wird. Der Default-Wert dafür ist "6", was 1.7594524e+48 Dateien im Cache erlaubt. Falls die Sammlung größer ist, muss die cacheMapLevels Direktive entsprechend erhöht werden.
Syntax:
cachemaplevels = [number]
Beispiel:
cachemaplevels = 6
Wichtig
Wenn der Wert von cacheMapLevels geändert wird, ist e nötig alle FTS-Indizes neu zu bauen.
compress
Mit dieser Direktive wählen Sie das Kompressions-Plug-in aus. Um eine Liste der verfügbaren Plug-ins zu erhalten, rufen Sie das Skript site/bin/fts_index.pl
mit dem Parameter -t
in Ihrer imperia-Installation auf.
Der Default-Wert ist 0 (kein Kompressions-Plug-in).
Bitte beachten
Ein Wechsel des Kompressions-Plug-in erfordert möglicherweise auch eine Anpassung der Einstellung cacheSize.
cacheDir
Mit dieser Direktive geben Sie das Verzeichnis an, in dem der Datei-Cache der Volltextsuche gespeichert wird.
Syntax:
cacheDir = "/absolute/path"
Beispiel:
cacheDir = "/usr/local/share/imperia/site/fts/index/mandant1/cache"
Wichtig
- Wenn Sie diese Variable setzen, müssen Sie auch darauf achten, dass das Verzeichnis nur von einem Index bzw. für eine Domain genutzt wird.
- Unter Umständen, zum Beispiel wenn mehrere Domains auf sich überschneidende Datenbestände zugreifen, kann es jedoch sogar wünschenswert sein, dass zumindest Teile des Caches von den Domains gemeinsam genutzt werden.
- Bitte wenden Sie sich im Zweifelsfall an den imperia-Support.
Das System legt für jede konfigurierte Domain automatisch ein Unterverzeichnis an, in dem dann der eigentliche Cache gespeichert wird.
Wichtig
Dies gilt nur, wenn Sie den Default-Wert nutzen.
Der Default-Wert ist dataDir/cache
.
dataDir "/absolute/path"
Tragen Sie hier den absoluten Pfad ein, unter dem der erzeugte Index abgelegt wird. Bei der Indexerstellung wird automatisch für jede konfigurierte Domain ein eigenes, nach der jeweiligen Domain benanntes Verzeichnis unterhalb dieser dataDir
angelegt. Der eigentliche Index liegt in diesem Unterverzeichnis.
Syntax:
dataDir = "/absolute/path"
Beispiel:
dataDir = "/usr/local/share/imperia/site/fts/index/mandant1"
Der Default-Wert ist das Verzeichnis site/fts/index
Ihrer imperia-Installation. Dieser Wert muss in der Konfiguration der Indexerstellung (Datei index.conf
) und der Suche (Datei fts.conf
) gleich sein.
dataTempDir
Mit dieser Direktive legen Sie das temporäre Arbeitsverzeichnis für die Indexerstellung fest. Tragen Sie eine absolute Pfadangabe als Wert ein. Die temporären Dateien der Indexerstellung werden für jede konfigurierte Domain in einem nach der Domain benannten Unterverzeichnis abgelegt.
Syntax:
dataTempDir = "/absolute/path"
Beispiel:
dataTempDir = "/usr/local/share/imperia/site/fts/index/tmp"
Der Default-Wert ist site/fts/index/tmp
.
documentDir
Definieren Sie einen absoluten Pfad zum Verzeichnis, das die zu indizierenden Dokumente enthält.
Syntax:
documentDir = "/absolute/path"
Beispiel:
documentDir = "/usr/local/share/imperia/htdocs"
Der Default-Wert ist das imperia-Document-Root.
followSubDir
Mit dieser Direktive können Sie die rekursive Indizierung aktivieren bzw. deaktivieren.
followSubDir = [ON|OFF]
Die Default-Einstellung ist ON
.
followSymlink
Mit dieser Direktive regeln Sie die Behandlung von symbolischen Links.
Syntax:
followSymlink = [ON|OFF]
Die Default-Einstellung ist ON
.
maxDepth
Mit dieser Direktive steuern Sie die maximale Verzeichnistiefe, die bei der Indexerstellung berücksichtigt wird.
Syntax:
maxDepth = [number]
Der Default-Wert ist 100 (Verzeichnisebenen).
memUseControl numerischer Wert
Setzen Sie hier einen numerischen Wert ein, der die maximale Größe der Speicherbereiche für die Indexerstellung festlegt. Mit dieser Direktive beeinflussen Sie die Performance und allgemeine Nutzung des Arbeitsspeichers.
Syntax:
memUseControl = [number]
Der Default-Wert ist 6400000 (Bytes).
verbosityLevel
Mit dieser Direktive kontrollieren Sie die Menge der Informationen, die während der Indexerstellung ausgegeben werden.
Syntax:
verbosityLevel = [0-3]
Mögliche Werte für die Einstellungen der verbosityLevel
Direktive:
Wert | Beschreibung |
---|---|
0 | "Minimal", nur die jeweiligen Schritte der Indexerstellung werden angezeigt. |
1 | "Normal", jeweilige Schritte der Indexerstellung und indizierte Dateien sowie etwaige Fehler bei der Erstellung der Dateiliste oder beim Parsing werden ausgegeben. |
2 | "Ausführlich", zusätzlich zu den normalen Meldungen werden ausgelassene Verzeichnisse und Statistiken der SR-Dateien ausgegeben. |
3 | Wie "Ausführlich", zusätzlich werden ausgelassene Dateien in den verarbeiteten Verzeichnissen und eine Liste der momentan indizierten Verzeichnisse ausgegeben. |
Tags und Direktiven in MetaGroup-Blöcken#
<meta>
Dieses Tag nutzen Sie, um innerhalb von MetaGroup-Blöcken Gruppen für einzelne Metafelder festzulegen. Folgende Metafelder sind für jedes Dokument verfügbar:
Allgemein verfügbare Metafelder:
Feld | Beschreibung |
---|---|
charset | Dies beschreibt den Zeichensatz, in dem das Dokument ursprünglich encodiert ist - nicht zu verwechseln mit dem in der imperia -internen Datenhaltung verwendeten Zeichensatz (UTF-8). |
filename | Dies ist der Dateiname des Dokuments. |
title | Dies ist der Dokumententitel, es sei denn, dieses Feld wurde durch entsprechende Konfiguration explizit geleert. |
Bitte beachten
Bei Dokumenten, die nicht mit imperia erzeugt wurden, zum Beispiel außerhalb imperias generierten PDF-Dateien oder Microsoft-Office®-Dokumenten, ist das Feld title
leer.
Syntax:
<meta = "MetaFieldName">
[group definition(s)]
</meta>
Gruppen lassen sich für jedes in einem Dokument verfügbare Metafeld definieren. Den Namen des betreffenden Feldes notieren Sie im einleitenden Tag eines Meta-Blocks. Anschließend können Sie für das Metafeld eine oder mehrere Gruppen definieren. Dabei legen Sie den Namen einer Gruppe mit dem Tag groupname
fest, siehe unten.
<groupname>
Den Namen einer Meta-Gruppe legen Sie mit diesem Tag fest. Gruppennamen sind frei wählbar, dürfen aber keine Leerzeichen oder Sonderzeichen außer Binde- und Unterstrich enthalten. Geben Sie statt eines feststehenden Namens einen regulären Ausdruck an, um dynamisch benannte Gruppen zu erhalten. Lesen Sie hierzu auch Dynamisch benannte Meta-Gruppen. Innerhalb des Tags definieren Sie ein Suchmuster für Metafeldinhalte.
Syntax:
<groupname "String | regulärer Ausdruck">
[search pattern]
</groupname>
Das Suchmuster definieren Sie mit der folgenden Direktive.
match
Legen Sie einen regulären Ausdruck fest, der während der Indexerstellung auf das betreffende Metafeld eines Dokuments angewendet wird. Passt das in dieser Direktive festgelegte Muster auf den Inhalt des betreffenden Metafeldes, gehört das Dokument zu der entsprechenden Gruppe.
Beispiel :
<metaGroup>
<meta charset>
<groupname "CZECH">
match = "ISO-8859-2"
</groupname>
<groupname "RU">
match = "ISO-8859-5|KOI.+"
</groupname>
<groupname "INTL">
match = "UTF-8"
</groupname>
<groupname "WESTERN">
match = "ISO-8859-1"
</groupname>
</meta>
</metaGroup>
Erläuterung:
-
CZECH
, alle Dokumente, deren Charset "ISO-8859-2”, bzw. "iso-8859-2” enthält -
RU
, alle Dokumente, deren Charset "ISO-8859-5”, bzw. "iso-8859-5” oder "KOI” bzw. "koi” gefolgt von beliebigen Zeichen enthält -
INTL
, alle Dokumente, deren Charset "UTF-8”, bzw. "utf-8” enthält -
WESTERN
, alle Dokumente, deren Charset "ISO-8859-1”, bzw. "iso-8859-1” enthält
Bitte beachten
Bei der Auswertung regulärer Ausdrücke wird die Groß- und Kleinschreibung grundsätzlich nicht berücksichtigt. Lesen Sie hierzu auch Reguläre Ausdrücke in der Konfiguration.
Dynamisch benannte Meta-Gruppen#
Es ist auch möglich, Gruppennamen um einen dynamischen Bestandteil zu ergänzen. Dieser dynamische Bestandteil ergibt sich aus dem Metafeldinhalt, der die Gruppenzugehörigkeit bestimmt. So können Sie dynamische Gruppennamen zusammensetzen. Auf diese Weise definierte Gruppen sind eigenständig. Die Syntax zur Erzeugung dynamischer Gruppennamen basiert auf der Funktionsweise der regulären Ausdrücke in Perl:
Damit die regulären Ausdrücke als Suffix an den Namen der Gruppe angehängt werden können, müssen Sie die Suchmuster in Klammern setzen (Gruppierung in regulären Ausdrücken). Dann kann der Zugriff auf die Gruppe im Suchmuster mit ${1}
erfolgen.
Beispiel:
<metaGroup>
<meta title>
<groupname "planet-${1}">
match = "(weather)"
match = "(forecast)"
match = "THIS IS NOT WHAT YOU WANT"
</groupname>
</meta>
</metaGroup>
Diese Definition legt anhand des Inhalts des Metafelds title
drei Gruppen fest:
-
Dokumente mit dem Wort "weather" im title gehören zur Gruppe "planet-weather".
-
Dokumente mit dem Wort "forecast" im title gehören zur Gruppe "planet-forecast".
-
Dokumente mit dem Satz "THIS IS NOT WHAT YOU WANT" im title gehören zur Gruppe "planet-".
Die dritte Gruppe ist zu Demonstrationszwecken falsch notiert und liefert nicht das (wahrscheinlich) erwünschte Ergebnis. Bei der Match-Direktive fehlen die Klammern, daher ergibt sich aus dem Suchmuster und dem feststehenden Teil des Namens kein dynamischer Gruppenname. Außerdem enthält das Muster Leerzeichen, und diese sind in Gruppennamen nicht erlaubt.
Die Konfiguration der Suche (fts.conf)#
Mit den Einstellungen in der Datei fts.conf
konfigurieren Sie, wie die Volltextsuche im Index nach eingegebenen Suchbegriffen sucht. Sollten Sie bereits eine ältere Version der imperia-Volltextsuche eingesetzt haben, bietet Ihnen das Skript fts_conf_convert.pl
aus dem Verzeichnis site/bin
Ihrer imperia-Installation die Möglichkeit, Ihre alte Suchkonfiguration in das Format der neuen Volltextsuche zu konvertieren. Die notwendigen Dateien werden dabei automatisch angelegt.
Eine Beispieldatei mit der notwendigen Minimalkonfiguration finden Sie im Verzeichnis site/config
unter dem Namen fts.conf.sample
. Sämtliche Parameter verfügen über Default-Werte, die auch in der Beispieldatei zum Einsatz kommen.
Bitte beachten
Durch die Default-Werte können Sie die Suche auch ohne die Datei fts.conf
bzw. mit einer leeren Datei nutzen. Allerdings sollten Sie dann vorher prüfen, ob die Default-Konfiguration für Ihre Zwecke genügt.
Basis-Tags#
blacklist
Mit dieser Direktive geben Sie eine oder mehrere Stoppwortlisten an, die für alle konfigurierten Domains der Volltextsuche gültig sein sollen. Die Suche ignoriert in einer Stoppwortliste aufgeführte Wörter in Suchbegriffen. Damit die Volltextsuche die Stoppwörter auch nicht indiziert, müssen Sie die Direktive auch in der Indexkonfiguration site/config/index.conf
setzen. Lesen Sie hierzu auch Stoppwortlisten anlegen und verwalten.
Syntax:
blacklist = BEZEICHNER
Mit BEZEICHNER
geben Sie eine Stoppwortliste an, die Sie mit dem Skript site/bin/fts_blacklist.pl
in das System eingetragen haben.
Wenn Sie mehrere Stoppwortlisten einsetzen möchten, verwenden Sie die Direktive mehrfach, für jede Stoppwortliste einmal.
Diese Direktive können Sie auch innerhalb von Domain-Blöcken verwenden, dann gilt die Stoppwortliste nur für die betreffende Domain.
<domain>
Die Einstellungen für die Suche innerhalb eines Index fassen Sie mit dem Tag domain
in einem Block zusammen. In der Datei fts.conf
lassen sich mehrere dieser Blöcke einsetzen. Sie können also mehrere Sets von unterschiedlichen Sucheinstellungen in einer Datei verwalten.
Diese Sets können sich sowohl auf einen einzigen als auch auf mehrere verschiedene Datenbestände beziehen. Jedes Set bzw. jede konfigurierte Domain benötigt ein eigenes Suchskript (siehe auch Erstellung von Suchskripten).
Alle weiteren Einstellungen werden innerhalb eines Domain-Blocks notiert.
Syntax:
<domain = "domain_name">
[Direktiven]
</domain>
Der Default-Wert für den Domainnamen ist default
bzw. ein Leerstring.
Tags in Domain-Blöcken#
<option>
Das Option-Tag fasst alle indexbezogenen Direktiven zu einem Block zusammen.
Syntax:
<option>
[Direktiven]
</option>
Die Erklärung zu den Direktiven in Option-Blöcken und Beispiele finden Sie unter Direktiven in Option-Blöcken.
<lang>
Innerhalb eines Lang-Blocks definieren Sie sprachspezifische Synonyme für Bestandteile eingegebener Suchbegriffe. So lassen sich etwa die logischen Operatoren zur Verknüpfung mehrerer Suchwörter in unterschiedliche Sprachen übersetzen. Mit dem CGI-Parameter lang
übergeben Sie beim Absenden von Suchanfragen die gewünschte Sprachversion, was dann bei der Verarbeitung der Anfrage die in der Suchkonfiguration hinterlegten Übersetzungen aktiviert.
Syntax:
<lang "Sprachkürzel">
Wort = Übersetzung
</lang>
Beispiel:
<lang "DE">
or = oder
not = nicht
and = und
</lang>
Dieses Beispiel zeigt die Ersetzung der logischen Operatoren OR
, NOT
und AND
durch ihre deutschen Übersetzungen, wie sie auch in der Standard-Suchkonfiguration enthalten ist. Schicken Sie nun eine Suchanfrage mit dem CGI-Parameter lang=de
, bzw. lang=DE
ab, interpretiert die Volltextsuche die Wörter oder
, nicht
, und
als logische Parameter, wenn sie im Suchbegriff vorkommen.
Bitte beachten
Dies gilt auch, wenn Sie oder, nicht, und als Stoppwörter konfiguriert haben.
<map>
Mit dem Tag map
definieren Sie einen Block, in dem Sie festlegen, wie die Systempfade der gefundenen Dokumente in der Ergebnisliste angezeigt werden. Der Pfad zum jeweiligen Verzeichnis wird dann bei der Verlinkung in der Trefferliste durch den Wert ersetzt, den Sie vorgegeben haben.
Syntax:
<map "absoluter/Systempfad">
to = "[URL]"
</map>
Beispiel:
<map "/usr/local/share/imperia/htdocs">
to = "http://ihr-server.net"
</map>
Per Default wird das Verzeichnis, das Sie in der Datei system.conf
Ihres Systems als DOCUMENT-ROOT
angegeben haben, durch das ABS-DOC-ROOT
ersetzt.
Bitte beachten
Beim Mapping werden lange Pfadangaben vor kurzen verglichen.
<output>
Zur Steuerung der Ausgabe des Suchergebnisses stehen Ihnen eine Reihe von Direktiven zur Verfügung, mit denen Sie beispielsweise die Anzahl der Ergebnisse festlegen, die pro Bildschirmseite angezeigt werden. Diese Anweisungen notieren Sie in einem Block, den Sie durch das Tag „output“ kennzeichnen.
Syntax:
<output>
[Direktiven]
</output>
In der Datei site/config/fts.conf.sample
Ihrer imperia-Installation finden Sie eine Beispielkonfiguration mit den Default-Werten. Die Direktiven für die Steuerung der Ausgabe sind in dem Abschnitt über Output-Direktiven erklärt.
Tags zur Template-Steuerung
Mit den Tags zur Template-Steuerung legen Sie fest, wo sich die Templates auf dem Zielsystem befinden, die von der Volltextsuche verwendet werden. Sie haben die Möglichkeit, innerhalb eines Tags mehrere Alternativen anzugeben, so dass ein schneller Wechsel zwischen unterschiedlichen Layoutvarianten möglich ist. Die Auswahl der Variante geschieht über einen Parameter, den Sie dem Suchskript mitgeben.
Wenn Sie jeweils nur eine Template-Variante benötigen, diese aber durch direkte Links erreichbar machen wollen, müssen sich die Templates unterhalb des DOCUMENT-ROOT des Zielsystems befinden, das durchsucht werden soll. Lesen Sie hierzu auch den Abschnitt zur Programmierung von Suchtemplates im Programmierhandbuch.
Syntax:
<[Template-Steuertag]>
[Zahl] = "/pfad/zum/template"
</[Template-Steuertag]>
Die Zahl ist dabei der Schlüssel, über den das betreffende Template beim Aufruf des Suchskripts referenziert wird. Möglich sind absolute Pfadangaben oder gültige, zum Verzeichnis cgi-bin relative Pfade.
<standardHTMLTemplate>
Innerhalb dieses Tags geben Sie die Templates für einfache Suchanfragen an.
Beispiel:
<standardHTMLTemplate>
1 = "/usr/local/share/imperia/htdocs/search/search-form.default.html"
</standardHTMLTemplate>
<advancedHTMLTemplate>
Templates für verfeinerte Suchanfragen notieren Sie innerhalb dieses Tags.
Beispiel:
<advancedHTMLTemplate>
1 = "/imperia/site/fts/templates/search-form.default.html"
</advancedHTMLTemplate>
<resultHTMLPage>
Notieren Sie hier die Templates für die Darstellung der Suchergebnisse.
Beispiel:
<resultHTMLTemplate>
1 = "/imperia/site/fts/templates/search-form.default.html"
</resultHTMLTemplate>
<templateDynamicGroups> und <template>
Wenn Sie für die Indexerstellung Meta-Gruppen definiert haben, können Sie im Suchtemplate eine Select-Box zur Verfügung stellen, die imperia automatisch mit den vorhandenen Gruppen befüllt. Das Select-Feld im Suchtemplate müssen Sie hierfür mit dem Namen GROUP
versehen und diesen in doppelte Anführungszeichen setzen. Mit dem Tag <templateDynamicGroups> bestimmen Sie, welche Gruppen mit welchem Namen in welchem Template automatisch als Optionen erscheinen sollen.
Syntax:
<templateDynamicGroups>
<template [Template-Nummer]>
Meta-Gruppenname = "Text für Option"
</template>
</templateDynamicGroups>
Mit dem Tag <template> legen Sie fest, in welchem Suchtemplate die automatische Generierung der Optionen erfolgen soll. Ersetzen Sie den Platzhalter [Template-Nummer]
durch die Nummer des entsprechenden Templates, die Sie bei den Template-Tags (siehe oben) angegeben haben. Als Meta-Gruppennamen tragen Sie den Namen ein, den Sie in der Indexkonfiguration verwendet haben. Der Text für die Option erscheint dann im Suchtemplate in der Selectbox. Dazu ein Beispiel:
Auszug aus der fts.conf
:
<templateDynamicGroups>
<template 1>
newsFb = "Fußballnachrichten"
newsHb = "Handballnachrichten"
newsEh = "Eishockeynachrichten"
_all_ = "Treffer aus allen Gruppen"
</template>
</templateDynamicGroups>
Eine Besonderheit ist der Gruppenname _all_
. Bei Auswahl dieser Option durchsucht imperia alle vorhandenen Gruppen.
Im entsprechenden Suchtemplate ist dazu folgendes Select-Feld definiert:
<select name="GROUP" multiple="multiple">
<option>Dummy</option>
</select>
Beim Aufruf des Suchtemplates über das Suchskript aus der cgi-bin ersetzt imperia die Dummy-Option durch die Gruppen aus der Datei fts.conf
. Im Suchtemplate erscheint also folgender Code:
<select name="GROUP" multiple="multiple">
<option value="newsFB">Fußballnachrichten</option>
<option value="newsHb">Handballnachrichten</option>
<option value="newsEh">Eishockeynachrichten</option>
<option value="_all_">Treffer aus allen Gruppen</option>
</select>
Direktiven in Option-Blöcken#
Die folgenden Direktiven müssen Sie innerhalb eines Option-Blocks notieren.
verbosityLevel
Mit dieser Direktive steuern Sie den Detailgrad der Informationen, die am Schluss der Suche im Index ausgegeben werden. Der Default-Wert ist 1.
Bitte beachten
Derzeit unterscheiden sich die ausgegebenen Meldungen nicht.
dataDir
Mit dieser Direktive legen Sie das Verzeichnis fest, in dem sich der Index befindet.
Wichtig
Dieser Wert muss in der Konfiguration der Indexerstellung (Datei index.conf
) und der Suche (Datei fts.conf
) identisch sein.
Syntax:
dataDir = "/absoluter/pfad"
Das System legt automatisch für jede konfigurierte Domain ein Unterverzeichnis in dem Verzeichnis an, das Sie mit dataDir
festgelegt haben.
Beispiel:
dataDir = "/usr/local/share/imperia/site/fts/index/mandant1"
Der Default-Wert ist das Verzeichnis site/fts/index
Ihrer imperia-Installation.
showContext
Die Anzahl der Wörter, die als Kontext zu einem Treffer angezeigt werden, bestimmen Sie mit dieser Direktive. Wenn Sie den Wert für diese Einstellung auf 0 setzen, deaktivieren Sie die Anzeige von Kontextbegriffen in der Trefferliste.
Syntax:
showContext = [Zahl]
Beispiel:
showContext = 100
Der Default-Wert dieser Einstellung ist 100.
percentPrecision
Mit dieser Direktiven bestimmen Sie die Anzahl der Nachkommastellen bei der Anzeige des Werts für die Templatevariable PAGE_PERCENT
. Der Default-Wert ist 0.
phpEnable
Aktivieren Sie diese Direktive, wenn Sie PHP-Code in Ihrem Suchtemplate parsen lassen möchten, bevor es an den Browser geschickt wird.
Syntax:
phpEnable = [Wert]
Mögliche Werte zur Aktivierung des PHP-Parsings sind:
-
yes
-
true
-
1
Um das Feature zu deaktivieren, setzen Sie die Direktive auf einen der folgenden Werte:
-
no
-
false
-
0
Beispiel:
phpEnable = "yes"
Per Default ist die Auswertung von PHP-Code deaktiviert.
phpPath
Wenn Sie die Auswertung von PHP-Code im Suchtemplate aktiviert haben, müssen Sie mit dieser Direktive den Pfad zum PHP-Interpreter angeben, wenn sich dieser nicht im Umgebungspfad befindet.
Syntax:
phpPath = "absoluter/Pfad/zum/Interpreter/Binary"
Beispiel:
phpPath = "/usr/local/bin/php"
Der Default-Wert ist php
.
querymode
Normalerweise ist aus Performancegründen in Suchbegriffen nur eine Wildcard möglich und bei der Verwendung von Wildcards dürfen Suchbegriffe nur aus einem Wort bestehen. Dieses Standard-Verhalten können Sie mit der Direktiven querymode
ändern. Außerdem lässt sich noch ein Suchmodus aktivieren, der die Suche nach Metagruppen ohne Angabe eines Suchworts erlaubt.
Die folgende Tabelle erklärt die möglichen Einstellungen für "querymode
" und die verschiedenen Suchmodi.
Parameter | Erklärung |
---|---|
strict | Innerhalb von Suchbegriffen ist nur eine Wildcard zulässig (Default). |
loose | Ermöglicht die Verwendung mehrerer Wildcards in mehreren Suchbegriffen.Beispiel: "fi*d ter*s " Beispielergebnisse: "field find terms territories" ... |
extraloose | Ermöglicht die Verwendung mehrerer Wildcards innerhalb von Suchwörtern. Beispiel: "*mperi* im*er*i* " Beispielergebnis: "imperia imperianer imperian" |
partial | Alle normalen Wörter (d.h. ohne Wildcard-Zeichen) werden wie Suchwörter behandelt, die am Anfang und am Ende des Strings Wildcards enthalten.Beispiel: "mperiane" => "*mperiane* "Beispielergebnis: "imperianer" |
metaonly | Ermöglicht die Suche nach Metagruppen ohne Angabe von Suchwörtern. Der Suchbegriff kann dann ausschließlich aus Metagruppen-Namen bestehen. Als Ergebnis erhalten Sie alle Dokumente aus den betreffenden Metagruppen.Beispiel: "group:myGroup"Beispielergebnis: listet alle Dokumente von "myGroup" auf. |
minValidCharacters
Diese Direktive gibt an, wie viele Zeichen außer einer Wildcard in einem gültigen Treffer enthalten sein müssen. Der Default-Wert 2 ermöglicht die Suche mit einer Wildcard im Suchbegriff mit Angabe von mindestens 2 anderen gültigen Zeichen.
highlight
Bei aktivierter Kontextanzeige (highlight = 1
) lassen sich die gefundenen Suchwörter in dem angezeigten Text hervorheben (mit false
oder 0
schalten Sie das Highlighting aus).
Dabei hebt die Volltextsuche normalerweise das ganze Wort hervor, auch wenn beispielsweise bei einer Suche mit Wildcard nur ein Teil des Wortes tatsächlich im Suchbegriff vorkommt. Um diese Teile gesondert hervorzuheben, setzen Sie die Direktive highlight
auf den Wert partial
. Die gesonderte Hervorhebung ist im Standard-Stylesheet für die Volltextsuche in eigenen CSS-Klassen definiert. Wenn Sie ein eigenes Stylesheet nutzen wollen, brauchen Sie folgende Klassen für die Formatierung der Hervorhebungen:
-
highlight
-
highlight_partial
-
highlight_meta
additionalUserVars
Mit dieser Direktive können Sie die Liste der CGI-Parameter für automatisch generierte, selbstreferenzierende Aufrufe der Suche erweitern. Diese zusätzlichen Parameter erscheinen dann beispielsweise in den Aufrufen des Suchskripts bei der automatisch erstellten Verlinkung der Trefferseiten.
Syntax:
additionalUserVars = "komma-separierte_Liste"
Beispiel:
additionalUserVars = "var1,var2,var3"
groupBool
In der Konfiguration der Indexerstellung können Sie mit den Direktiven metaGroup und dirGroup Gruppen definieren, die bei Suchanfragen als Filterkriterien fungieren, die mit dem Parameter GROUP
an das Suchskript übergeben werden (Lesen Sie hierzu auch im Programmierhandbuch den Abschnitt „Transfer Parameters and Variables in Search Template“).
Mit der Direktive groupBool
können Sie die boolesche Verknüpfung dieser Filtergruppen steuern. Mit der Einstellung AND
aktivieren Sie eine Filterung über alle Gruppen. Jeder andere Wert bedeutet, dass Ergebnisse lediglich zu einer der vorhandenen Gruppen gehören müssen.
Syntax:
groupBool = [Wert]
Examples:
groupBool = "AND"
groupBool = "and"
Dies sind Beispiele für logische UND-Verknüpfungen. Treffer müssen zu allen mit GROUP
übergebenen Gruppen gehören, um angezeigt zu werden.
groupBool = "OR"
groupBool = "any"
Dies sind Beispiele für logische ODER-Verknüpfungen. Treffer müssen nur einer der mit GROUP
übergebenen Gruppen angehören, um in der Trefferliste zu erscheinen.
Diese Filterung ist nur aktiv, wenn Sie beim Aufruf des Skripts mehr als eine Gruppe als Filterkriterium mit dem Parameter GROUP
übergeben. Der Default-Wert ist AND
.
defaultOperator
Mit dieser Direktive geben Sie an, wie die Volltextsuche mehrere Wörter in Suchbegriffen verknüpft, wenn der Benutzer keine Operatoren eingibt. Der Standardwert ist OR
.
Lang
wird benutzt, um die Sprache der Operatoren einzustellen ( CGI-Parameter LANG
). Standardmäßig ist 'EN' eingestellt, ebenso kann 'DE' abgebildet werden. Lesen Sie dazu den Abschnitt <lang> unter Tags in Domain-Blöcken weiter.
resultFilterPlugin
Mit dieser Direktive aktivieren Sie auf Ihrem System vorhandene Ergebnisfilter zur Aufbereitung der Trefferliste vor der Ausgabe. Notieren Sie als Wert den Package-Namen des Filter-Plug-ins. Ergebnisfilter-Plug-ins müssen im Verzeichnis site/modules/core/Dynamic/FTSResultFilter
liegen.
Syntax:
resultFilterPlugIn = PlugIn1,PlugIn2,PlugInN
Mehrere Plug-ins notieren Sie als kommaseparierte Liste ohne Leerzeichen. Dabei legen Sie gleichzeitig die Abarbeitungsreihenfolge der einzelnen Filter fest. Die Volltextsuche wendet den zuerst notierten Filter auch zuerst auf die Ergebnisliste an. Das Ergebnis dieser Filterung filtert sie anschließend mit dem an zweiter Stelle stehenden Filter und so weiter. Anschließend erfolgt die Ausgabe der gefilterten Ergebnisliste.
imperia beinhaltet drei verschiedene Ergebnisfilter:
-
DateBonus: Dieses Plug-in ermöglicht die Sortierung der Filter anhand datumsbasierter Bonuskriterien. Die Vergabe datumsbasierter Boni konfigurieren Sie mit einer Reihe weiterer Direktiven. Lesen Sie hierzu DateBonus: Treffer mit datumsbasierten Boni sortieren.
-
UserSort: Dieser Filter legt die Sortierreihenfolge der Trefferliste fest. Per Default erfolgt die Sortierung nach absteigender Relevanz. Alternative Sortiermethoden bestimmen Sie mit dem CGI-Parameter
SORT
, der im Abschnitt imperia's Full Text Search Templates im Programmierhandbuch beschrieben ist. Mit der DirektivesortBy
bestimmen Sie die Default-Sortiermethode. Lesen Sie hierzu UserSort: Sortierung der Treffer bestimmen.Bitte beachten
Wie imperia die Relevanz eines Dokuments berechnet, ist in Berechnung der Relevanz beschrieben.
-
XpdfConvert:
- Dieser Filter ist nützlich, wenn Sie PDF-Dokumente indizieren und auf der Ergebnisseite das Erstellungs- bzw. letzte Änderungsdatum der PDF-Dokumente anzeigen möchten. Das Programm
pdfinfo
, Bestandteil des XPDF-Pakets, liefert beide Datumsangaben als String im englischen Datumsformat. Dabei können abhängig von der zur Erzeugung des PDF-Dokuments verwendeten Software unterschiedliche Variationen auftreten. - Der Filter
XpdfConvert
wandelt ausgehend von einer Reihe von Varianten diese Datumsangaben in eine Angabe im FormatTT.MM.JJJJ hh:mm
um.
- Dieser Filter ist nützlich, wenn Sie PDF-Dokumente indizieren und auf der Ergebnisseite das Erstellungs- bzw. letzte Änderungsdatum der PDF-Dokumente anzeigen möchten. Das Programm
Direktiven in parseroption-Blöcken#
Parser-Optionen sind eine Unterebene der normalen Optionen. Ihre Besonderheit ist, dass sie direkt an alle Parser-Plug-ins weitergereicht werden. Dadurch ist eine Erweiterung der Konfiguration für neu geschriebene Parser-Plug-ins möglich.
Beispiel:
<option>
dataDir = "/absolute/path"
<parseroption>
ignoreMeta = "title|author"
</parseroption>
</option>
ignoreMeta
ignoreMeta
ist eine Option, die vom HTML-Parser ausgewertet wird. Mit ihrer Hilfe ist es möglich, den Inhalt von Metadaten aus dem HTML-Kopf zu ignorieren. Dies ist insbesondere wichtig, wenn wie im folgenden Listing ein Metatag "title" und ein HTML-Titel vorhanden ist.
<html>
<head>
<title>Page Title</title>
<meta name="title" content="Seitentitel">
</head>
Ohne Verwendung von ignoreMeta="title" würde der Titel hier zweimal indexiert und im Suchergebnis zweimal hintereinander ausgegeben.
Der Wert des Feldes wird als regulärer Ausdruck ausgewertet.
Beispiel:
ignoreMeta = "title|author"
keepphptag
keepphptag
ist eine Option, die vom HTML-Parser ausgewertet wird. Ohne diese Option entfernt der HTML-Parser alle Tags, die mit <? ... ?> eingeschlossen sind, bevor der Rest der Datei geparst wird.
Beispiel:
<option<
<parseroption>
keepphptag = 1
</parseroption>
</option>
process_ssi
Wird die Option process_ssi auf "1" gesetzt, so werden beim Indexieren der Dokumente SSI-Includes mit eingebunden. Standardmäßig ist diese Option abgeschaltet, was dazu führt, dass Teile von Webseiten, die als SSI eingebunden sind, nicht mit indiziert werden.
Beispiel:
<option>
<parseroption>
parse_ssi = 1
</parseroption>
</option>
Direktiven in Output-Blöcken#
CURRENT_PAGE
Mit dieser Direktive legen Sie fest, welche Ergebnisseite zuerst angezeigt wird.
Syntax:
CURRENT_PAGE = [Zahl]
Beispiel:
CURRENT_PAGE = 1
Der Default-Wert ist 1.
MAX_PAGE_LIST
Dies gibt die Höchstanzahl der Verweise auf weitere Trefferseiten an, die pro Seite angezeigt werden.
Syntax:
MAX_PAGE_LIST = [number]
Beispiel:
MAX_PAGE_LIST = 100
Der Default-Wert ist 100.
MAX_PAGES
Dies gibt die Anzahl maximal generierter Trefferseiten an.
Syntax:
MAX_PAGES = [Zahl]
Beispiel:
MAX_PAGES = 100
Der Default-Wert ist 100.
PER_PAGE
Dies gibt die Anzahl angezeigter Treffer pro Bildschirmseite an.
Syntax:
PER_PAGE = [Zahl]
Beispiel:
PER_PAGE = 10
Der Default-Wert ist 10.
UserSort: Sortierung der Treffer bestimmen#
Der Ergebnisfilter UserSort
regelt die Sortierung der Trefferliste. Die jeweilige Sortiermethode legen Sie mit dem CGI-Parameter SORT
fest, der im Abschnitt imperia's Full Text Search Templates im Programmierhandbuch beschrieben ist. Die Default-Sortiermethode bestimmen Sie mit der im Folgenden beschriebenen Direktive sortBy
.
sortBy
Diese Direktive regelt die Default-Sortiermethode der Trefferliste. Die folgende Tabelle zeigt die verfügbaren Sortiermethoden:
Parameter | Erklärung |
---|---|
arelevance |
aufsteigende Sortierung nach Relevanz |
drelevance |
absteigende Sortierung nach Relevanz (Default) |
amodified |
aufsteigende Sortierung nach Änderungsdatum |
dmodified |
absteigende Sortierung nach Änderungsdatum |
asize |
aufsteigende Sortierung nach Dateigröße |
dsize |
absteigende Sortierung nach Dateigröße |
awords |
aufsteigende Sortierung nach Wortanzahl |
dwords |
absteigende Sortierung nach Wortanzahl |
disableUserSort
Setzen Sie diese Direktive auf den Wert 0
, um etwaige mit der Suchanfrage übergebene Sortieroptionen zu unterdrücken.
DateBonus: Treffer mit datumsbasierten Boni sortieren#
imperia bietet einen Ergebnisfilter, mit dem Sie Dokumenten anhand ihrer Aktualität einen Relevanzbonus verleihen können. Wenn Sie den Filter aktiviert haben, definieren Sie Maximalbonus, Intervall und Schrittweite der datumsbasierten Boni. Den Maximalbonus bekommt das jeweils aktuellste Dokument aus einer Trefferliste. Dieser Wert verringert sich im von Ihnen definierten Intervall mit abnehmender Aktualität des betreffenden Dokuments um die die ebenfalls von Ihnen vorgegebene Schrittweite.
Bitte beachten
Beachten Sie, dass das DateBonus Plug-in in den Optionen des "ResultFilterPlugin" enthalten sein muss, lesen Sie dazu resultFilterPlugin im Abschnitt Direktiven in Option-Blöcken.
bonus_date_max
Mit der Direktive bonus_date_max
definieren Sie den Relevanzbonus für das aktuellste Dokument aus der Trefferliste. Geben Sie einen Wert zwischen 1 und 100 an.
Beispiel:
bonus_date_max = 50
bonus_date_step
Mit dieser Direktive geben Sie an, um wie viel sich der Bonus jeweils nach Ablauf eines Intervalls verringern soll. Möglich sind Werte zwischen 1 und 100.
bonus_date_step = 10
bonus_date_period
Diese Direktive gibt das Intervall an, in dem sich der Bonus für die Aktualität eines Dokuments verringert. Geben Sie eine Zahl und optional eine Zeiteinheit an. Für die Zeiteinheiten gibt es eine Kurz- und eine Langschreibweise, die in der folgenden Tabelle aufgeführt sind.
Zeiteinheiten für die Direktive bonus_date_period
:
|Format|Kurzform|Langform|Beschreibung|
|-|-|-|
|Zahl
|mi
|minutes
|Minuten|
|Zahl
|d
|days
|Tage|
|Zahl
|w
|weeks
|Wochen|
|Zahl
|mo
|months
|Monate|
|Zahl
|y
|years
|Jahre|
Wenn Sie keine Zeiteinheit angeben, wählt die Volltextsuche automatisch Tage (days).
Aus den drei Parametern Maximalbonus, Schrittweite und Zeitintervall ergibt sich, wie alt ein Dokument maximal sein kann, um einen Aktualitätsbonus zu erhalten. Dazu ein Beispiel:
bonus_date_max = 50
bonus_date_step = 10
bonus_date_period = 1 d
Mit dieser Konfiguration bekommen Dokumente, die bis zu einem Tag alt sind, einen Bonus von 50, was dem Maximalwert entspricht. Dokumente, die zwischen einem und zwei Tage alt sind, erhalten einen Bonus von 40 (50 - 10). Mit jedem weiteren Tag verringert sich der Bonus jeweils um weitere 10, bis er ganz aufgebraucht ist. Dokumente, die älter als 5 Tage sind, bekommen also gar keinen Bonus mehr.
bonus_date_field
Per Default nutzt die Volltextsuche das Metafeld __imperia_modified
, das Datum der letzten Bearbeitung im CMS, zur Berechnung des Datumsbonus. Grundsätzlich können Sie aber jedes Feld als Basis für diese Berechnung verwenden, das eine Datumsangabe in Form eines Unix-Timestamps enthält. Mit der Variablen bonus_date_field
bestimmen Sie dieses Metafeld.
Folgende Optionen stehen Ihnen für die Angaben für die Variable bonus_date_field
zur Verfügung:
Parameter | Erklärung |
---|---|
file_modified |
Datum der letzten Bearbeitung in imperia (Default) |
fs_file_modified |
Änderungsdatum auf Dateisystemebene |
METAFELDNAME |
Beliebiges Metafeld, das einen Unix-Timestamp enthält. Definieren Sie in der Indexkonfiguration eine PageMeta-Direktive für dieses Feld, um es indizieren zu lassen. |
Beachten Sie auch, dass das Änderungsdatum auf Dateisystemebene sich beispielsweise auch bei einem Reparsing der Datei ändert. Das bedeutet, dass nicht immer zwingend eine Änderung am Inhalt der Datei erfolgt, wenn sich das Datei-Änderungsdatum erneuert.
Indexerstellung#
Die Erstellung des Suchindex stoßen Sie mit dem Skript fts_index.pl
im Verzeichnis site/bin
Ihrer imperia-Installation an. Rufen Sie das Skript von der Kommandozeile aus auf.
Dabei stehen folgende Aufrufparameter/verbosity level zur Verfügung:
Parameter | Bedeutung |
---|---|
-h, --help |
Dieser Parameter gibt die Hilfeseite aus. |
-i, --install |
Die Installation eines zuvor erstellten Index wird ausgeführt. Die zugehörigen Dateien werden dabei aus dem temporären Verzeichnis in das mit der Einstellung dataDir spezifizierte Verzeichnis kopiert. |
-b, --build |
Löst die Erstellung des Index für die angegebenen Domains aus. |
-t, --test |
Startet die Prüfung der Index-Konfiguration und gibt eine Liste verfügbarer Komprimierungs-Plug-in aus. |
Außerdem können Sie beim Aufruf noch die Domains angeben, die Sie indizieren möchten. Jede Domain, die Sie hierbei aufführen, muss in der Datei index.conf
im Verzeichnis site/config
des Systems, das Sie indizieren möchten, wenigstens mit einem Domain-Block definiert sein.
Beispiel:
perl fts_index.pl -bi mandant1 mandant2 mandant3
Das Index-Skript liest die Konfigurationsdatei ein und erstellt für alle spezifizierten Domains, die definiert sind, einen Index. Wenn Sie beim Aufruf keine Domain angeben, wird die Standard-Domain default
verwendet. Liegt im Verzeichnis site/config
keine Konfigurationsdatei vor, setzt das Skript für alle Parameter automatisch die Default-Werte ein.
Der so erzeugte Index liegt zunächst in einem temporären Verzeichnis und ist erst verfügbar, wenn Sie das Skript zur Indexerstellung mit der Option -i
bzw. --install
ausführen.
Indexerstellung und -installation können Sie auch in einem Arbeitsgang durchführen. Bei umfangreichen Datenbeständen kann die Indizierung erhebliche Zeit beanspruchen. Es ist empfehlenswert, den Index in regelmäßigen Abständen neu zu erstellen. Dies kann zeitgesteuert und automatisiert erfolgen, beispielsweise durch einen Cron-Job.
Erstellung von Suchskripten#
Wenn eine Suchanfrage gestartet wird, liest das Suchskript die Einstellungen für das Durchsuchen des Index der zu durchsuchenden Domain aus der Datei fts.conf
im Verzeichnis site/config
ein. Wenn Sie mehrere Domains konfiguriert haben, brauchen Sie daher für jede Domain ein eigenes Suchskript.
Um ein domainspezifisches Suchskript zu erstellen, genügen wenige Schritte:
Wichtig
Das Installationsskript für Hotfixe benennt möglicherweise die im System vorhandene Version der Datei cgi-bin/fts\_search.pl
um und installiert die Ursprungsversion des Skripts. Daher sollten Sie domainspezifische Anpassungen immer in einer Kopie der Datei vornehmen und diese statt der Originaldatei für den Einsatz der Volltextsuche verwenden.
- Erstellen Sie eine Kopie des Skripts
cgi-bin/fts_search.pl.
-
Öffnen Sie die Datei in einem Editor und suchen Sie die folgende Zeile (Zeile 28):
my $domain = 'default';
-
Ändern Sie die Zeile wie folgt:
my $domain = '[Domain_Name]';
Beispiel:
my $domain = 'mandant1';
-
Speichern Sie die Datei.
Ergebnis: Bei Suchanfragen für diese Domain verweisen Sie nun auf diese bearbeitete Kopie des Suchskipts.
Stoppwortlisten anlegen und verwalten#
Um eine Stoppwortliste für die imperia-Volltextsuche einzurichten, sind folgende Schritte notwendig:
1. Stoppwortlisten-Datei erstellen
Sie benötigen zunächst eine gewöhnliche ASCII-Textdatei mit beliebiger Dateieendung, die Sie an beliebiger Stelle in der imperia-Verzeichnisstruktur ablegen.
Tipp
Es ist auch möglich, diese Datei als mit imperia pflegbares Dokument zu verwalten. Beachten Sie in diesem Fall aber, dass die so erzeugte Textdatei im Bereich liegt, der über den Webserver erreichbar ist. Eventuell ist es also notwendig, den Zugriff auf diese Datei einzuschränken, beispielsweise durch einen Passwortschutz.
In der Datei sind die einzelnen Stoppwörter jeweils in einer eigenen Zeile aufzuführen wie das folgende Beispiel zeigt:
ist und im in an am bei beim ein eine dem der die das
Neben den eigentlichen Stoppwörtern benötigen Sie in der Datei keinerlei weitere Anweisungen. Einmal angelegte Stoppwortlisten können Sie jederzeit ersetzen, ändern oder entfernen.
2. Stoppwortlisten-Eintrag generieren
Eine Stoppwortlisten-Datei kann die imperia-Volltextsuche noch nicht direkt verarbeiten. Um eine Stoppwortlisten-Datei für das System verfügbar zu machen, rufen Sie das Skript site/bin/fts_blacklist.pl
wie folgt auf:
perl fts_blacklist.pl -b BEZEICHNER pfad/zur/stopwortliste.end
Den mit dem Parameter -b
spezifizierten BEZEICHNER
verwenden Sie später in der Konfiguration der Indexerstellung und der Suche zur eigentlichen Aktivierung der Stoppwortliste. Pfadangaben ohne führenden Slash interpretiert das System relativ zum Skript, mit führendem Slash absolut. Das Skript erzeugt in einem eigenen Verzeichnis parallel zum Suchindex eine mit dem BEZEICHNER
benannte Datei, die mit dem Perl-Modul Storable serialisiert und somit für die Volltextsuche verarbeitbar ist.
Weitere Skriptparameter dienen zur Verwaltung bestehender Stoppwortlisten. Die folgende Tabelle listet alle verfügbaren Parameter auf und erklärt sie.
Um die verfügbaren Parameter-Aufrufe zu sehen, rufen Sie das Skript mit der Option '-h, --help' in der Kommandozeile auf.
Beispiel:
-
perl fts_blacklist.pl -b mylist ../config/mylist.conf
Dieser Aufruf erzeugt aus der untersite/config
liegenden Stoppwortlisten-Dateimylist.conf
einen Stoppwortlisten-Eintrag, der unter dem Bezeichnermylist
verfügbar ist. Einen etwaigen bereits bestehenden Stoppwortlisten-Eintrag ersetzt diese Skriptausführung durch den neuen Eintrag. -
perl fts_blacklist.pl -a -b mylist /home/wwwrun/imperia/stopwords/extra_words.txt
Dieser Aufruf hängt die Wörter aus der unter/home/wwwrun/imperia/stopwords/
liegenden Stoppwortlisten-Dateiextra_words.txt
an den Stoppwortlisten-Eintrag an, der unter dem Bezeichnermylist
verfügbar ist. Sollte noch kein Eintrag mit diesem Namen vorhanden sein, legt imperia ihn an. -
perl fts_blacklist.pl -d -b mylist
Dieser Aufruf löscht den Stoppwortlisten-Eintrag, der unter dem Bezeichnermylist
verfügbar ist.
3. Stoppwortlisten in die Konfiguration einbinden
Stoppwortlisten aktivieren Sie, indem Sie die Stoppwortlisten-Einträge in den Konfigurationsdateien für Indexerstellung (site/config/index.conf
) und Suche (site/config/fts.conf
) angeben. Hierfür nutzen Sie in beiden Konfigurationsdateien die Direktive blacklist
, siehe Basis-Tags und -Direktiven.
Syntax:
blacklist = BEZEICHNER
- Der
BEZEICHNER
ist hierbei der Name des Stoppwortlisten-Eintrags, den Sie beim Aufruf vonsite/bin/fts_blacklist.pl
mit dem Parameter-b
verwendet haben. - Verwenden Sie die Direktive mehrmals, wenn Sie mehrere Stoppwortlisten einsetzen wollen.
- Wenn Sie mehrere Volltextsuchen-Domains definiert haben, sind Stoppwortlisten so definierbar, dass sie für alle oder nur für einzelne Domains gelten.
- Setzen Sie die Direktive
blacklist
innerhalb eines Domainblocks, damit die Stoppwortliste nur für diese Domain gilt, und außerhalb der Domainblöcke in der Konfigurationsdatei, damit die Stoppwortliste für alle Domains gültig ist.
Wichtig
Wenn Sie Stoppwortlisten in die Konfiguration der Indexerstellung einbinden, wirken sich diese erst bei der nächsten Indexerstellung aus. Das Gleiche gilt auch bei Änderungen an bereits bestehenden und eingebundenen Stoppwortlisten. Auf Suchanfragen wirken sich Stoppwortlisten jedoch sofort nach ihrer Einbindung in die Suchkonfiguration aus. Die Suche ignoriert die Stoppwörter sofort unabhängig davon, ob sie noch im Index sind oder nicht.
Vorschläge in der Volltextsuche#
In der imperia FTS können nun komfortabel Vorschläge im Suchtemplate angezeigt werden. Wird die Mindestanzahl an Buchstaben eingegeben, üblicherweise 3 oder 4, dann wird per Ajax eine Abfrage an den internen Suchindex erstellt und die ersten n Treffer zur Auswahl vorgschlagen.
Zum Einrichten dieser Funktion müssen Anpassungen in der Konfiguration des Index (index.conf
) und der Suchparameter (fts.conf
) vorgenommen werden. Das Suchtemplate muss erweitert werden und ggf. muss das Ajax-Script für unterschiedliche Domains angepasst werden.
Anpassungen an der index.conf#
In der Datei index.conf
muss ein zusätzlicher Index mit den real existierenden Begriffen angelegt werden. Dazu wird im Abschnitt „options“ einer Domain ein neuer Abschnitt „suggest“ angelegt.
Beispiel:
<suggest>
rule = "^\S{3,}$" # fallback
</suggest>
Die Regel, welche Begriffe in den Index gelangen, wird durch die Anweisung rule
gesteuert.
- Wird der Wert
rule
nicht oder auf den Wert auffalse
gesetzt, so wird kein Index für die Vorschläge angelegt. Somit können keine Vorschläge gemacht werden. - Wird
rule
auftrue
gesetzt, so werden per default alle Worte mit mindestens 3 Zeichen in den Index aufgenommen. Dazu wird intern der reguläre Ausdruck"^\S{3,}$"
verwendet. - Über die Zuweisung eines anderen regulären Ausdrucks kann der Inhalt des Index gesteuert werden.
rule = "^\S{4,}$"
keepbase64imagecontent
keepbase64imagecontent
im index.conf ist eine Option für den HTML-Parser. Wird diese Option auf wahr (1
) gesetzt, wird der HTML-Parser auch base64-Inhalte parsen. In allen anderen Fällen wird base64-Inhalt nie geparst!
keepbase64imagecontent 0
Anpassungen an der fts.conf#
In der Datei fts.conf
muss ein Abschnitt „suggest“ angelgt bzw. bearbeitet werden.
Die grundlegende Konfiguration erfolgt über die folgenden Parameter:
-
minChars
Über den Parameter
minChars
wird die benötigte Anzahl der Zeichen vorgegeben, damit die Suche Vorschläge unterbreitet. Üblicherweise werden Vorschläge erst ab 3 oder 4 Zeichen gemacht. -
frequency
Der Wert
frequency
steuert intern, wie oft das Erreichen derminChars
geprüft werden soll. Der default1
(s), aber auch kleinere Werte sind möglich. -
maxSuggestions
Mit dem Wert
maxSuggestions
wird die Anzahl der Vorschläge gesteuert. -
ajaxURI
Der Wert
ajaxURI
muss gesetzt werden und steuert, welches Script aus dem Suchtemplate aufgerufen wird. Es existiert kein Defaultwert! -
formname
Der
formname
ist der Name des Formulars in dem sich das Suchfeld im Template befinded.
Beispiel:
minChars = 4
frequency = 0.5
maxSuggestions = 10
ajaxURI = "ajax_fts_suggestions.pl"
formname = "search"
Anpassungen am Template#
Jedes Suchfeld im FTS Template kann um die Vorschlags-Funktion erweitert werden. Dazu muss das Formular um die Ajax-Funktionen erweitert werden, wie im folgenden Beispiel:
<form id="search_form" action="/cgi-bin/fts_search.pl" method="post">
//The following code is wrapped for representation purposes
<input id="search-value" type="text" name="search" value="Suchbegriff"
style="width:90%"
onFocus="if (value == 'Suchbegriff') {value =''}" onBlur="if
(value == '') {value = 'Suchbegriff'}" />
<div id="ifts_suggestions_search-value" class="ifts_suggestions"
style="display:none"></div>
<script language="JavaScript" type="text/javascript">
document.observe('dom:loaded', function () {
new Ajax.Autocompleter("search-value", "ifts_suggestions_search-value",
"/cgi-bin/ajax_fts_suggestions.pl", {
paramName: "suggest",
parameters: $($('search-value').form.id).serialize(),
minChars: 3,
frequency: 0.1,
afterUpdateElement: function () {$('search-value').form.submit()}
});
});
</script>
<input type="submit" id="submit" name="submit" value="start"
style="width:auto" />
</form>
In den Resultat-Seiten, die von der Such-Engine ausgewertet werde,n kann man nach dem Such-Feld z.B. „SEARCH“ das Tag
<!--SUGGESTIONS:SEARCH-->
hinzufügen. Dadurch wird der oben beschriebene Javascript Teil automatisch eingefügt.
Das oben abgebildete Beispiel kann wie folgt implementiert werden:
<div class="searchextended" style="display:none;">
<h2>Advanced Search:</h2>
<fieldset>
<label class="left">with all words</label>
<input type="text" id="SEARCH_AND"
name="SEARCH_AND"
value="[!--SEARCH_REQUESTED--]"
size="30" /><br />
<!--SUGGESTIONS:SEARCH_AND-->
<label class="left">with the exact phrase</label>
<input type="text" size="30"
id="SEARCH_PHRASE"
name="SEARCH_PHRASE" /><br />
<!--SUGGESTIONS:SEARCH_PHRASE-->
<label class="left">with any of the words</label>
<input type="text" size="30"
id="SEARCH_OR"
name="SEARCH_OR" /><br />
<!--SUGGESTIONS:SEARCH_OR-->
<label class="left">without words</label>
<input type="text" size="30"
id="SEARCH_NOT"
name="SEARCH_NOT" />
<!--SUGGESTIONS:SEARCH_NOT-->
</fieldset>
</div>
Bitte beachten
Obenstehender Code ist aus Darstellungsgründen umgebrochen.
Wichtig
Die ID des Suchfeldes darf nur aus alphanummerischen Zeichen sowie dem Unterstrich bestehen, wenn Sie die <!--SUGGESTIONS:INPUT\_ID-->
-Variable nutzen wollen.
Damit die grundsätzlichen Ajax-Funktionen zur Verfügung stehen, müssen die Java-Script Bibliotheken im Template inkludiert werden:
<script language="JavaScript" type="text/javascript"
src="/imperia/iwl/jscript/dist/prototype.js"></script>
<script language="JavaScript" type="text/javascript"
src="/imperia/iwl/jscript/dist/effects.js"></script>
<script language="JavaScript" type="text/javascript"
src="/imperia/iwl/jscript/dist/controls.js"></script
Bitte beachten
Damit die Funktionalität auf dem Livesystem gegeben ist, müssen die Dateien auf das Livesystem kopiert werden. Oben stehender Code ist aus Darstellungsgründen umgebrochen.
Anpassungen am Ajax-Script#
Im Standard wird das Script ajax_fts_suggestions.pl
mitgeliefert. Wenn Sie nur die „default“ Domain verwenden, müssen Sie hier keine Anpassungen durchführen.
Wenn Sie unterschiedliche Domains verwenden, sollten Sie das Script ajax_fts_suggestions.pl
z.B. in ein Script ajax_fts_suggestions_MYDOMAIN.pl
für die Domain MYDOMAIN umkopieren und dann die Zeile
my $domain = 'default';
durch
my $domain = 'MYDOMAIN';
ersetzen.