Recherche améliorée

Bonjour,
Je cherche à améliorer le système de recherche implémenté dans Spip, et ce en autorisant une marge de maneuvre dans les termes (genre si on tape « banene » au lieu de « banane » bah ça sélectionne quand même)
Je vois à peu près comment implémenter ça en terme de requêtes sql mais en utilisant les fonctions de spip?
Pas du tout.

Pour remettre dans le contexte, je suis nouveau dans Spip, on m’a confié les rennes d’un vieux projet qui utilise ce cms, et je ne sais même pas quelle fonction s’occupe de la recherche.
Voici en gros ce que je peux vous apporter en détails, genre la requête SQL effectuée lors d’une recherche en mode debug:

SELECT articles.id_article, resultats.points AS points, articles.date, articles.titre, articles.texte, articles.lang
FROM spip_articles AS `articles`  
INNER JOIN spip_resultats AS resultats ON ( resultats.id = articles.id_article )
WHERE (articles.statut = 'publie')
	AND articles.date<'2024-04-08 12:08:00'
	AND (resultats.recherche='cd43e2c918d7b95d' AND resultats.table_objet='articles' AND resultats.serveur='')
ORDER BY articles.date DESC

Et un peu de code obtenu avec le mode debug:

function BOUCLE_articleshtml_8e37e40ad0f57737a0f21c692bfd37ec(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {
007
008     static $command = array();
009     static $connect;
010     $command['connect'] = $connect = ''; 
011     // RECHERCHE
012     {
013         $prepare_recherche = charger_fonction('prepare_recherche', 'inc');
014         list($rech_select, $rech_where) = $prepare_recherche((isset($Pile[0]["recherche"])?$Pile[0]["recherche"]:(isset($GLOBALS["recherche"])?$GLOBALS["recherche"]:"")), "articles", "","",array (
015 ),"id_article");
016     }
017     
018     $command['pagination'] = array((isset($Pile[0]['debut_articles']) ? $Pile[0]['debut_articles'] : null), 10);
019     if (!isset($command['table'])) {
020         $command['table'] = 'articles';
021         $command['id'] = '_articles';
022         $command['from'] = array('articles' => 'spip_articles','resultats' => 'spip_resultats');
023         $command['type'] = array();
024         $command['groupby'] = array();
025         $command['orderby'] = array('articles.date DESC');
026         $command['join'] = array('resultats' => array('articles','id','id_article'));
027         $command['limit'] = '';
028         $command['having'] = 
029             array();
030     }
031     $command['select'] = array("articles.id_article",
032         "$rech_select",
033         "articles.date",
034         "articles.titre",
035         "articles.texte",
036         "articles.lang");
037     $command['where'] = 
038             array(
039 quete_condition_statut('articles.statut','publie,prop,prepa/auteur','publie',''), 
040 quete_condition_postdates('articles.date',''), $rech_where?$rech_where:'');
041     if (defined("_BOUCLE_PROFILER")) $timer = time()+(float)microtime();
042     $t0 = "";
043     // REQUETE
044     $iter = IterFactory::create(
045         "SQL",
046         $command,
047         array('recherche.html','html_8e37e40ad0f57737a0f21c692bfd37ec','_articles',35,$GLOBALS['spip_lang'])
048     );

Ma question c’est : quelle est la fonction qui s’occupe de la recherche actuellement ? (ou dans un projet type par exemple).
Car là je suis complètement paumé, impossible de savoir ce qui fait quoi.
Je sais que le plugin fulltext est installé, mais je ne sais pas si la recherche l’utilise ou utilise les fonctionnalités natives de spip.
Merci d’avance.