Résumé : dans ce tutoriel, vous apprendrez à effectuer des recherches booléennes MySQL en texte intégral. En outre, vous apprendrez à utiliser les opérateurs booléens pour former des requêtes de recherche très complexes.
Introduction aux recherches booléennes en texte intégral MySQL
En dehors de la recherche en texte intégral en langage naturel, MySQL prend en charge une forme supplémentaire de recherche en texte intégral qui est appelée recherche booléenne en texte intégral. Dans le mode booléen, MySQL recherche des mots au lieu du concept comme dans la recherche en langage naturel.
MySQL vous permet d’effectuer une recherche plein texte basée sur des requêtes très complexes dans le mode booléen avec des opérateurs booléens. C’est pourquoi la recherche en texte intégral en mode booléen convient aux utilisateurs expérimentés.
Pour effectuer une recherche en texte intégral en mode booléen, vous utilisez le modificateur IN BOOLEAN MODE
dans l’expression AGAINST
. L’exemple suivant vous montre comment rechercher un produit dont le nom contient le mot Truck
.
Code language: SQL (Structured Query Language) (sql)
Deux produits dont le nom contient le mot Truck
sont retournés.
Pour trouver le produit dont les noms de produits contiennent le mot Truck
mais pas les lignes qui contiennent Pickup
, vous pouvez utiliser l’opérateur booléen exclure ( -
), qui renvoie le résultat qui exclut le mot clé Pickup
comme la requête suivante :
Code language: SQL (Structured Query Language) (sql)
Opérateurs booléens de recherche en texte intégral de MySQL
Le tableau suivant illustre les opérateurs booléens de recherche en texte intégral et leurs significations :
Opérateur | Description |
---|---|
+ | Inclure, le mot doit être présent. |
– | Exclure, le mot ne doit pas être présent. |
> | Inclure, et augmenter la valeur de classement. |
< | Inclure, et diminuer la valeur de classement. |
() | Groupe les mots en sous-expressions (ce qui permet de les inclure, de les exclure, de les classer et ainsi de suite en tant que groupe). |
~ | Néglige la valeur de classement d’un mot. |
* | Signe générique à la fin du mot. |
« » | Définit une phrase (par opposition à une liste de mots individuels, la phrase entière est appariée pour inclusion ou exclusion). |
Les exemples suivants illustrent la façon d’utiliser les opérateurs booléens de texte intégral dans la requête de recherche :
Pour rechercher les rangées qui contiennent au moins un des deux mots : mysql ou tutoriel
‘mysql tutorial’
Pour rechercher les rangées qui contiennent les deux mots : mysql et tutoriel
‘+mysql +tutorial’
Pour rechercher les lignes qui contiennent le mot « mysql », mais mettre le rang le plus élevé pour les lignes qui contiennent « tutoriel » :
‘+mysql tutorial’
Pour rechercher les rangs qui contiennent le mot « mysql » mais pas « tutorial »
‘+mysql -tutorial’
Pour rechercher les rangs qui contiennent le mot « mysql » et mettre un rang inférieur pour le rang qui contient le mot « tutorial ».
‘+mysql ~tutorial’
Pour rechercher les rangs qui contiennent les mots « mysql » et « tutorial », ou « mysql » et « training » dans n’importe quel ordre, mais mettre les rangs qui contiennent « mysql tutorial » plus haut que « mysql training ».
‘+mysql +(>tutorial <training)’
Pour trouver les lignes qui contiennent des mots commençant par « mon », comme « mysql », « mydatabase », etc, vous utilisez ce qui suit :
‘my*’
Caractéristiques principales de la recherche booléenne en texte intégral de MySQL
- MySQL ne trie pas automatiquement les lignes par pertinence par ordre décroissant dans la recherche booléenne en texte intégral.
- Pour effectuer des requêtes booléennes, les tables InnoDB nécessitent que toutes les colonnes de l’expression
MATCH
ait un indexFULLTEXT
. Notez que les tables MyISAM ne l’exigent pas, bien que la recherche soit assez lente. - MySQL ne supporte pas les opérateurs booléens multiples sur une requête de recherche sur les tables InnoDB, par exemple, ‘++mysql’. MySQL renvoie une erreur si vous le faites. Cependant, MyISAM se comporte différemment. Il ignore les autres opérateurs et utilise l’opérateur le plus proche du mot recherché, par exemple, ‘+-mysql’ deviendra ‘-mysql’.
- La recherche plein texte InnoDB ne prend pas en charge le signe plus (+) ou moins (-) arrière. Elle ne prend en charge que le signe plus ou moins en tête. MySQL signalera une erreur si votre mot de recherche est ‘mysql+’ ou ‘mysql-‘. En outre, les signes plus ou moins suivants avec un caractère générique ne sont pas valides : +*, +-
- Le seuil de 50% signifie que si un mot apparaît dans plus de 50% des lignes, MySQL l’ignorera dans le résultat de la recherche.
Dans ce tutoriel, vous avez appris à effectuer des recherches booléennes MySQL en texte intégral avec de nombreux opérateurs booléens utiles.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon