Veröffentlichungsdatum: 14. November 2011
Änderungsdatum: 24. August 2020
weblication cms suchindex volltextsuche search wsearch indexierung indizierung indizieren event ereignis
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.
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.
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).
// 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']);
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:
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.:
// 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']);
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).
... <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> ...
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.