La base de datos MySQL le permite realizar búsquedas en lenguaje natural en cualquier campo basado en carácter a través del uso de un índice FULLTEXT . Una búsqueda de texto completo utiliza palabras vacías ( es decir , que no se buscará, como la y , y que ) , las búsquedas booleanas y capacidades de relevancia en regresen los resultados que más se asemeja a lo que usted busca. The Basics
lenguaje natural significa que la frase o palabra se busca como si se hablaba , sin operadores especiales de búsqueda. Para una búsqueda en lenguaje natural MySQL las cadenas de búsqueda deben tener entre cuatro y 254 caracteres y las palabras deben estar separados por un delimitador , como un espacio, coma o punto. El analizador de MySQL no puede separar las palabras sin algún tipo de delimitador . El analizador eliminará los stopwords de las palabras de búsqueda (ver Recursos para obtener una lista de las palabras ) . Las palabras vacías no serán parte de la investigación y si hay sólo palabras vacías en la búsqueda no se devolverá ningún resultado .
Cada fila que coincida con los parámetros de búsqueda se le da una calificación de relevancia y los resultados se devuelven en base a la calificación , de mayor a menor. Las búsquedas que coincidan con más de 50 por ciento de las filas o menos de tres filas de datos no se devuelven . Esto es muy diferente de la función LIKE ( ) que funciona como una expresión regular , en busca de la cadena exacta , independientemente de la ubicación y frecuencia de ocurrencia.
La sintaxis
con el fin de apoyar la búsqueda de texto completo , la tabla debe crearse con un índice de texto completo y las columnas indexadas deben tener un tipo de datos de caracteres ( CHAR , VARCHAR o TEXT ) .
crear artículos mESA (id INT ( 10 ) DEFAULT '0 ' AUTO_INCREMENT , FECHA date_posted , categoría INT ( 2 ) , el título VARCHAR ( 255 ) NOT NULL, artículo NOT NULL, PRIMARY KEY (id ) , FOREIGN KEY ( categoría), FULLTEXT (título, artículo) ),
Para consultar los datos , se utiliza una instrucción SELECT como :
SELECT id, titulo FROM artículos DONDE MATCH ( titulo , artículo) AGAINST ( 'mysql ');
la cláusula de coincidencia debe ser exactamente el mismo que los campos especificados en el índice FULLTEXT .
Para utilizar un lugar de búsqueda booleana las palabras "en el modo booleano" después de la cadena de búsqueda.
SELECT id , título de los artículos DONDE MATCH ( titulo , artículo) AGAINST ( '+ MySQL -PHP ' EN BOOLEAN MODE) ;
Esta consulta coincidirá con todos los artículos que contengan la cadena "MySQL ", pero no contienen la cadena " PHP ". Para obtener una lista completa de los operadores booleanos ver Recursos más adelante .