Die eingebaute TYPO3-Suche durchsucht Seitentitel und Inhalt – für kleine Projekte ausreichend, bei Enterprise-Anforderungen ein Flaschenhals. Wenn Sie tausende Seiten, strukturierte Records und Dateien durchsuchbar machen müssen, brauchen Sie eine dedizierte Suchinfrastruktur. Apache Solr liefert genau das – und die Extension EXT:solr integriert diese Leistungsfähigkeit nahtlos in TYPO3.
Dieser Artikel zeigt, wie EXT:solr funktioniert, was seit Solr 9.8 mit dem Modul language-models (Embedding-/Vektor-Pipeline, z. B. knn_text_to_vector) möglich ist und wie Sie Enterprise-Suche in Ihrem Projekt umsetzen.
Inhaltsverzeichnis
Was EXT:solr leistet
Architektur, Komponenten, Dokument-Lebenszyklus
PSR-14 Events
Benutzerdefinierte Felder, eigene Indexer
Produktions-Checkliste
Sicherheit, Performance, Best Practices
Fazit
Zusammenfassung und nächste Schritte
Was EXT:solr leistet
EXT:solr verbindet TYPO3 mit einem Apache Solr Server und stellt eine vollständige Enterprise-Suchinfrastruktur bereit:
Volltextsuche
Seiten, News, Produkte und beliebige Records durchsuchbar – mit sprachspezifischem Stemming und Tokenisierung.
Facettierte Navigation
Filtern nach Kategorie, Datum, Typ oder jedem beliebigen Feld – wie in jedem modernen Online-Shop.
Autocomplete
Suchvorschläge in Echtzeit, noch bevor die Enter-Taste gedrückt wird. Mit Top-Ergebnis-Vorschau.
Architekturübersicht
Das System besteht aus vier zusammenarbeitenden Komponenten:
EXT:solr Architektur: Von der Redaktion bis zum Suchergebnis
So funktioniert der Dokument-Lebenszyklus:
- Redakteur:innen erstellen oder bearbeiten Inhalte in TYPO3.
- Das Monitoring erkennt Änderungen über PSR-14 Events und schreibt einen Eintrag in die Index Queue.
- Ein Scheduler-Task verarbeitet die Queue und sendet Dokumente als JSON an den Solr-Server.
- Das Such-Plugin im Frontend sendet Abfragen an Solr und rendert Ergebnisse über Fluid-Templates.
Komponentenübersicht
| Komponente | Paket | Zweck | Erforderlich? |
|---|---|---|---|
| EXT:solr | apache-solr-for-typo3/solr | Kernintegration: Indexierung, Suche, Backend-Modul | Ja |
| EXT:tika | apache-solr-for-typo3/tika | Textextraktion aus PDFs, DOCX, XLSX (~1.200 Formate) | Nur Dateisuche |
| EXT:solrfal | Funding Extension | FAL-Dateien in Solr indexieren | Nur Dateisuche |
| EXT:solrconsole | Funding Extension | Backend-Konsole für Solr-Verwaltung | Optional |
| EXT:solrdebugtools | Funding Extension | Query-Debugging, Score-Analyse im Frontend | Empfohlen (dev) |
Versionskompatibilität
| EXT:solr | TYPO3 | Apache Solr | Configset | PHP |
|---|---|---|---|---|
| 13.1.x (13.1.1) | 13.4 LTS | 9.10.1 | ext_solr_13_1_0 | 8.2 – 8.4 |
| 12.1 | 12.4 LTS | 9.10.1 | ext_solr_12_1_0 | 8.1 – 8.3 |
Die Zeile 12.4 LTS dient dem Vergleich bei Migrationen von älteren Projekten. Für Neuentwicklung auf TYPO3 v14 zielt die Matrix auf 14.3 + EXT:solr 14.0; auf v13 LTS bleibt 13.4 + EXT:solr 13.1 der passende Stack.
Die 13.1.x-Linie (aktuell u. a. 13.1.1) hält Solr 9.10.1 und schließt u. a. CVE-2025-54988, CVE-2026-22444 und CVE-2026-22022 – vor dem Livegang immer Release Notes und die Version Matrix prüfen. EXT:tika 13.1 setzt Apache Tika Server 3.2.3+ voraus und adressiert u. a. CVE-2025-54988 und CVE-2025-66516.
Die Version Matrix nennt TYPO3 14.3 mit EXT:solr 14.0, Apache Solr 9.10.1 und dem Configset ext_solr_14_0_0. Solange auf Packagist noch keine stabilen 14.0.x‑Tags veröffentlicht sind, nutzen Teams häufig Composer-Zweige wie dev-main / 14.0.x-dev (oft mit minimum-stability: dev und prefer-stable: true):
Vor jedem Upgrade den aktuellen Stand auf Packagist und bei GitHub Releases prüfen und auf ^14.0 wechseln, sobald stabile Releases existieren. Ältere Integrations-Branches aus Diskussionen sind gegenüber veröffentlichter Matrix und Releases nachrangig .
Setup in unter 10 Minuten
Installation via Composer
Lokale Entwicklung mit DDEV
Der schnellste Weg zur lokalen Solr-Instanz ist das offizielle DDEV-Addon :
Das Addon dokumentiert ein Standard-SOLR_BASE_IMAGE (z. B. solr:9.8). Die Version Matrix empfiehlt für TYPO3 13.4/14.x Solr 9.10.1. Für Parität mit Produktion: z. B. ddev dotenv set .ddev/.env.solr --solr-base-image="solr:9.10.1" und Solr-Service neu aufsetzen (siehe ddev-typo3-solr-README).
Konfigurieren Sie Cores in .ddev/typo3-solr/config.yaml:
Und in .ddev/config.yaml die Cores nach dem Start anlegen:
| Befehl | Beschreibung |
|---|---|
| ddev solrctl apply | Cores aus Konfiguration erstellen |
| ddev solrctl wipe | Alle Cores löschen |
| ddev launch :8984 | Solr Admin UI im Browser öffnen |
| ddev logs -s typo3-solr | Solr-Logdateien anzeigen |
Docker-Produktion
Für die Produktion liefert das offizielle Docker-Image vorkonfigurierte Cores für alle Sprachen:
Managed Hosting
Zwei Optionen für alle, die keinen eigenen Solr-Server betreiben möchten:
hosted-solr.com
Managed Solr von dkd – den Maintainern von EXT:solr. Vorkonfigurierte Cores ab ca. 10 EUR/Monat (Plan „Small“, Stand Preisseite; zzgl. MwSt.-Hinweis laut Anbieter).
Mittwald
Managed Container-Plattform mit Solr-Service. Zugriff via mw container port-forward --port 8983.
TYPO3 Site-Konfiguration
Fügen Sie die Verbindung in config/sites/<identifier>/config.yaml hinzu:
Solr-Zugangsdaten niemals hartcodieren. Verwenden Sie helhum/dotenv-connector für umgebungsspezifische .env-Dateien mit SOLR_HOST, SOLR_PORT und SOLR_CORE_*. Committen Sie .env.example, halten Sie .env gitignored.
Index Queue: Das Herzstück
Die Index Queue ist der zentrale Mechanismus, über den TYPO3-Inhalte in Solr gelangen.
Dokument-Lebenszyklus: Von der Redaktion bis zum Suchergebnis
Seiten indexieren
Seiten werden out of the box indexiert – keine zusätzliche Konfiguration nötig. Der Page-Indexer rendert die Seite und sendet den Inhalt an Solr.
Beliebige Records indexieren
Jede TYPO3-Tabelle kann über TypoScript in den Index aufgenommen werden. Hier ein Beispiel für EXT:news:
Die drei Content-Objekte im Überblick:
| Content-Objekt | Zweck |
|---|---|
| SOLR_CONTENT | Entfernt HTML/RTE-Tags aus Feldinhalten |
| SOLR_RELATION | Löst Relationen auf (Kategorien, Tags), unterstützt multiValue = 1 |
| SOLR_MULTIVALUE | Teilt kommaseparierte Felder in mehrere Werte auf |
Dynamische Felder
EXT:solr verwendet dynamische Feld-Suffixe, um eigene Felder ohne Schema-Änderung hinzuzufügen :
| Suffix | Typ | Multi? | Beispiel |
|---|---|---|---|
| _stringS | String (nicht analysiert) | Nein | category_stringS |
| _stringM | String (nicht analysiert) | Ja | tags_stringM |
| _textS | Text (analysiert) | Nein | description_textS |
| _intS | Integer | Nein | year_intS |
| _dateS | Datum | Nein | published_dateS |
| _floatS | Float | Nein | price_floatS |
| _boolS | Boolean | Nein | active_boolS |
Monitoring
EXT:solr erkennt Record-Änderungen über PSR-14 Events. Zwei Modi stehen zur Verfügung:
- Sofort (Standard): Änderungen werden direkt während der DataHandler-Operation verarbeitet.
- Verzögert: Änderungen werden in der Event-Queue (
tx_solr_eventqueue_item) gesammelt und von einem separaten Scheduler-Task verarbeitet.
Konfiguration über Extension Settings → monitoringType.
Site-Hash-Strategie
Unter Admin Tools → Einstellungen → Erweiterungskonfiguration → solr steuert siteHashStrategy, wie der Site-Hash in Solr-Dokumenten gebildet wird. Für neue TYPO3-13.4+-Projekte ist siteHashStrategy = 1 (Site-Identifier) empfohlen; in älteren Defaults kann noch die domainbasierte Variante (0, deprecated) aktiv sein. Strategiewechsel erfordert ein vollständiges Neuindexieren.
Suche konfigurieren
Basiskonfiguration
Facettierte Navigation
Facetten verwandeln die Suche in ein interaktives Filtererlebnis :
Verfügbare Facetten-Typen: options (Standard), queryGroup, hierarchy, dateRange, numericRange.
Autocomplete / Suggest
Die eingebaute Suggest-Funktion nutzt standardmäßig jQuery. Für eine moderne, jQuery-freie Implementierung erlaubt EXT:solr die Integration eines eigenen Vanilla-JS-Frontends.
Highlighting & Rechtschreibprüfung
Vektor- und Hybridsuche mit Solr 9.8+
Seit Apache Solr 9.8 (Januar 2025) enthält Solr das Solr-Modul language-models (Text-to-Vector, Embedding-Pipeline; in älteren Texten oft „LLM-Modul“) , das semantische Suche auf dem Solr-Server ermöglicht – ohne separate Vektor-Datenbank, ohne zusätzliche Middleware. Klassen und Konfiguration folgen den Paketen org.apache.solr.languagemodels.* / solr.languagemodels.* (je nach Solr-Version bitte die Reference Guide prüfen).
Das LLM-Modul (Solr: „language-models“ / Text-to-Vector)
Die Pipeline löst das Vocabulary-Mismatch-Problem der klassischen Keyword-Suche: Nutzer:innen formulieren ihre Frage anders als der Inhalt es tut. Texte und Suchanfragen werden in Vektoren umgewandelt, die semantische Ähnlichkeit abbilden.
Vektorsuche: Texte und Anfragen werden in Vektoren umgewandelt und per KNN verglichen
Unterstützte Embedding-Provider (via LangChain4j ):
| Anbieter | Beliebtes Modell | Dimensionen |
|---|---|---|
| OpenAI | text-embedding-3-small | 1536 |
| Mistral AI | mistral-embed | 1024 |
| Cohere | embed-v3 | 1024 |
| HuggingFace | Diverse Open-Source-Modelle | variabel |
Hybridsuche: BM25 + Vektor
Die stärkste Konfiguration kombiniert klassisches BM25-Ranking mit Vektor-Re-Ranking:
So profitieren Sie von exakten Keyword-Treffern und semantischer Ähnlichkeit.
Anwendungsfälle
| Anwendungsfall | Ansatz |
|---|---|
| Intelligente Seitensuche | knn_text_to_vector findet semantisch ähnliche Inhalte |
| Ähnliche Artikel | K-Nearest Neighbours auf dem Vektor eines Dokuments |
| Mehrsprachige Brücke | Embeddings matchen sprachübergreifend |
| FAQ-Matching | Nutzer:innen-Fragen zu FAQ-Antworten trotz unterschiedlicher Formulierung zuordnen |
| RAG-Retrieval | Solr als Retrieval-Schicht für LLM-gestützte Q&A-Systeme |
Die Vektorisierung läuft typischerweise über externe Embedding-APIs (Konfiguration im Solr-Modell-Store) – nicht vollständig „lokal“ ohne eigenes Modell. Berücksichtigen Sie API-Kosten, prüfen Sie Datenschutzanforderungen und planen Sie Fallbacks für API-Ausfälle ein.
Native End-to-End-Unterstützung (Index Queue → Vektorfelder → Fluid) in EXT:solr entwickelt sich weiter. Für eigene Felder eignen sich PSR-14-Listener (z. B. BeforeDocumentsAreIndexedEvent) plus eigener Embedding-Service – siehe TYPO3-Solr/ext-solr.
Troubleshooting in 6 Schritten
Wenn die Suche nicht funktioniert, liegt das Problem an einer von vier Stellen: Verbindung, Indexierung, Solr-Core oder Frontend. Gehen Sie systematisch vor.
Diagnose-Flowchart
Systematisches Troubleshooting: Von der Verbindung bis zum Frontend
Häufige Fehler und Lösungen
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| "Suche nicht verfügbar" | Solr-Verbindung falsch konfiguriert | Site-Konfiguration prüfen, Verbindung initialisieren |
| Keine Ergebnisse | Site-Hash-Mismatch | siteHashStrategy prüfen, neu indexieren |
| Leere Index Queue | TypoScript nicht geladen | Static Templates auf Root-Seite einbinden |
| Queue-Items werden nicht indexiert | Scheduler-Task fehlt | "Index Queue Worker"-Task erstellen |
| Facetten nicht sichtbar | faceting = 0 oder leeres Feld | Faceting aktivieren, Feldwerte prüfen |
| Docker: Permission denied | Volume-Ownership falsch | UID 8983 muss /var/solr besitzen |
| Jar-Ladefehler (Solr 9.8+) | CVE-2025-24814 Migration nötig | typo3lib/ in Server-Root verschieben oder Docker 13.0.1+ nutzen |
Logging aktivieren
Für tiefere Diagnose aktivieren Sie TypoScript-Logging (nur dev/staging):
Und konfigurieren die Log-Datei in config/system/additional.php:
Logging erzeugt erhebliches Datenvolumen und beeinträchtigt die Performance. Entfernen Sie plugin.tx_solr.logging und die writerConfiguration aus additional.php vor dem Go-Live.
PSR-14 Events für eigene Extensions
EXT:solr feuert an zentralen Stellen PSR-14 Events , die Sie für eigene Logik nutzen können.
Benutzerdefinierte Felder zu Dokumenten hinzufügen
Wichtige Events im Überblick
TYPO3 v14: Änderungen für Entwickler
Wenn Sie EXT:solr auf TYPO3 v14 / Fluid 5.0 bringen, sind laut SKILL und Upstream u. a. diese Punkte relevant:
- Fluid 5.0: Such-Templates und Facetten-Partials streng typisierte ViewHelper-Argumente, keine underscore-präfixierten Template-Variablen – eigene Overrides prüfen.
TypoScriptFrontendController: Custom-Indexer oder Plugins, die$GLOBALS['TSFE']nutzen, müssen auf Request-Attribute / die neue Frontend-Simulation migrieren.- TCA:
ctrl.searchFieldsentfällt in v14 zugunsten von'searchable' => truepro Spalte (betrifft v. a. Backend-Suche, nicht die Index-Queue-Feldmappings).
Produktions-Checkliste
ext_solr_13_1_0)SOLR_JAVA_MEM=-Xms512m -Xmx1g)core_de, core_en)Fazit
EXT:solr hebt die TYPO3-Suche auf Enterprise-Niveau – mit Facetten, Autocomplete, Highlighting und seit Solr 9.8 auch mit semantischer Vektorsuche. Die Extension ist ausgereift, wird aktiv von dkd Internet Service gepflegt und ist lokal mit DDEV in wenigen Minuten einsatzbereit.
Die drei zentralen Erkenntnisse:
- EXT:solr indexiert alles – Seiten, News, Produkte, Dateien. Die Index Queue und PSR-14 Events machen die Integration flexibel und erweiterbar.
- Vektorsuche auf dem Solr-Server – Das Modul language-models (Text-to-Vector, z. B.
knn_text_to_vector) in Solr 9.8+ bringt semantische Suche auf den Solr-Kern; EXT:solr-Integration für alle Schritte prüfen Sie im aktuellen Release. - Das Setup ist unkompliziert – DDEV-Addon installieren, Cores konfigurieren, Scheduler-Task erstellen. Fertig.
Wenn Sie entscheiden, ob die Standardsuche für Ihr Projekt reicht oder eine dedizierte Suchinfrastruktur nötig ist: Sobald Sie mehr als einige hundert Seiten haben, strukturierte Daten durchsuchbar machen oder Facetten benötigen – führt kein Weg an Solr vorbei.
TYPO3 Solr Skill
Detaillierte Referenz für EXT:solr — Index Queue, Suche, Debugging, language-models/Vektorsuche. Hauptdatei SKILL.md; Ergänzungen SKILL-FRONTEND.md (z. B. Suggest ohne jQuery) und SKILL-SOLRFAL.md (Datei-Index). Open-Source Agent Skill für Claude, Cursor und VS Code.