Releases 13.1
Attention
You are on docs for EXT:solr 13.1 version. This file may be outdated if you are on wrong release "branch" version. To get the most recent changelog, please choose on the top left dropdown menu the version you are looking for.
Release 13.1.4
This is a security release for TYPO3 13 LTS.
!!! Recommendation: align existing Solr volumes with the new configset
The ext_solr_13_1_0 configset now sets the Unified Highlighter as default on both the /select and /browse request handlers.
Solr volumes created from older configsets default to the legacy highlighter and remain vulnerable to the FieldExistsQuery HTTP 500 oracle
when queried directly (bypassing EXT:solr).
Run the bundled migration script against the existing configset to align the defaults;
the script is idempotent and writes a solrconfig.xml.Backup-SST-235567 backup next to the modified file:
Docker/SolrServer/docker-entrypoint-initdb.d-as-sudo/fix-SST-235567-2026050810000025-highlighter-defaults.sh
EXT:solr itself enforces the Unified Highlighter unconditionally in PHP, so this configset alignment is a defence-in-depth measure for clients that query Solr directly.
!!! New: TypoScript settings for query-syntax handling
Two new TypoScript settings govern how user input on tx_solr[q] is parsed:
plugin.tx_solr.search.query.userFields— whitelist of fields a Solr field-selector (field:value) may target. By default derived fromquery.queryFields; selectors against other fields are now treated as literal terms and silently miss. Sites that rely on selectors against non-qffields must extend the whitelist via a scalar override or theadd/removesub-keys.plugin.tx_solr.search.query.allowSolrOperatorSyntax— toggle for operator-syntax passthrough. Default1keeps the documented+ - && || ! * ?UX functional; set to0for strict mode (additionally escapes| & ;). Selector, range and grouping characters (: [ ] ( ) { } ^ " ~ \ /) are always escaped regardless.
See tx_solr.search for full reference details.
!!! Breaking: multi-value cObjs now use JSON transport
The SOLR_MULTIVALUE, SOLR_RELATION and SOLR_CLASSIFICATION content objects now return their
multi-value payload as json_encode($array) instead of serialize($array), and the indexer decodes
it with json_decode() instead of unserialize().
Because json_decode() never reconstructs PHP objects, the indexer can no longer be turned into a PHP
object-injection sink by an attacker who can influence an indexed record field.
Third-party content objects that returned serialize($array) for a multi-value Solr field must switch
to json_encode($array); no other change is required.
!!! Security: additionalFilters can no longer preempt the siteHash filter
Request-provided tx_solr[additionalFilters] could register a named siteHash filter that AbstractQueryBuilder::useFilter() refused to overwrite,
so the system siteHash filter added later by AccessComponent was dropped.
In a shared-Solr-core multi-site installation this let an anonymous visitor of one site read public documents of another site sharing the same core (CVE-2026-56094).
EXT:solr now strips the reserved filter names siteHash and access from request-provided additionalFilters before they reach the query,
and applies the system siteHash filter with remove-then-set semantics so request input can no longer preempt it.
Filters that integrators set server-side — TypoScript plugin.tx_solr.search.query.filter., plugin/FlexForm, or PSR-14 events — are unaffected.
Impact for integrators: a frontend request can no longer override siteHash (or access) through tx_solr[additionalFilters].
Cross-site search must be configured server-side via plugin.tx_solr.search.query.allowedSites as documented in tx_solr.search.
!!! Security: detail view enforces site and access restrictions (CVE-2026-56093)
The detail action of the pi_results plugin looked up a document by its documentId without applying the current site's siteHash filter
or the frontend user-group access filter.
An anonymous visitor who knew or guessed a valid documentId could therefore retrieve access-restricted documents through the detail view
— a path that was less restricted than the regular search.
The direct documentId lookup now applies the same siteHash and frontend user-group filters as the normal search path.
A documentId that resolves to no accessible document — unknown, from another site, or restricted for the current visitor
— yields the site's configured 404 page.
The response is uniform, so it cannot be used to probe whether a restricted document exists.
As defence in depth, review whether your templates still expose data-document-id and mask it where the document id should not be publicly visible.
!!! Security: page indexer no longer poisons the rootline cache (CVE-2026-56092)
During a page-indexer sub-request, EXT:solr forced fe_group and extendToSubpages to public
values on every pages record it touched, so the indexer itself would not be blocked by access
restrictions. TYPO3 Core persists that same record into the shared, cross-request rootline cache.
An anonymous visitor could therefore reach a page whose access restriction was only inherited via
extendToSubpages from an ancestor page, for as long as the poisoned cache entry survived —
the restricted area's own root page (which carries its fe_group directly) was not affected.
The indexer no longer forges these fields. The access bypass it needed during indexing was already provided safely, without touching any persisted cache, by EXT:solr's other, unaffected listeners.
All Changes
- [SECURITY] Fix CVE-2026-56096 — close FVH FieldExistsQuery HTTP 500 oracle by @dkd-kaehm in ef90309d0
- [SECURITY] Fix CVE-2026-56096 — edismax uf whitelist by @dkd-kaehm in b4abe5b93
- [SECURITY] Fix CVE-2026-56096 — escape user query syntax by @dkd-kaehm in 446e47152
- !!![SECURITY] Fix CVE-2026-56095 — JSON transport for multi-value cObjs by @dkd-kaehm in 961f809e5
- [SECURITY] Fix CVE-2026-56094 — Prevent request additionalFilters from preempting siteHash filter by @dkd-kaehm in 975066c4c
- [SECURITY] Fix CVE-2026-56093 — Enforce siteHash and access filters in detailAction lookup by @dkd-kaehm in 7cb8f8de9
- [SECURITY] Fix CVE-2026-56092 — Stop rootline cache poisoning via forged fe_group/extendToSubpages by @dkd-kaehm in 589b78f70
Release 13.1.3
This is a maintenance release for TYPO3 13 LTS that removes the
temporary guzzlehttp/ pin introduced in 13.1.2, now
that the upstream fix is available.
All Changes
- [TASK] Remove guzzlehttp/psr7 <2.10.0 pin (upstream fix in guzzlehttp/guzzle 7.10.2) by @dkd-kaehm in #4660
Release 13.1.2
This is a bugfix release for TYPO3 13 LTS, primarily restoring Solr write functionality after a regression introduced by an upstream PSR-7 library update.
All Changes
- [BUGFIX] Pin guzzlehttp/psr7 to <2.10.0 by @dkd-kaehm in #4662
- [BUGFIX] Prevent c:0 variant and content leakage on fe_group-restricted pages by @dkd-kaehm in #4641
- [BUGFIX] facet URL encoding mismatch (spaces) when using urlParameterStyle=assoc by @dkd-hauser in #4626
- [BUGFIX] Correct field name casing for subTitle and navTitle in TypoScript queryFields by @amirarends in #4624
- [TASK] Add PHP 8.5 to version matrix on TYPO3 13 by @dkd-kaehm in #4599
- [TASK] Upgrade GitHub Actions to latest versions by @dkd-kaehm in #4599
- [BUGFIX] GeneralUtility::trimExplode(): Argument #2 ($string) must be of type string, int given by @kitzberger in #4586
- [BUGFIX] Cast result offset to integer by @SaschaNoLe in #4585
- [BUGFIX] Respect plugin TS in RelevanceComponent by @helhum in #4538
- [BUGFIX] Catch InvalidArgumentException for missing site languages in GarbageHandler by @mikelwohlschlegel in #4537
- [BUGFIX] Add headers palette to solr plugin CType TCA definitions by @dkd-kaehm in #4535
- [BUGFIX] CS issues 2026.02.05 by @dkd-kaehm in #4535
Release 13.1.1
This is a security release for TYPO3 13 LTS.
!!! Upgrade to Apache Solr 9.10.1
Apache Solr 9.10.1 fixes several security issues, please upgrade your Apache Solr instance!
- CVE-2025-54988: Apache Solr extraction module vulnerable to XXE attacks via XFA content in PDFs
- CVE-2026-22444: Apache Solr: Insufficient file-access checking in standalone core-creation requests
- CVE-2026-22022: Apache Solr: Unauthorized bypass of certain "predefined permission" rules in the RuleBasedAuthorizationPlugin
All Changes
Release 13.1.0
We are happy to release EXT:solr 13.1.0. The focus of this release has been on AI integrations.
New in this release
Initial vector search
In 13.1 a first step towards vector and AI support has been taken, focusing on enhancing search capabilities through vector search technology. This feature allows more sophisticated and semantically enriched search functionalities by utilizing vector representation of text data.
The current vector integration is very initial and intended as a starting point. We encourage users to test this feature and provide feedback to help improve its further development.
Key Highlights
-
Initial Vector Search Introduction:
- The EXT:solr version 13.1 introduces an initial vector search option as a new search variant.
- Activating this feature automatically generates vectors during indexing and frontend search.
- A connected large language model (LLM) is required for operation, though it is not directly related to EXT:solr.
-
Handling and Limitations of Vector Search:
- Current implementation includes limitations, especially in error handling when required LLMs are not defined, leading to potential impairments in indexing or search.
- Indexing without vector calculation results in documents not being found despite successful index status.
- A missing or unavailable LLM during search attempts can lead to a
Solr, returning an HTTP status 500.Internal Server Error Exception
-
Configuring a Large Language Model:
- To use vector search, a large language model must be connected to encode text into vectors.
- Configuration details are available in the Apache Solr Reference Guide 9.9.
-
Models can be uploaded using a JSON file and cURL command.
Example configuration for the JSON file{ "class": "dev.langchain4j.model.openai.OpenAiEmbeddingModel", "name": "llm", "params": { "baseUrl": "https://api.openai.com/v1", "apiKey": "apiKey-openAI", "modelName": "text-embedding-3-small", "timeout": 5, "logRequests": true, "logResponses": true, "maxRetries": 2 } }Copied! - The number of dimensions for vectors defaults to 768 but can be adjusted via the
SOLR_environment variable.VECTOR_ DIMENSION
Future Developments
- Improved Error Handling: Future versions plan to enhance error handling during vector indexing and search to increase robustness and reliability.
- Additional Query Types: New query types such as vector sorting and vector re-ranking are planned, allowing for more advanced search result manipulation.
- Backend Module for LLM Management: A backend module for managing large language models is anticipated, simplifying maintenance and configuration for developers.
This introduction marks a significant advancement for TYPO3's search capabilities by integrating AI technologies, with ongoing improvements and features planned for future releases.
For more detailed technical implementation and setup instructions, users should refer to the version 13.1 release notes and the associated documentation sections.
Technical insights
As soon as vector search is enabled, EXT:solr will use the connected LLM to generate vectors during indexing and for each search in the frontend. During indexing vectors are generated based on field
vector which is by default filled with the contents of the content field. TypoScript indexing configurations can be used to customize the contents of the vector field, e.g.:
plugin.tx_solr.index.queue.news.fields {
vectorContent = SOLR_CONTENT
vectorContent.cObject = COA
vectorContent.cObject {
10 = TEXT
10 {
field = name
}
15 = TEXT
15 {
field = bodytext
}
}
}
During indexing vectors will be created and stored in field vector.
Tip
vector and vector are not stored and thus not included in the search results, but for debugging purposes, it may be helpful to set to stored="true" to verify the stored content.
!!! Upgrade to Apache Solr 9.10.0+
This release requires Apache Solr at least v9.10.0.
!!! Allow nested TypoScript on multiValue fields
This breaking change allows nested TypoScript index configurations for multi-value/array fields like:
plugin.tx_solr.index.queue.pages.fields.someDoktypeSpecificCategory_stringM = CASE
plugin.tx_solr.index.queue.pages.fields.someDoktypeSpecificCategory_stringM {
key.field = doktype
80 = SOLR_RELATION
80 {
localField = some_doktype_specific_sys_category
multiValue = 1
}
}
This feature removes the SerializedValueDetector hook without any replacements, due of new TypoScript parser in Frontend on TYPO3 12,
which does not require any manual stdWrap by EXT:solr.
Each custom cObect implementation returning the array/object as PHP serialized string will be used without registration or check.
Note: Empty arrays/objects will not be written to the documents.
Check if your system uses the SerializedValueDetector hook
$GLOBALS
remove it and check the desired fields are properly indexed.
All Changes
- [FEATURE] Add DenseVectorField in schemas by @dkd-kaehm in #4439
- [TASK] Prepare branch for 13.1.x versions by @dkd-kaehm in #4443
- [TASK] 13.0.x-dev Update solarium/solarium requirement from 6.3.7 to 6.4.1 by @dependabot[bot] in #4435
- [BUGFIX] don't use pages uid 0 via l10n_parent by @dkd-kaehm in #4449
- Remove OpenSearch profile link by @infabo in #4418
- [FEATURE] Initial vector search by @dkd-friedrich in #4446
- [FEATURE] Cascade fe_group changes with extendToSubpages (reindex + cleanup) by @DavRet in #4400
- [TASK] Switch dependabot to supported branches: 13.1.x and 12.1.x by @dkd-kaehm in #4454
- [BUGFIX] pass a request with page id to Configuration manager by @WebsiteDeveloper in #4452
- [BUGFIX] Initialize the localRootLine property before usage by @davidlemaitre in #4423
- Adjust resource identifier in PageRenderer asset registration in backend module template by @chrrynobaka in #4386
- [TASK] 13.1.x-dev Bump solr from 9.9.0 to 9.10.0 in /Docker/SolrServer by @dependabot[bot] in #4462
- Fix bug for phrase, bigramPhrase and trigramPhrase searches with slops by @Oktopuce in #4460
- [BUGFIX] Describe array shape of findTranslationOverlaysByPageId correctly by @smichaelsen in #4482
- [DOCS] Mention rootline for __pageSections to work by @kitzberger in #4478
- Update ConfigureRouting.rst by @simonduerr in #4477
- [FEATURE] Add dateRange field type in schema by @tillhoerner in #4461
- [BUGFIX] Replace TSFE call for page type by @sebkln in #4458
- [FEATURE] Improve BeforeSearchFormIsShownEvent by @simonschaufi in #4481
- [TASK] Replace md5/sha1 calls with hash method by @thomashohn in #4437
- [FEATURE] Add HEALTHCHECK to Dockerfile by @dkd-kaehm in #4484
- [BUGFIX] Respect site configuration when resolving page ID for TSFE initialization by @sfroemkenjw in #4421
- [TASK] Improve vector search documentation by @dkd-friedrich in #4491
- [BUGFIX] PHP Warning: Trying to access array offset on value of type null by @kitzberger in #4330
- [BUGFIX] Check if facet value is set by @spoonerWeb in #4493
- [BUGFIX] Check if variable is set and string by @spoonerWeb in #4495
- !!![FEATURE] allow nested TypoScript on multiValue fields by @dkd-kaehm in #4485
Contributors
Like always this release would not have been possible without the help from our awesome community. Here are the contributors to this release.
(patches, comments, bug reports, reviews, ... in alphabetical order)
- Achim Fritz
- Albrecht Köhnlein
- Alexander Nitsche
- Andreas Kießling
- André Buchmann
- Bastien Lutz
- Benni Mack
- Benoit Chenu
- Christoph Lehmann
- @chrrynobaka
- Daniel Siepmann
- @derMatze82
- Dmitry Dulepov
- Elias Häußler
- Eric Chavaillaz
- Ernesto Baschny
- Fabio Norbutat
- Felix Ranesberger
- ferfrost
- Florian Rival
- Georg Ringer
- Harald Witt
- Hendrik vom Lehn
- @hnadler
- Henrik Elsner
- Ingo Fabbri
- Jennifer Geiß
- Julian Hofmann
- Kai Lochbaum
- Lars Tode
- Lukas Niestroj
- Marc Hirdes
- Mario Lubenka
- Markus Friedrich
- Matthias Vogel
- @n3amil / Cypelt
- Oliver Bartsch
- Patrick Schriner
- Philipp Kitzberger
- Pierrick Caillon
- Rafael Kähm
- René Maas
- Roman Schilter
- Sascha Nowak
- Sascha Schieferdecker
- Sebastian Schreiber
- Silvia Bigler
- Søren Malling
- Stefan Frömken
- Steve Lenz
- Stämpfli Kommunikation
- Sven Erens
- Sven Teuber
- Thomas Löffler
- Till Hörner
- Tim Dreier
- Tobias Hövelborn
- Tobias Schmidt
- Torben Hansen
- @twojtylak
- Wolfgang Wagner | wow! solution
Also a big thank you to our partners who have already concluded one of our new development participation packages such as Apache Solr EB for TYPO3 13 LTS (Feature):
- +Pluswerk AG
- .hausformat
- 711media websolutions GmbH
- Agentur Koch
- Amt der Oö Landesregierung
- Autorité des marchés financiers
- b13 GmbH
- bgm websolutions GmbH & Co. KG
- Berlin-Brandenburgische Akademie der Wissenschaften
- Brain Appeal GmbH
- BRETTINGHAMS GmbH
- Bytebetrieb GmbH & Co. KG
- CARL von CHIARI GmbH
- chiliSCHARF GmbH
- clickstorm GmbH
- coding. powerful. systems. CPS GmbH
- Columbus Interactive GmbH
- cosmoblonde GmbH
- cron IT GmbH
- CS2 AG
- cyperfection GmbH
- DMK E-BUSINESS GmbH
- DSCHOY GmbH
- Die Medialen GmbH
- Eidg. Forschungsanstalt WSL
- Eulenblick GmbH
- F7 Media GmbH
- Fachhochschule Erfurt
- Getdesigned GmbH
- graphodata GmbH
- Groupe Toumoro inc
- Gyldendal A/S
- Hirsch & Wölfl GmbH
- i-kiu motion
- in2code GmbH
- INESSS Institut national d'excellence en santé et en services sociaux
- internezzo ag
- IW Medien GmbH
- jweiland.net e.K.
- Kassenärztliche Vereinigung Rheinland-Pfalz
- KONVERTO AG
- Kreis Euskirchen
- Kwintessens B.V.
- L.N. Schaffrath DigitalMedien GmbH
- Land Tirol - DVT - Daten-Verarbeitung-Tirol GmbH
- Leuchtfeuer Digital Marketing GmbH
- LfdA - Labor für digitale Angelegenheiten GmbH
- Lingner Consulting New Media GmbH
- LOUIS INTERNET GmbH
- mce.gouv.qc.ca
- Marketing Factory Digital GmbH
- mehrwert intermediale kommunikation GmbH
- mellowmessage GmbH
- Metropole de Lyon
- MOSAIQ GmbH
- network.publishing Möller-Westbunk GmbH
- pick2webServices Magdalena Rybak
- pietzpluswild GmbH
- plan2net GmbH
- ProPotsdam GmbH
- punkt.de GmbH
- queo GmbH
- Sandstein Neue Medien GmbH
- SITE'NGO
- Snowflake Productions GmbH
- Statistik Austria
- Stratis
- Stämpfli AG
- SOS Software GmbH für Telekom
- Südwestfalen IT
- TWT Group GmbH
- visol digitale Dienstleistungen GmbH
- werkraum Digitalmanufaktur GmbH
- WIND Internet BV
- WTL InnoHub GmbH
- wow! solution
- XIMA MEDIA GmbH
How to Get Involved
There are many ways to get involved with Apache Solr for TYPO3:
- Submit bug reports and feature requests on GitHub
- Ask or help or answer questions in our Slack channel
- Provide patches through Pull Request or review and comment on existing Pull Requests
- Go to www.typo3-solr.com or call dkd to sponsor the ongoing development of Apache Solr for TYPO3
Support us by becoming an EB partner:
https://shop.dkd.de/Produkte/Apache-Solr-fuer-TYPO3/
or call:
+49 (0)69 - 2475218 0