Tous les produits
Search
Centre de documentation

AnalyticDB:Analyzers for full-text indexes

Dernière mise à jour :Aug 10, 2026

AnalyticDB for MySQL propose six analyseurs intégrés pour les index de texte intégral : AliNLP, IK, Standard, Ngram, Edge_ngram et Pattern. Chaque analyseur utilise une stratégie de tokenisation différente. Choisissez celle qui correspond à vos besoins linguistiques, à votre modèle de recherche (recherche floue, par préfixe ou exacte) et à la nécessité ou non de traiter du texte chinois.

Choisir un analyseur

Analyseur Idéal pour Prise en charge des langues Dictionnaire personnalisé
AliNLP Tokenisation basée sur le traitement du langage naturel (NLP) pour le chinois et les langues multiples Chinois, anglais, indonésien, malais, thaï, vietnamien, français, espagnol Oui
IK Texte chinois avec granularité configurable Chinois Oui
Standard Texte anglais avec filtrage des mots vides Règles spécifiques à la langue Oui
Ngram Recherche de sous-chaînes floues Toutes Oui
Edge_ngram Recherche par préfixe et saisie semi-automatique Toutes Oui
Pattern Tokenisation personnalisée basée sur des délimiteurs via des expressions régulières Toutes Non

Analyseur par défaut selon la version du cluster :

  • Clusters antérieurs à la version V3.1.4.15 : analyseur AliNLP

  • Clusters de version V3.1.4.15 ou ultérieure : analyseur IK

Pour vérifier la version mineure de votre cluster, consultez la rubrique Comment afficher la version mineure d'un cluster ?

Spécifier un analyseur

Syntaxe

FULLTEXT INDEX idx_name(`column_name`) [ WITH ANALYZER analyzer_name ] [ WITH DICT tbl_dict_name];

Paramètres

Paramètre Description
idx_name Nom de l'index de texte intégral.
column_name Nom de la colonne à indexer.
WITH ANALYZER analyzer_name Analyseur à utiliser. Omettez cette option pour utiliser l'analyseur par défaut.
WITH DICT tbl_dict_name Dictionnaire personnalisé à appliquer. Pour plus de détails, consultez la rubrique Dictionnaires personnalisés pour les index de texte intégral.

Exemple

L'instruction suivante crée une table comportant six index de texte intégral, un pour chaque analyseur :

CREATE TABLE `tbl_fulltext_demo` (
  `id` int,
  `content` varchar,
  `content_alinlp` varchar,
  `content_ik` varchar,
  `content_standard` varchar,
  `content_ngram` varchar,
  `content_edge_ngram` varchar,
  FULLTEXT INDEX fidx_c(`content`),                                           -- Default analyzer
  FULLTEXT INDEX fidx_alinlp(`content_alinlp`) WITH ANALYZER alinlp,
  FULLTEXT INDEX fidx_ik(`content_ik`) WITH ANALYZER ik,
  FULLTEXT INDEX fidx_standard(`content_standard`) WITH ANALYZER standard,
  FULLTEXT INDEX fidx_ngram(`content_ngram`) WITH ANALYZER ngram,
  FULLTEXT INDEX fidx_edge_ngram(`content_edge_ngram`) WITH ANALYZER edge_ngram,
  PRIMARY KEY (`id`)
) DISTRIBUTED BY HASH(id);

Aperçu des résultats de tokenisation

Avant de choisir un analyseur, testez la manière dont il tokenise votre texte. Chaque analyseur dispose d'une fonction de test dédiée qui renvoie la liste des jetons pour une chaîne d'entrée donnée.

Ajoutez le préfixe /*+ mode=two_phase*/ à toutes les requêtes de test de tokenisation, sinon elles ne s'exécuteront pas correctement.

Les exemples suivants utilisent la même entrée — 'Hello world' — pour tous les analyseurs, afin que vous puissiez comparer directement leurs résultats :

Analyseur Fonction de test **Résultat pour 'Hello world'**
AliNLP fulltext_alinlp_test() [hello, , world]
IK fulltext_ik_test() [hello, world, or]
Standard fulltext_standard_test() [hello, world]
Ngram (taille de jeton par défaut : 2) fulltext_ngram_test() [he, el, ll, lo, o , w, wo, or, rl, ld]
Edge_ngram (min : 1, max : 2) fulltext_edge_ngram_test() [h, he]

Utilisation :

/*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');
[hello, world, or]
L'analyseur Pattern ne prend pas en charge les tests de tokenisation basés sur SQL.

Analyseur AliNLP

Idéal pour le texte chinois et multilingue. Développé par Alibaba Cloud et DAMO Academy à l'aide de technologies de traitement du langage naturel (NLP), l'analyseur AliNLP segmente le texte en langage naturel continu en éléments significatifs. Il prend en charge les dictionnaires personnalisés pour les entités définies par l'utilisateur et les mots vides.

Langues prises en charge : chinois, anglais, indonésien, malais, thaï, vietnamien, français, espagnol

  • Résultat de la tokenisation pour un texte en anglais :

    /*+ mode=two_phase*/ SELECT fulltext_alinlp_test('Hello world');

    Résultat :

    [hello,  , world]

Les exemples suivants illustrent les résultats de tokenisation avec les configurations par défaut :

Paramètres de configuration

Paramètre Description Valeur par défaut
FULLTEXT_SPLIT_GRANULARITY Granularité de segmentation. Entier compris entre 2 et 8. 2
FULLTEXT_FILTER_ST_CONVERT_ENABLED Active la conversion des racines (par exemple, menman, carscar). false
FULLTEXT_TOKENIZER_CASE_SENSITIVE Indique si la tokenisation est sensible à la casse. false

Analyseur IK

