sql >> Base de Datos >  >> RDS >> Mysql

Cadena de escape para usar en la búsqueda de texto completo de MySQL

Solo las palabras y los operadores tienen significado en el modo de búsqueda booleano. Los operadores son:+ , - , > < , ( ) , ~ , * , " , @distance . Después de investigar un poco, encontré qué son los caracteres de las palabras:mayúsculas, minúsculas, números (dígito) y _ . Creo que puedes usar uno de dos enfoques:

  1. Reemplace todos los caracteres que no sean palabras con espacios (prefiero este enfoque). Esto se puede lograr con expresiones regulares:

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Reemplace caracteres-operadores con espacios:

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

Solo las palabras están indexadas por el motor de búsqueda de texto completo y se pueden buscar. Los caracteres que no son palabras no están indexados, por lo que no tiene sentido dejarlos en la cadena de búsqueda.

Referencias: