Automatische Indizierung der Volltextsuche

Dieser Artikel beschreibt die Einstellungen für ein automatisches Indizieren der Suche über Cronjob.

Über folgendes Beispielskript können Sie die Volltextsuche mit einem Cronjob indizieren. Mit der Option frequency = "daily" wird die Indizierung nur zwischen 0:00 Uhr und 1:00 Uhr gestartet. Wird das Script nicht innerhalb dieses Zeitraumes gestartet wird die Indexierung gestartet, sobald das Script angestossen wird. (Gilt für alle Frequencies). Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.  Weitere Informationen zu dieser Einstellung finden Sie weiter unten.

Sinnvoll ist ein Intervall von einer Minute bei einer Skriptlaufzeit von 30 bis 50 Sekunden. Ist die Indizierung dann beispielsweise um 2:00 Uhr durchgeführt, wird das Skript zwar jede Minute gestartet, eine Indizierung jedoch erst wieder am nächsten Tag um 0:00 Uhr durchgeführt.

Hinweis:
Beachten Sie bitte, dass das Intervall nicht kürzer als die Skriptlaufzeit sein darf, da Skripte sonst mehrfach ausgeführt werden können. Zudem gelten auch für die Cronjob gesteuerte Suchindexierung die Einstellungen zu "Timeout" und "Neu laden nach" in den Sucheeinstellungen.

Tipp:
Mit den Cron-Skripten können Sie ab CMS-Version 15 diverse Skripte wie z.B. für den Suchindex komfortabel verwalten und so über einen Cronjob ansprechen.

Beispiel: Ausführen der Suchindexierung mithilfe eines cronjobs

//Folgende Anweisung wurde aufgrund des direkten Aufrufes über das Perl-Script auskommentiert.
//$_SERVER[DOCUMENT_ROOT] = "/homepages/IHRPFAD";
// ggf. HTTP_HOST setzen, falls über Konsole/Cron nicht verfügbar:
//$_SERVER['HTTP_HOST'] = "IHRE-Domain.TLD"; // z.B. "www.domain.dd"

require_once($_SERVER['DOCUMENT_ROOT']."/weblication/grid.php");

$pathSearch = "/de/weblication/project/searchs/default.wSearchBot.php";

//Objekt erstellen
$wSearch = new wSearch($pathSearch);
$options = array();
$options['frequency'] = 'daily';
print
$wSearch->cronjob($options);

// Das komplette Skript und Informationen finden Sie im Artikel
// der Framework-Funktion "wSearch->cronjob" nachfolgend beschrieben!

Beachten Sie bitte, dass sowohl der PHP-Pfad in der ersten Zeile als auch die DOCUMENT_ROOT angepasst werden müssen. Diese Pfade können Sie über die Funktion phpInfo() ermitteln.
Der Cronjob kann ab Version 003.022.000.000 auch über die Konsole gestartet werden.

Informationen zur Einstellung "frequency":

daily:
$options['frequency'] = "daily";

Die Indizierung wird nur zwischen 0:00 Uhr und 1:00 Uhr gestartet. Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.


Uhrzeit-Angabe:
$options['frequency'] = "12:15";

(Verfügbar ab Version 003.022.000.000)

Die Indizierung wird täglich um bzw. ab 12:15 Uhr gestartet (Uhrzeit kann individuell angegeben werden, 12:15 stellt ein Beispiel dar, möglich ist auch nur die Stundenangabe, z.B. "12"). Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.


interval:
$options['interval'] = "Sat|Sun";

(Verfügbar ab Version 003.022.000.000)
Diese Option kann zusätzlich zur frequency-Option gesetzt werden.

Die Indizierung wird an dem Wochentag bzw. an den Wochentagen gestartet, die angeben sind

z.B.:
'Mon|Tue|Wed|Thu|Fri|Sat|Sun' -> Ausführung von Montag bis Sonntag
'Mon|Fri' -> Ausführung Montag und Freitag

Die Indizierung wird nur zwischen 0:00 Uhr und 1:00 Uhr gestartet. Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.


now:
$options['frequency'] = "now";

Mit der Option frequency = "now", ist es möglich den Cronjob zu testen. Bei dieser Einstellung wird die Indexierung zu jedem Zeitpunkt aktiviert. Ist die Indexierung abgeschlossen, wird neu gestartet.

Diese Einstellung ist nur für Testzwecken sinnvoll und sollte nicht für die Standard-Cronjob-Indexierung verwendet werden.


export:
$options['frequency'] = "export";
Die Option frequency = "export" arbeitet wie die Option "daily". Zusätzlich prüft das Script, ob im Projektverzeichnis eine export.txt abliegt und stösst die Indizierung an, sofern diese Datei älter als 2 Minuten ist. Die Textdatei export.txt wird vom Modul HTML-Export angelegt. Über diese Einstellung kann somit der Index auch nach einem Export auf den aktuellen Stand gebracht werden.

Hinweise

Das Skript für die Suchindexierung läuft nur so lange, bis es an seinen Timeout kommt. Eine Suchindexierung über das Backend hingegen wird immer wieder per Javaskript neu angestossen.
Beim Cronjob ist es so, dass dieser das Skript in Intervallen immer wieder neu anstossen muss, um  die ständige Suchindexierung zu ermöglichen. Einmal angestossen werden sonst nur wenige Seite aufgenommen und beim nächsten Mal (z.B. am nächsten Tag) wieder nur die nächsten (wenigen) Seiten.