BeforeFinalSearchQueryIsExecutedEvent 

The PSR-14 \TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent has been introduced which allows developers to manipulate the (internal) \TYPO3\CMS\Core\Database\Query\QueryBuilder instance, just before the query gets executed.

Example: Add a condition to the search query 

Changing the host of the current request and setting it as canonical:

EXT:my_extension/Classes/IndexedSearch/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\IndexedSearch\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent;

final readonly class EventListener
{
  #[AsEventListener(identifier: 'manipulate-search-query')]
  public function beforeFinalSearchQueryIsExecuted(BeforeFinalSearchQueryIsExecutedEvent $event): void
  {
    $event->queryBuilder->andWhere(
      $event->queryBuilder->expr()->eq('some_column', 'some_value'),
    );
  }
}
Copied!

API 

final class BeforeFinalSearchQueryIsExecutedEvent
Fully qualified name
\TYPO3\CMS\IndexedSearch\Event\BeforeFinalSearchQueryIsExecutedEvent

Listeners are able to manipulate the QueryBuilder before the search query gets executed

public queryBuilder
public readonly searchWords
public readonly freeIndexUid