Resumen: en este tutorial, aprenderá a realizar búsquedas booleanas de texto completo en MySQL. Además, aprenderá a utilizar los operadores booleanos para formar consultas de búsqueda muy complejas.
Introducción a las búsquedas booleanas de texto completo en MySQL
Además de la búsqueda de texto completo en lenguaje natural, MySQL soporta una forma adicional de búsqueda de texto completo que se denomina búsqueda booleana de texto completo. En el modo booleano, MySQL busca palabras en lugar del concepto como en la búsqueda en lenguaje natural.
MySQL permite realizar una búsqueda de texto completo basada en consultas muy complejas en el modo booleano junto con operadores booleanos. Por ello, la búsqueda de texto completo en modo booleano es adecuada para usuarios experimentados.
Para realizar una búsqueda de texto completo en modo booleano, se utiliza el modificador IN BOOLEAN MODE
en la expresión AGAINST
. El siguiente ejemplo muestra cómo buscar un producto cuyo nombre de producto contiene la palabra Truck
.
Code language: SQL (Structured Query Language) (sql)
Se devuelven dos productos cuyos nombres de producto contienen la palabra Truck
.
Para encontrar el producto cuyos nombres de producto contienen la palabra Truck
pero no cualquier fila que contenga Pickup
, puede utilizar el operador booleano de exclusión ( -
), que devuelve el resultado que excluye la palabra clave Pickup
como la siguiente consulta:
Code language: SQL (Structured Query Language) (sql)
MySQL Boolean full-text search operators
La siguiente tabla ilustra los operadores booleanos de búsqueda de texto completo y sus significados:
Operador | Descripción |
---|---|
+ | Incluir, la palabra debe estar presente. |
– | Excluir, la palabra no debe estar presente. |
> | Incluir, y aumentar el valor del ranking. |
< | Incluir, y disminuir el valor del ranking. |
() | Agrupa las palabras en subexpresiones (permitiendo incluirlas, excluirlas, clasificarlas, etc. como grupo). |
~ | Negar el valor de clasificación de una palabra. |
* | Característica al final de la palabra. |
«» | Define una frase (a diferencia de una lista de palabras individuales, la frase completa se compara para su inclusión o exclusión). |
Los siguientes ejemplos ilustran cómo utilizar operadores booleanos de texto completo en la consulta de búsqueda:
Para buscar filas que contengan al menos una de las dos palabras: mysql o tutorial
‘tutorial mysql’
Para buscar filas que contengan ambas palabras: mysql y tutorial
‘+mysql +tutorial’
Para buscar filas que contengan la palabra «mysql», pero poner el rango más alto para las filas que contengan «tutorial»:
‘+mysql tutorial’
Para buscar filas que contengan la palabra «mysql» pero no «tutorial»
‘+mysql -tutorial’
Para buscar filas que contengan la palabra «mysql» y poner el rango más bajo si contiene la palabra «tutorial».
‘+mysql ~tutorial’
Para buscar filas que contengan las palabras «mysql» y «tutorial», o «mysql» y «training» en cualquier orden, pero poner las filas que contengan «mysql tutorial» más arriba que «mysql training».
‘+mysql +(>tutorial <formación)’
Para encontrar las filas que contengan palabras que empiecen por «mi» como «mysql», «mydatabase», etc., se utiliza lo siguiente:
‘mi*’
Principales características de la búsqueda booleana de texto completo en MySQL
- MySQL no ordena automáticamente las filas por relevancia en orden descendente en la búsqueda booleana de texto completo.
- Para realizar consultas booleanas, las tablas InnoDB requieren que todas las columnas de la expresión
MATCH
tengan un índiceFULLTEXT
. Tenga en cuenta que las tablas MyISAM no requieren esto, aunque la búsqueda es bastante lenta. - MySQL no soporta múltiples operadores booleanos en una consulta de búsqueda en las tablas InnoDB, por ejemplo, ‘++mysql’. MySQL devolverá un error si lo hace. Sin embargo, MyISAM se comporta de forma diferente. Ignora otros operadores y utiliza el operador más cercano a la palabra de búsqueda, por ejemplo, ‘+-mysql’ se convertirá en ‘-mysql’.
- La búsqueda de texto completo en InnoDB no admite el signo más (+) o menos (-) al final. Sólo admite el signo más o menos inicial. MySQL informará de un error si la palabra de búsqueda es ‘mysql+’ o ‘mysql-‘. Además, los siguientes signos de más o menos con comodín no son válidos: +*, +-
- El umbral del 50% significa que si una palabra aparece en más del 50% de las filas, MySQL la ignorará en el resultado de la búsqueda.
En este tutorial, ha aprendido a realizar búsquedas booleanas de texto completo en MySQL con muchos operadores booleanos útiles.
- ¿Ha sido útil este tutorial?
- SíNo