Für die Suche kommt die TYPO3-Extension „solr“, die einen Apache Solr-Suchindex nutzt, zur Anwendung. Sowohl die Extension als auch der Solr-Server sind extrem flexibel und gut konfigurierbar.
Folgende Elemente werden indexiert:
Für die Eingrenzung der Suche werden Facets verwenden. Die Facetten stehen bereits im Suchformular zur Verfügung:
Die Lehrveranstaltungssuche ist eine externe Suche. Sie steht aber bereits in den Facets zur Verfügung. Per JavaScript wird vor dem Abschicken der Suche geprüft, ob die entsprechende Facet angewählt wurde. Falls dem so ist, wird der Query String an die Lehrveranstaltungssuche in einem neuen Tab übergeben.
Berechtigung: Web-Administrator
Seiten, die nicht in der Suche erscheinen sollen, können für die Suche in den Seiteneigenschaften deaktiviert werden. Die Funktion heisst Bei Suchmaschinen und Seitensuche indexieren/Index in search engines and site searches. Das Deaktivieren der Checkbox bedeutet auch, dass diese Seiten gleichzeitig auch für externe Suchmaschinen wie z.B. Google als „nicht zu indexierende Seiten“ markiert werden:
Die Bedeutung der weiteren Felder ist:
Um für mehrere Seiten gleichzeitig, rekursiv die Checkbox Dieser Seite folgen/Follow this page zu setzen, gibt es im Hilfsmenü einer Seite ein Modul. Das Hilfsmodul kann durck Rechtsklick auf das Seiten-Icon aufgerufen werden:
Siehe Anleitung
Da Nine keinen Solr-Server in Version 4.8 bieten kann, wurde der Solr-Server mit dem Benutzer www-data selber installiert und muss auch selber betrieben werden. Insofern ist bei technischen Problemen von Nine auch keine Unterstützung zu erwarten.
Da die mit der TYPO3-Solr-Extension mitgelieferten Installations-Skripts auf Administrator-Rechte überprüfen, mussten sie angepasst werden. Das komplette Setup ist in Github versioniert: https://github.com/phluzern/unilu-solr-tomcat (Master-Branch: Konfiguration für Unilu/phlu-eduweb2. Es gibt noch einen Branch phlu.ch für PHLU/phlu-eduweb3.)
Tomcat läuft auf Port 8080. Dieser Port ist von aussen nicht zugänglich, was aus Sicherheitsgründen auch vorteilhaft ist. Als Nebeneffekt ist aber die Solr-Weboberfläche nicht zugänglich. Dieses Problem kann umgangen werden, indem man einen SSH-Tunnel zum Server aufbaut und diesen im Browser (am besten in einem Zweitbrowser) als Proxy nutzt. Der SSH-Tunnel ist im Prinzip eine normale Verbindung zum Server mit einer Port-Forwarding-Konfiguration:
Diese Verbindung wird dann mit den normalen SSH-Zugangsdaten geöffnet.
Nun muss der Browser konfiguriert werden, diese Verbindung (im Beispiel auf Port 2048) zu nutzen. Konfiguration in Firefox:
Sobald diese Konfiguration aktiv ist, kann die Solr-Weboberfläche unter http://localhost:8080/solr geöffnet werden.
Wichtiger Hinweis: Hier gemachte Änderungen beziehen sich nur auf die aktuelle Ausführung von Tomcat/Solr. Bei einem Neustart gehen die Änderungen verloren. Permanente Konfigurationsänderungen müssen in den Konfigurations-Dateien vorgenommen werden.
Wurde der Solr-Server beendet, z.B. aufgrund eines „killall java“ (s.o.), muss er neu gestartet werden. Für Shutdown und Startup gibt es Skripts:
~/solr-tomcat/tomcat/bin/shutdown.sh ~/solr-tomcat/tomcat/bin/startup.sh
Dass Solr wieder geht, kann anschliessend im Backend verifiziert werden:
Der Solr-Server wird bei jedem System-Neustart automatisch gestartet. Dafür sorgt folgender Eintrag in der Crontab:
# Start Solr/Tomcat on Reboot @reboot /home/www-data/solr-tomcat/tomcat/bin/startup.sh
Die mitgelieferte Logging-Konfiguration führt zu sehr vielen und grossen Logs, da für den produktiven Betrieb nicht relevante Informationen (Log-Level INFO) geloggt werden. Der Log-Level wurde daher global auf WARN gestellt und das TransactionLog, welches für jede neu indexierte Adresse ein neues Log-File erstellte, ganz deaktiviert.
Die Logging-Konfiguration ist zu finden unter
/home/www-data/solr-tomcat/tomcat/lib/log4j.properties
Tika extrahiert Inhalt und Metadaten aus allen Dokumenten, die auf der Website verknüpft sind. Offenbar kann Tika leaken; vermutlich, wenn es ein besonders grosses File oder ein fehlerhaftes File zu lesen versucht. Der Java-Prozess benötigt dann rund 100% CPU über längere Zeit, was den Server langsam macht.
Durch ein „killall java“ werden alle Java-Prozesse beendet, damit allerdings auch der Solr-Server, der neu gestartet werden muss.