Mysql
 sql >> Base de données >  >> RDS >> Mysql

Chaîne d'échappement à utiliser dans la recherche en texte intégral MySQL

Seuls les mots et les opérateurs ont un sens en mode de recherche booléenne. Les opérateurs sont :+ , - , > < , ( ) , ~ , * , " , @distance . Après quelques recherches, j'ai trouvé ce que sont les caractères des mots :majuscules, minuscules, chiffres (chiffre) et _ . Je pense que vous pouvez utiliser l'une des deux approches :

  1. Remplacez tous les caractères non verbaux par des espaces (je préfère cette approche). Cela peut être accompli avec regex :

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Remplacez les opérateurs-caractères par des espaces :

    $search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
    

Seuls les mots sont indexés par le moteur de recherche plein texte et peuvent être recherchés. Les caractères non verbaux ne sont pas indexés, il n'est donc pas logique de les laisser dans la chaîne de recherche.

Références :