Depuis la version 4.0.1, MySQL peut aussi effectuer des
recherchez en texte intégral avec l'option IN BOOLEAN
MODE
.
mysql>SELECT * FROM articles WHERE MATCH (title,body)
->AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+ | id | title | body | +----+-----------------------+-------------------------------------+ | 1 | MySQL Tutorial | DBMS stands for DataBase ... | | 2 | How To Use MySQL Well | After you went through a ... | | 3 | Optimizing MySQL | In this tutorial we will show ... | | 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... | | 6 | MySQL Security | When configured properly, MySQL ... | +----+-----------------------+-------------------------------------+
Cette requête recherche toute les lignes qui contiennent le mot
``MySQL'', mais qui ne contient pas le mot
``YourSQL
''.
Les recherches booléennes en texte intégral ont les caractéristiques suivantes :
Elle n'utilise pas le seuil de 50%.
Elles ne trie pas automatiquement les lignes par ordre de pertinence décroissante. Vous pouvez le voir dans l'exemple précédent : la ligne ayant la plus grande pertinence est celle qui contient ``MySQL'' deux fois, mais elle est listée en dernier.
Elles peuvent fonctionner sans l'index
FULLTEXT
, même si c'est
particulièrement lent.
Les recherches booléenne en texte intégral supporte les opérateurs suivants :
+
A signe + initial indique que le mot doit être présent dans la ligne retournée.
-
Un signe - initial indique que le mot ne doit pas être présent dans la ligne retournée.
(pas d'opérateur)
Par défaut, lorsque ni +
, ni
-
n'est spécifié), le mot est
optionnel, mais les lignes qui le contiennent seront mieux
cotées. Cela imite le comportement de MATCH() ...
AGAINST()
sans l'option IN BOOLEAN
MODE
.
> <
Ces deux opérateurs servent à changer la contribution d'un
mot à la pertinence. L'opérateur >
accroît la contribution, et l'opérateur
<
la décroît. Voir un exemple
ci-dessous.
( )
Les parenthèses servent à grouper des mots en sous-expressions. Les groupes de parenthèses peuvent être imbriquées.
~
Un signe tilde initial marque la négation, et fait que la
contribution du mot à la pertinence sera négative. Cet
opérateur est pratique pour marquer les mots ambigus. Une
ligne qui contient un tel mot sera classée bien plus bas,
mais elle ne sera pas exclue, comme ce serait le cas avec
-
.
*
Un astérisque est l'opérateur de troncature. Contrairement aux autres opérateurs, il doit être en suffixe et non pas en préfixe.
"
Une phrase entre guillemets double
(‘"
’) est recherchée
littéralement, telle qu'elle a été
saisie.
Les exemples ci-dessous illustrent quelques résultats de chaînes de recherche avec les opérateurs :
'pomme banane'
Recherche les lignes qui contiennent au moins un de ces mots.
'+pomme +jus'
Recherche les lignes qui contiennent ces deux mots.
'+pomme macintosh'
Recherche les lignes qui contiennent le mot
``pomme
'', mais classe plus haut les
lignes qui contiennent aussi
``macintosh
''.
'+pomme -macintosh'
Recherche les lignes qui contiennent
``pomme
'' mais pas
``macintosh
''.
'+pomme +(>tatin <strudel)'
Recherche les lignes qui contiennent les mots
``pomme
'' et
``tatin
'', ou
``pomme
'' et
``strudel
'' (dans n'importe quel ordre),
mais classe ``pomme tatin
'' plus haut que
``pomme strudel
''.
'pomm*'
Trouve les lignes qui contiennent des mots tels que
``pomme
'', ``pommes
'',
``pommier
'', ou
``pommeau
''.
'"deux mots"'
Recherche les lignes qui contiennent exactement la phrase
``deux mots
'' (par exemple, les lignes
qui contiennent ``deux mots d'amour
''
mais pas ``le mot deux
''). Notez que les
caractères ‘"
’ qui entourent
la phrase délimitent la phrase. Ils ne délimitent pas la
chaîne.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.