Idéal pour le texte chinois. L'analyseur IK est un analyseur chinois léger open source. Il prend en charge deux modes de segmentation — granularité grossière et granularité fine — et accepte les dictionnaires personnalisés pour les entités et les mots vides.

  • Résultat de la tokenisation pour un texte en anglais :

    /*+ mode=two_phase*/ SELECT fulltext_ik_test('Hello world');

    Résultat :

    [hello, world, or]

Les exemples suivants illustrent les résultats de tokenisation avec les configurations par défaut :

Paramètres de configuration

Paramètre Description Valeur par défaut
CSTORE_IK_SEGMENTER_USE_SMART_ENABLE Mode de segmentation. true = granularité grossière (mode ik_smart) ; false = granularité fine (mode ik_max_word). false
CSTORE_IK_SEGMENTER_LETTER_MIN_LENGTH Longueur minimale du segment. Entier compris entre 2 et 16. 3
CSTORE_IK_SEGMENTER_LETTER_MAX_LENGTH Longueur maximale du segment. Entier compris entre 2 et 256. 128

Analyseur Standard

Idéal pour le texte anglais. L'analyseur Standard applique des règles spécifiques à la langue : pour l'anglais, il met le texte en minuscules et supprime les mots vides et la ponctuation avant la tokenisation ; pour le chinois, il divise le texte en caractères individuels. Il prend en charge les dictionnaires personnalisés.

  • Résultat de la tokenisation pour un texte en anglais :

    /*+ mode=two_phase*/ SELECT fulltext_standard_test('Hello world');

    Résultat :

    [hello, world]

Les exemples suivants illustrent les résultats de tokenisation avec les configurations par défaut :

Paramètres de configuration

Paramètre Description Valeur par défaut
FULLTEXT_MAX_TOKEN_LENGTH Longueur maximale du jeton. Entier compris entre 1 et 1 048 576. 255

Analyseur Ngram

Idéal pour la recherche de sous-chaînes floues. L'analyseur Ngram divise le texte en toutes les sous-chaînes possibles d'une longueur fixe, ce qui le rend efficace pour les requêtes de correspondance partielle. Il prend en charge les dictionnaires personnalisés.

  • Résultat de la tokenisation pour un texte en anglais :

    /*+ mode=two_phase*/ SELECT fulltext_ngram_test('Hello world');

    Résultat :

    [he, el, ll, lo, o ,  w, wo, or, rl, ld]

Les exemples suivants illustrent les résultats de tokenisation avec les configurations par défaut :

Paramètres de configuration

Paramètre Description Valeur par défaut
FULLTEXT_NGRAM_TOKEN_SIZE Longueur du jeton. Entier compris entre 1 et 8. 2

Analyseur Edge_ngram

Idéal pour la recherche par préfixe et la saisie semi-automatique (recherche pendant la frappe). L'analyseur Edge_ngram génère des jetons préfixes de longueur croissante — par exemple, h, puis he — ce qui le rend idéal pour la correspondance des mots depuis le début. Il prend en charge les dictionnaires personnalisés.

Conseil : Edge_ngram fonctionne bien lorsque le terme de recherche apparaît au début des mots. Pour la correspondance floue de sous-chaînes n'importe où dans le texte, utilisez plutôt l'analyseur Ngram.
  • Résultats de la tokenisation d'un texte en anglais.

    /*+ mode=two_phase*/ SELECT fulltext_edge_ngram_test('Hello world');

    Résultat :

    [h, he]

Les exemples suivants illustrent les résultats de tokenisation avec les configurations par défaut :

Paramètres de configuration

Paramètre Description Valeur par défaut
FULLTEXT_MIN_GRAM_SIZE Longueur minimale du préfixe. Entier compris entre 1 et 8. 1
FULLTEXT_MAX_GRAM_SIZE Longueur maximale du préfixe. Entier compris entre 1 et 16. Doit être supérieur à FULLTEXT_MIN_GRAM_SIZE. 2

Analyseur Pattern

Idéal pour les délimiteurs personnalisés. L'analyseur Pattern tokenise le texte en le divisant selon un motif d'expression régulière que vous définissez. Il ne prend pas en charge les dictionnaires personnalisés ni les tests de tokenisation basés sur SQL.

Syntaxe

FULLTEXT INDEX fidx_name(`column_name`) WITH ANALYZER pattern_tokenizer("Custom_rule") [ WITH DICT `tbl_dict_name` ];

Custom_rule est l'expression régulière qui définit le motif de division.

Paramètres de configuration

Paramètre Description Valeur par défaut
FULLTEXT_TOKENIZER_CASE_SENSITIVE Indique si la tokenisation est sensible à la casse. false

Gérer la configuration de l'analyseur

Interroger les paramètres de configuration

Utilisez l'une des méthodes ci-dessous pour vérifier la valeur actuelle d'un paramètre de configuration.

Méthode 1 : SHOW adb_config

Renvoie les valeurs par défaut et modifiées.

show adb_config key = '<analyzer_param>';

Exemple :

show adb_config key = 'FULLTEXT_NGRAM_TOKEN_SIZE';

Méthode 2 : SELECT depuis INFORMATION_SCHEMA

Renvoie uniquement les valeurs modifiées. Si un paramètre n'a jamais été modifié par rapport à sa valeur par défaut, cette requête renvoie null.

SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = '<analyzer_param>';

Exemple :

SELECT `key`, `value`, `update_time`
FROM INFORMATION_SCHEMA.kepler_meta_configs
WHERE key = 'FULLTEXT_NGRAM_TOKEN_SIZE';

Modifier les paramètres de configuration

set adb_config <analyzer_param>=<value>;

Exemple :

set adb_config FULLTEXT_NGRAM_TOKEN_SIZE=3;