Maison > base de données > tutoriel mysql > le corps du texte

Comment utiliser la fonction de recherche en texte intégral de mysql5.7.25

王林
Libérer: 2023-05-28 17:34:06
avant
1613 Les gens l'ont consulté

Avant-propos

Parfois, la fonction de recherche en texte intégral doit être utilisée dans le projet. Si le nombre de recherches en texte intégral est relativement faible et que vous ne souhaitez pas créer un outil d'indexation dédié distinct comme elasticsearch, vous pouvez envisager d'utiliser. la fonction de recherche en texte intégral fournie avec MySQL.

mysql 5.7.25 est livré avec une fonction de recherche en texte intégral, ce qui est très pratique.

Avant MySQL 5.7.6, l'index de texte intégral ne prenait en charge que l'index de texte intégral en anglais et ne prenait pas en charge l'index de texte intégral en chinois. Il était nécessaire d'utiliser un segmenteur de mots pour prétraiter les paragraphes chinois et les diviser en mots, puis. stockez-les dans la base de données.

À partir de MySQL 5.7.6, MySQL dispose d'un analyseur de texte intégral ngram intégré pour prendre en charge la segmentation des mots chinois, japonais et coréen.

La version MySQL utilisée dans cet article est la 5.7.25, moteur de base de données InnoDB.

1. Créez un tableau avec un index de texte intégral

CREATE TABLE `tbl_article_content` (
  `id` bigint(40) NOT NULL AUTO_INCREMENT,
  `article_title` varchar(60) COMMENT '标题',
  `article_summary` varchar(120) COMMENT '摘要',
  `article_content` text NOT NULL COMMENT '内容',
  `article_id` bigint(40) NOT NULL COMMENT '对应文章ID',
  `create_date` datetime NOT NULL COMMENT '创建时间',
  `modified_date` datetime NOT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `artid` (`article_id`) USING BTREE,
  FULLTEXT KEY `article_content` (`article_content`) /*!50100 WITH PARSER `ngram` */ 
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
Copier après la connexion

/*!50100 */ Cela signifie la version 5.01.00 ou supérieure, exécutée uniquement

AVEC PARSER `ngram` est le moteur de segmentation de mots désigné.

2. Ajouter un index de texte intégral

Si l'index de texte intégral n'est pas ajouté lors de la création du tableau, vous pouvez l'ajouter après la création du tableau.

create fulltext index article_content on tbl_article_content(article_content) WITH PARSER ngram;
Copier après la connexion

3. Ajouter des données de test

INSERT INTO `tbl_article_content` VALUES ('2', '文章标题', '文章摘要', '文章内容', '2', '2022-02-05 13:47:55', '2022-02-05 13:47:59');
Copier après la connexion

4. Exécuter la requête

mysql> select * FROM tbl_article_content222 WHERE MATCH(article_content) AGAINST('内容');
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
| id | article_title | article_summary | article_content | article_id | create_date         | modified_date       |
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
|  2 | 文章标题      | 文章摘要        | 文章内容        |          2 | 2022-02-05 13:47:55 | 2022-02-05 13:47:59 |
+----+---------------+-----------------+-----------------+------------+---------------------+---------------------+
1 row in set
Copier après la connexion

Les mots-clés de la requête en texte intégral sont MATCH et CONTRE.

5. Grammaire

MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }
Copier après la connexion

Par exemple : SELECT * FROM tab_name WHERE MATCH ('Nom de la colonne 1, Nom de la colonne 2...Nom de la colonne n') CONTRE ('Mot 1 Mot 2 Mot 3... Mot m')

Autrement dit : MATCH est équivalent à la colonne à faire correspondre, et CONTRE est le contenu à trouver.

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!