Cette rubrique explique comment utiliser l'extension pg_jieba pour effectuer des recherches en texte intégral en chinois sur une instance ApsaraDB RDS for PostgreSQL.
Prérequis
Votre instance RDS exécute PostgreSQL 10.0 ou une version ultérieure.
Si la version majeure du moteur de votre instance RDS est conforme aux exigences mais que l'extension n'est toujours pas prise en charge, mettez à jour la version mineure du moteur. Par exemple, si votre instance RDS exécute PostgreSQL 17, la version mineure du moteur doit être 20241030 ou ultérieure. Pour plus d'informations, consultez Mettre à jour la version mineure du moteur.
-
pg_jieba a été ajouté à la valeur du paramètre shared_preload_libraries de votre instance RDS.
Pour savoir comment ajouter pg_jieba à la valeur du paramètre shared_preload_libraries , consultez Définir les paramètres de l'instance.
Méthodes d'utilisation de l'extension pg_jieba
-
Créez l'extension pg_jieba.
CREATE EXTENSION pg_jieba;RemarqueSeuls les comptes privilégiés sont autorisés à exécuter la commande ci-dessus.
-
Supprimez l'extension pg_jieba.
DROP EXTENSION pg_jieba;RemarqueSeuls les comptes privilégiés sont autorisés à exécuter la commande ci-dessus.
-
Exemple 1 :
SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造'); to_tsvector -------------------------------------------------------------------------------------------------------------- '中国科学院':5 '于':4 '后':8 '在':9 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6 ',':7 (1 row) -
Exemple 2 :
SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家'); to_tsvector ------------------------------------------------------------------------------------------- '专家':11 '主任':5 '也':6 '云计算':8 '创新':3 '办':4 '方面':9 '是':2,7 '李小福':1 '的':10 (1 row)
Fonctionnalités étendues
Consultez les fonctionnalités étendues de l'extension pg_jieba en fonction de la version installée.
Exécutez l'instruction SQL suivante pour interroger la version de l'extension pg_jieba :
SELECT * FROM pg_available_extensions WHERE name='pg_jieba';
Fonctionnalités étendues de la version 1.1.0
-
L'extension pg_jieba vous permet de configurer plusieurs dictionnaires personnalisés et de basculer entre eux.
-- Insert data into the first custom dictionary. By default, data is inserted into the first custom dictionary. The first custom dictionary is represented by 0. The weight value of the first custom dictionary is 10. INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10); -- Use the dictionary predefined in the pg_jieba extension to segment Chinese text. SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector ------------------------------------------------------ 'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3 (1 row) -- Switch to the first custom dictionary. The jieba_load_user_dict() parameter specifies the sequence number of the custom dictionary. SELECT jieba_load_user_dict(0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 row) -
L'extension pg_jieba permet d'afficher les résultats de segmentation du texte avec les décalages (offsets).
SELECT * FROM to_tsvector('jiebacfg_pos', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------------------------------------------------- 'zth:0':1 '一个:8':6 '云:6':4 '工程师:12':8 '是:3':2 '的:7':5 '研发:10':7 '阿里:4':3'zth:0':1 ' One: 8':6 ' Cloud: 6':4 ' Engineer: 12':8 ' Yes: 3':2':7':5 ' R&D: 10':7 ' Ali: 4':3 (1 row)
Fonctionnalités étendues de la version 1.2.0
La fonction
jieba_load_user_dict()a été optimisée pour réduire son utilisation du CPU et sa consommation de mémoire.-
Un nouveau paramètre a été ajouté à la fonction
jieba_load_user_dict()pour spécifier s'il faut utiliser les dictionnaires personnalisés lors de la récupération des données.-
Syntaxe
jieba_load_user_dict(parameter1, parameter2) -
Description des paramètres
Paramètre
Description
parameter1
Spécifie le numéro de séquence du dictionnaire personnalisé que vous souhaitez charger.
parameter2
Indique s'il faut charger le dictionnaire par défaut.
-
0 : charge le dictionnaire par défaut.
-
1 : ne charge pas le dictionnaire par défaut.
-
-
Exemples
INSERT INTO jieba_user_dict VALUES ('阿里云'); INSERT 0 1 INSERT INTO jieba_user_dict VALUES ('研发工程师',0,10); INSERT 0 1 -- The first 0 indicates the sequence number of the custom dictionary, and the second 0 indicates that the default dictionary is loaded. SELECT jieba_load_user_dict(0,0); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector -------------------------------------------- 'zth':1 '一个':5 '研发工程师':6 '阿里云':3 (1 row) SELECT jieba_load_user_dict(0,1); jieba_load_user_dict ---------------------- (1 row) SELECT * FROM to_tsvector('jiebacfg', 'zth是阿里云的一个研发工程师'); to_tsvector ------------------------------------------------------ 'zth':1 '一个':6 '云':4 '工程师':8 '研发':7 '阿里':3 (1 row)RemarqueSi la table
jieba_user_dictou la fonctionjieba_load_user_dict()n'existe pas, vous devez mettre à jour la version mineure du moteur de votre instance RDS vers 20220730 et réinstaller l'extension.Pour plus d'informations sur la mise à jour de la version mineure du moteur, consultez Mettre à jour la version mineure du moteur d'une instance ApsaraDB RDS for PostgreSQL.
-
Exécutez les instructions suivantes pour réinstaller l'extension :
DROP EXTENSION pg_jieba; CREATE EXTENSION pg_jieba;
-
Références
Pour plus d'informations sur l'utilisation de l'extension pg_jieba, consultez la documentation officielle de pg_jieba.