---
title: "Feature: #109018 - PSR-14 event to modify indexed_search result sets"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-109018-1769714898"
source: "Changelog/14.2/Feature-109018-PSR-14EventToModifyIndexedSearchResultSets.rst"
typo3-version: "14.2"
typo3-major: 14
type: "feature"
issue: 109018
forge: "https://forge.typo3.org/issues/109018"
tags: ["Frontend", "PHP-API", "ext:indexed_search"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Feature: #109018 - PSR-14 event to modify indexed_search result sets {#feature-109018-1769714898}

See [forge#109018](https://forge.typo3.org/issues/109018)

## Description {#description}

A new PSR-14 event
`\TYPO3\CMS\IndexedSearch\Event\AfterSearchResultSetsAreGeneratedEvent`
has been introduced to modify search result sets in
`SearchController`.

The event is dispatched in `searchAction()` after all the result sets have
been built. Event listeners can manipulate complete result sets, including
pagination, rows, section data, and category metadata.

The event has the following methods:

-   `getResultSets()`: Returns all the result sets from the current search.
-   `setResultSets(array $resultSets)`: Replaces the result sets.
-   `getSearchData()`: Returns the search configuration array.
-   `getSearchWords()`: Returns an array of search words.
-   `getView()`: Returns the view instance.
-   `getRequest()`: Returns the current server request.

## Example {#example}

The following example replaces every result set pagination with
`SlidingWindowPagination`:

**EXT:my_extension/Classes/EventListener/ModifySearchPaginationListener.php**

```php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Pagination\SimplePagination;
use TYPO3\CMS\Core\Pagination\SlidingWindowPagination;
use TYPO3\CMS\IndexedSearch\Event\AfterSearchResultSetsAreGeneratedEvent;

#[AsEventListener(identifier: 'my-extension/modify-search-result-sets')]
final readonly class ModifySearchPaginationListener
{
    public function __invoke(
        AfterSearchResultSetsAreGeneratedEvent $event
    ): void {
        $resultSets = $event->getResultSets();

        foreach ($resultSets as $key => $resultSet) {
            if (($resultSet['pagination'] ?? null)
                instanceof SimplePagination
            ) {
                $resultSets[$key]['pagination']
                    = new SlidingWindowPagination(
                        $resultSet['pagination']->getPaginator(),
                        5
                    );
            }
        }

        $event->setResultSets($resultSets);
    }
}
```

## Impact {#impact}

This event allows search result sets to be modified in a single listener
call. It enables custom pagination strategies, as well as advanced search
result transformations.
