Búsquedas Booleana con Match() Against()
MySQL puede realizar búsquedas booleanas de texto completo con el IN BOOLEAN MODE modificador. Con esta forma de búsqueda las palabras tienen un significado especial al principio o al final de las palabras en la cadena de búsqueda. En la consulta siguiente, el + y – los operadores de indicar que una palabra tiene que estar presente o ausente respectivamente, para un partido que se produzcan. Por lo tanto, la consulta recupera todas las filas que contienen la palabra ” MySQL “, pero que sí que no contengan la palabra ” YourSQL “:
mysql> SELECT * FROM artículos donde MATCH (titulo, cuerpo)
-> AGAINST (‘+ MySQL-YourSQL’ IN BOOLEAN MODE);
+—-+———————–+——————– —————–+
| ID | Nombre | cuerpo |
+—-+———————–+——————– —————–+
| 1 | MySQL Tutorial | DBMS es sinónimo de base de datos … |
| 2 | Cómo utilizar MySQL Bueno | Después de que pasó por una … |
| 3 | Optimización de MySQL | En este tutorial vamos a mostrar … |
| 4 | 1001 Trucos MySQL | 1. Nunca ejecutar mysqld como root. 2. … |
| 6 | MySQL Seguridad | Cuando se configura correctamente, MySQL … |
+—-+———————–+——————– —————–+
Nota
En la implementación de esta función, MySQL utiliza lo que se refiere a veces como la lógica implícita booleanas , en el que
+ representa y
- es sinónimo de NO
[ ningún operador ] implica O
Booleana búsquedas de texto completo tiene las siguientes características:
No utilizan el umbral del 50%.
No de forma automática ordenar las filas en orden decreciente de importancia. Esto se puede ver el resultado de la consulta anterior: la fila con la mayor relevancia es el que contiene ” MySQL “dos veces, pero no es el último, en primer lugar.
Ellos pueden trabajar incluso sin FULLTEXT índice, aunque una búsqueda ejecutada de esta manera sería muy lenta.
La longitud mínima y máxima de texto completo parámetros se aplican.
La lista de palabras de parada se aplica.
El booleana de texto completo la capacidad de búsqueda compatible con los siguientes operadores:
+
Un signo más indica que esta palabra debe estar presente en cada fila que se devuelve.
-
Un signo menos indica que esta palabra debe no estar presente en cualquiera de las filas que se devuelven.
Nota: El – operador actúa sólo para excluir filas que de otra forma igualada por otros términos de búsqueda. Por lo tanto, un modo de búsqueda booleana, que contiene términos sólo precedido por – devuelve un resultado vacío. No devuelve ” todos los registros excepto los que contengan cualquiera de los términos excluidos. ”
(Sin operador)
Por defecto (cuando ni + ni – se especifica) la palabra es opcional, pero las filas que contienen una clasificación mayor. Esto imita el comportamiento de MATCH () … AGAINST () sin el IN BOOLEAN MODE modificador.
> <
Estos dos operadores se utilizan para cambiar la contribución de la palabra al valor de relevancia que se asigna a una fila. El > operador incrementa la contribución y el < operador disminuye. Vea el siguiente ejemplo de esta lista.
()
Los paréntesis agrupan palabras en subexpresiones. Los grupos entre paréntesis se pueden anidar.
~
Una tilde actúa como operador de negación, causando que la contribución de la palabra a la relevancia de la fila a ser negativo. Esto es útil para marcar " ruido "las palabras. Una fila que contiene una palabra es una calificación más baja que otros, pero no se excluye por completo, como lo sería con el - operador.
*
El asterisco sirve como el truncamiento (o comodín) del operador. A diferencia de los otros operadores, debe ser añadido a la palabra de ser afectados. Concuerden con las palabras si empiezan con la palabra que precede a la * operador.
Si una palabra se especifica con el operador de truncamiento, no se elimina de una consulta booleana, aunque es muy corto (como lo determina la ft_min_word_len configuración) o de palabras de parada una. Esto ocurre porque la palabra no se ve como muy corta o una palabra vacía, sino como un prefijo que debe estar presente en el documento en forma de una palabra que comience con el prefijo. Supongamos que ft_min_word_len = 4 . ft_min_word_len = 4 . A continuación, una búsqueda de "+ palabra + el * " Es probable que devolver menos filas que una búsqueda de "+ palabra + la ' :
La consulta anterior queda como está y requiere tanto de palabra y de la * (una palabra que comienza con la información) estar presente en el documento.
La consulta de esta última se transforma en + palabra (que requiere sólo la palabra de estar presente). el es al mismo tiempo muy corto y una palabra vacía, y cualquiera de estas condiciones es suficiente para causar que sea ignorada.
"
Una frase que se incluye dentro de comillas (" " ") coincide con los caracteres sólo las filas que contienen la frase literalmente, ya que se ha escrito . El texto completo del motor se divide la frase en palabras y realiza una búsqueda en el FULLTEXT índice de las palabras. Antes de MySQL 5.0.3, el motor realiza entonces una búsqueda de la subcadena de la frase en los registros que se encontraron, por lo que el partido debe incluir caracteres de otro tipo en la frase A partir de MySQL 5.0.3, caracteres de otro tipo no tiene por qué corresponder exactamente.: buscar frase sólo requiere que los partidos contienen exactamente las mismas palabras que la frase y en el mismo orden. Por ejemplo, "la frase de prueba" coincide con "la prueba, la frase" en MySQL 5.0.3, pero no antes.
Si la frase no contiene palabras que están en el índice, el resultado está vacío. Por ejemplo, si todas las palabras son palabras vacías o más corta que la longitud mínima de palabras indexadas, el resultado está vacío.
Los siguientes ejemplos muestran algunas cadenas de búsqueda que utilizan booleanas de texto completo operadores:
'Manzana banana'
Encuentra registros que contengan al menos una de las dos palabras.
'+ Manzana + jugo'
Encuentra registros que contengan ambas palabras.
'+ Apple macintosh'
Encuentra registros que contengan la palabra " manzana ", pero las filas rango más alto si también contienen" Macintosh ".
'+ Apple-macintosh'
Encuentra registros que contengan la palabra " manzana ", pero no" macintosh ".
'+ Apple macintosh ~'
Encuentra registros que contengan la palabra " manzana ", pero si la fila también contiene la palabra" Macintosh ", la tasa es más baja que si la fila no. Esto es " más suave "que la búsqueda de '+ apple-macintosh' , por lo que la presencia de " Macintosh "hace que la fila no se devolverá nada.
'+ Manzana + (> volumen de negocios Encuentra registros que contengan la palabra ” manzana “y” facturación “, o” manzana “y” strudel “(en cualquier orden), pero son considerados” rotación de la manzana “mayor que” apple strudel “. ‘Manzana *’ Encuentra registros que contienen palabras como ” manzana “,” manzanas “,” manzana “, o” applets “. “Algunas palabras” ‘ Encuentra registros que contengan la frase exacta ” algunas palabras “(por ejemplo, las filas que contienen” algunas palabras de sabiduría “pero no” algunas palabras irrelevantes “). Tenga en cuenta que el ” ” “caracteres que escriba la frase son caracteres operadores que delimitan la frase. No son las comillas que encierran la cadena de búsqueda en sí. Popularity: 6% [?]Leave a Reply


