Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Escape-String zur Verwendung in der MySQL-Volltextsuche

Nur die Wörter und Operatoren haben im booleschen Suchmodus eine Bedeutung. Operatoren sind:+ , - , > < , ( ) , ~ , * , " , @distance . Nach einiger Recherche fand ich heraus, was Wortzeichen sind:Großbuchstaben, Kleinbuchstaben, Ziffern (Ziffern) und _ . Ich denke, Sie können einen von zwei Ansätzen verwenden:

  1. Ersetzen Sie alle Nicht-Wort-Zeichen durch Leerzeichen (ich bevorzuge diesen Ansatz). Dies kann mit Regex erreicht werden:

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Zeichen-Operatoren durch Leerzeichen ersetzen:

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

Nur Wörter werden von der Volltextsuchmaschine indiziert und können durchsucht werden. Nicht-Wort-Zeichen werden nicht indiziert, daher ist es nicht sinnvoll, sie in der Suchzeichenfolge zu belassen.

Referenzen: