Als TYPO3 Association Supporting Member unterstützen wir aktiv die Weiterentwicklung des Web Content Management Systems. Das Ergebnis sind leistungsstarke Extensions wie MKSEARCH, welche hier exemplarisch vorgestellt wird.
mksearch wurde entwickelt, um Suchmaschinen wie Apache Solr in TYPO3-Portale zu integrieren. Die Extension zeichnet sich durch einen modularen Aufbau und einfache Erweiterbarkeit aus – insbesondere im Hinblick auf die Auswahl von Suchtechnologien und die Unterstützung für Dritt-Extensions. Die Entwicklung von mksearch wurde im Rahmen eines Kundenprojekts durch unsere Überlegung angestoßen, Apache Solr an das TYPO3-System anzubinden, um eine leistungsfähige Suchfunktion zu realisieren. Im Ergebnis wurde die Idee geboren, den Indizierungsprozess, d.h. die Sammlung der für die Suche relevanten Daten, unabhängig von der jeweiligen Suchtechnologie zu implementieren. Der Vorteil einer solchen Lösung liegt auf der Hand: Eine einmalige Implementierung der Indizierung würde genügen, um verschiedene Suchmaschinen zu unterstützen. Als Produkt dieser Idee wurde mksearch entwickelt, eine TYPO3-Extension, mit der eine solche Abstraktion der Suchmaschinen in einem allgemeinen Such-Layer gelingt.
Aktuell unterstützt mksearch die Suchtechnologien Apache Solr und Zend Lucene und bietet damit zugleich die Auswahl zwischen einer reinen PHP-Lösung, die auch schon in kleineren Hosting-Paketen verfügbar ist und einer Enterprise-Suche für höhere Anforderungen.
Im Unterschied zu indexed_search arbeitet mksearch komplett auf Datenebene. Es werden also keine Webseiten geparst und Inhalte extrahiert, stattdessen werden in mksearch sogenannte Indexer-Objekte angemeldet, die die relevanten Daten direkt aus der Datenbank lesen. Es steht den Indexern aber grundsätzlich frei, woher sie ihre Daten beziehen, sodass auch sehr spezielle Projektanforderungen leicht umgesetzt werden können.
Darüber hinaus überzeugt mksearch durch die Unterstützung mehrerer Cores, die Instanzen von Suchmaschinen. So können im Backend beliebig viele Cores registriert und individuell festgelegt werden, welche Daten zu welchem Core gehören. Dabei spielt es keine Rolle, welche Suchmaschine hinter dem jeweiligen Core liegt, sodass auch ein Mischbetrieb von Solr und Lucene denkbar ist. Es existiert eine Reihe von Anwendungsfällen für den Einsatz mehrerer Cores. Beispielsweise kann über diesen Ansatz Mehrsprachigkeit abgebildet oder ein Core zur Ablage sensibler bzw. nicht für die Öffentlichkeit bestimmter Daten genutzt werden. Auch an Problemfälle ist gedacht. So nutzt mksearch die Extension TYPO3 Developer Logs. Nach Installation der Extension devlog stehen im Backend detaillierte Daten über den Indizierungsprozess zur Verfügung.
Bei der Ausgabe der Daten im Frontend haben wir bewusst auf einen generischen Zwischenlayer verzichtet. Nur so ist es möglich, alle Features einer Suchmaschine komplett zu unterstützen. Facettierte Suche ist ein Feature, welches aktuell nur Solr bietet. Daher wurde diese Funktionalität auch speziell in das Solr-Plugin integriert. Bei der Ausgabe der Suchtreffer verfolgen die Plugins für Lucene und Solr allerdings dieselbe Strategie: die einzelnen Suchtreffer beruhen jeweils auf einem bestimmten Datentyp wie „News“, „PDF“ oder „FAQ“. Für die Ausgabe in der Ergebnisliste kann für jeden Treffertyp ein individuelles HTML-Template konfiguriert werden. Auf diese Weise können die Trefferlisten optimal an die gefundenen Ergebnisse anpasst werden.
Für Treffer aus der Tabelle tt_address hat das Template bspw. folgendes Aussehen:
<!-- ###TT_ADDRESS_ADDRESS### START --> <div class="address"> ###ITEM_ADDRESS_S###<br /> ###ITEM_ZIP_S### ###ITEM_CITY_S###<br /> <br /> ###ITEM_WWW_S###<br /> ###ITEM_EMAIL_S### <div class="searchResultLink"> ###ITEM_SHOWLINK######LABEL_SEARCH_READMORE######ITEM_SHOWLINK### </div> </div> <!-- ###TT_ADDRESS_ADDRESS### END -->
Für die künftige Entwicklung ist angedacht, neben Apache Solr und Zend Lucene auch Suchbackends wie ElasticSearch oder Fact-Finder zu integrieren. Darüber hinaus ist es unser Anliegen, die Integration einzelner Features für Solr weiter zu vereinfachen und mksearch an die Solr Version 4 anzupassen.
Für alle Interessierten und Wissbegierigen steht mksearch im TER zum Download zur Verfügung.
Wir freuen uns auf Deine Meinung!