Suchindex der Volltextsuche aktuell halten

Was Sie beachten sollten, um immer einen aktuellen Suchindex zu haben.

Eine Volltextsuche lebt von der Aktualität der Ergebnisse. Aus diesem Grund sollten Sie sicherstellen, dass der Suchindex der Weblication® CMS Volltextsuche immer die aktuellsten Daten bereitstellt.

Kompletten Suchindex aktualisieren

Stossen Sie die Suchindexierung entsprechend der Änderungsintervalle der Projektinhalte an. Dies können Sie als berechtigter Benutzer über die Werkzeuge des betreffenden Projektes vornehmen. In den meisten Fällen liegt die verwendete Suche im Inhaltsprojekt (siehe weiterführende Links unten).

Um sicherzustellen, dass die Suchindexierung immer in bestimmten Abständen gestartet werden soll, können Sie dies z.B. über einen Cronjob anstossen (siehe weiterführende Links unten).

Die Aktualisierung des kompletten Suchindex ist z.B. auch dann zu empfehlen, wenn Dokumenten geändert, gelöscht und hinzugefügt werden, welche über eine Liste eingebunden sind.

Suchindex bei Seitenänderungen aktualisieren

Die BASE Projektbasis wird standardmässig so ausgeliefert, dass bei Änderungen von Seiten der Suchindex unmittelbar erweitert bzw. geändert wird. Dies erfolgt über Projektereignisse in der Projektverwaltung des betreffenden Projektes (siehe weiterführende Links unten).

Beispiel: Auszug aus dem Projektereignis "onAfterSaveFile" im Inhaltsprojekt

// Hinweis:
// Die umschliessenden PHP-Tags dürfen im Ereignis nicht gesetzt werden,
// sondern sind nur in diesem Quelltext-Beispiel gesetzt!
$searchID = 'default';
$wSearch = new wSearch($eventData['projectPath'].'/weblication/project/searchs/'.$searchID.'.wSearchBot.php');
$wSearch->addUrlToIndex($eventData['filePath']);

// Um zusätzlich den Projektcache zu löschen:
wCache::clearCacheProject($eventData['projectPath']);

Hinweis zum Ereignis-Beispiel "onAfterSaveFile"

Im Standard werden die Ereignisse für das Hinzufügen zum Suchindex immer über die default-Suche abgelegt. Sollten Sie eine neue Suche anlegen, welche somit eine andere Suche-ID ($searchID) erhält, müssen Sie dies in allen Ereignissen entsprechend anpassen.
Für folgende Ereignisse ist "addUrlToIndex" in der BASE defininiert:

  • onAfterUpload
  • onAfterSaveFile
  • onAfterRenameFile
  • onAfterCopyFile
  • onAfterMoveFile
  • onAfterDeleteFile

Beachten Sie weiterhin, dass die so definierten Ereignis-Aktionen vom jeweiligen Projektverzeichnis ausgehen. Sollten Sie z.B. eine globale Suche für alle Inhalts-/Sprachprojekte nutzen, müssen Sie den Pfad zur entsprechenden Suche manuell anpassen, z.B.:

Beispiel: Auszug aus dem Projektereignis "onAfterSaveFile" im Inhaltsprojekt bei globaler Suche

// Hinweis:
// Die umschliessenden PHP-Tags dürfen im Ereignis nicht gesetzt werden,
// sondern sind nur in diesem Quelltext-Beispiel gesetzt!
$searchID = 'default';
$wSearch = new wSearch('/[IHR-LAYOUT-PROJEKT]/weblication/project/searchs/'.$searchID.'.wSearchBot.php');
$wSearch->addUrlToIndex($eventData['filePath']);

// Um zusätzlich den Projektcache zu löschen:
wCache::clearCacheProject($eventData['projectPath']);

Berücksichtigung von Binärdateien

Sofern Sie für den Suchindex auch Binärdateien (Bilder, Dokumente (Office, PDF, ...), etc.) berücksichtigen wollen, gilt o.g. entsprechend für das Assets-Verzeichnis. Definieren Sie dann auch die Aktionen zu den entsprechenden Ereignissen mit Verweis auf die zu verwendende Suche.

Da - im Gegensatz zu Office- und PDF-Dateien - Bilddateien nicht ohne weiteres inhaltlich durchsucht werden können, ist der ContentType für Bilder standardmässig nicht für die Suchindexierung gesetzt.
Wollen Sie die parallelen Dateiinformationen (wdExtension) von Bildern beim Speichern der Dateieigenschaften (Metadaten) dem Suchindex hinzufügen, setzen Sie den ContentType für Bilder (image) über die verwendete Suchekonfiguration (z.B. default.wSearchBot.php).

Beispiel: Auszug aus der default.wSearchBot.php

...
  <contentTypes>
    <contentType>text/html</contentType>
    <contentType>application/pdf</contentType>
    <contentType>application/msword</contentType>
    <contentType>application/msexcel</contentType>
    <contentType>application/vnd.ms-excel</contentType>
    <contentType>application/mspowerpoint</contentType>
    <contentType>application/vnd.ms-powerpoint</contentType>
    <contentType>image/*</contentType>
  </contentTypes>
...

Weitere Hinweise / Informationen

Die Aktualsierung des Suchindex über Verzeichnisereignisse erfolgt über einen asynchronen HTTP-Aufruf (via GET). Dies muss vom Webserver unterstützt werden (siehe hierzu Abfrage von "Asynchronous Requests" in den Weblication® CMS Serverinformationen).
Sofern ein Webserver dies nicht unterstützt, können Sie im addUrlToIndex-Aufruf über einen Parameter den asynchronen Aufruf auch deaktivieren.