Maison  >  Article  >  base de données  >  tutoriel de recherche de texte booléen mysql

tutoriel de recherche de texte booléen mysql

巴扎黑
巴扎黑original
2017-05-12 14:18:501870parcourir

MySQL prend en charge une autre forme de recherche en texte intégral, appelée mode booléen. En termes booléens, des détails peuvent être fournis sur :

Le mot à correspondre ;

1. Le mot à exclure (si une ligne contient ce mot, il n'est pas renvoyé. même s'il contient d'autres mots spécifiés );

2. Conseils d'arrangement (spécifiez certains mots comme plus importants que d'autres, avec des mots plus importants classés plus haut) ; >

4. Un autre contenu.

Peut être utilisé même sans index FULLTEXT L'approche booléenne diffère de la syntaxe de recherche en texte intégral utilisée jusqu'à présent en ce sens qu'elle peut être utilisée même si un index FULLTEXT n'est pas défini. Mais il s'agit d'une opération très lente (ses performances diminueront à mesure que la quantité de données augmentera).

Pour démontrer la fonction EN MODE BOOLÉEN, donnez un exemple simple :

Entrée :

Sortie :

select note_text from productnotes where match(note_text) against('anvils' in boolean mode);

Analyse : Cette recherche en texte intégral récupère toutes les lignes (il y a deux lignes) qui contiennent le mot lourd. Le mot-clé IN BOOLEAN MODE est utilisé, mais aucun opérateur booléen n'est réellement spécifié, donc le résultat est le même que si aucun mode booléen n'était spécifié. tutoriel de recherche de texte booléen mysql

Différence de comportement de IN BOOLEAN MODE Bien que les résultats de cet exemple soient les mêmes que sans IN BOOLEAN MODE, il existe une différence importante dans le comportement (même si elle n'est pas montrée dans cet exemple particulier).

Pour faire correspondre les lignes contenant du lourd mais ne contenant aucun mot commençant par corde, utilisez la requête suivante :

Entrée :

Sortie :

select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);

Analyse : Une seule ligne est renvoyée cette fois. Cette fois, le mot heavy correspond toujours, mais -rope* demande explicitement à MySQL d'exclure les lignes contenant Rope* (tout mot commençant par Rope , y compris Ropes ), c'est pourquoi la première ligne de l'exemple précédent a été exclue. tutoriel de recherche de texte booléen mysql

Modifications de code requises dans MySQL 4.x Si vous utilisez MySQL 4.x, l'exemple ci-dessus peut ne renvoyer aucune ligne. Il s'agit d'un bug dans la gestion de l'opérateur *. Pour utiliser cet exemple avec MySQL 4.x, utilisez -ropes au lieu de -rope* (pour exclure les cordes plutôt que d'exclure tout mot commençant par Rope ).

Nous avons vu deux opérateurs booléens de recherche en texte intégral - et * , - exclure un mot, tandis que * est l'opérateur de troncature (considérez-le comme un caractère générique pour la fin d'un mot). Le tableau suivant répertorie tous les opérateurs booléens pris en charge.

Voici quelques exemples d'utilisation de certains opérateurs : tutoriel de recherche de texte booléen mysql

Saisie :

Analyse : Cette recherche correspond aux lignes contenant les mots lapin et appât.

select note_text from productnotes where match(note_text) against('+rabbit +bait' in boolean mode);
Entrée :

Analyse : Sans opérateur spécifié, cette recherche correspond aux lignes contenant au moins un des mots lapin et appât.

select note_text from productnotes where match(note_text) agains('rabbit bait' in boolean mode);
Entrée :

Analyse : Cette recherche correspond à l'expression appât de lapin au lieu de faire correspondre les deux mots lapin et appât.

select note_text from productnotes where match(note_text) agains('"rabbit bait"' in boolean mode);
Entrée :

Analyse : Associez le lapin et la carotte, augmentez le niveau du premier et diminuez le niveau de la seconde.

select note_text from productnotes where match(note_text) agains(&#39;>rabbit <bcarrot&#39; in boolean mode);
Entrée :

Analyse : Cette recherche fait correspondre les mots safe et combinaison, abaissant le rang de ce dernier.

select note_text from productnotes where match(note_text) agains(&#39;+safe +(<combination)&#39; in boolean mode);
Organiser sans trier En mode booléen, ne triez pas les lignes renvoyées par ordre décroissant par valeur de classement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn