Mysql
 sql >> Database >  >> RDS >> Mysql

Stringa di escape da utilizzare nella ricerca fulltext di MySQL

Solo le parole e gli operatori hanno significato nella modalità di ricerca booleana. Gli operatori sono:+ , - , > < , ( ) , ~ , * , " , @distance . Dopo alcune ricerche ho trovato quali sono i caratteri delle parole:maiuscole, minuscole, numerici (cifra) e _ . Penso che tu possa usare uno dei due approcci:

  1. Sostituisci tutti i caratteri non verbali con spazi (preferisco questo approccio). Questo può essere ottenuto con regex:

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Sostituisci caratteri-operatori con spazi:

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

Solo le parole sono indicizzate dal motore di ricerca full-text e possono essere ricercate. I caratteri non verbali non sono indicizzati, quindi non ha senso lasciarli nella stringa di ricerca.

Riferimenti: