Este tópico descreve como usar a extensão pg_jieba para executar pesquisas de texto completo em chinês em uma instância ApsaraDB RDS for PostgreSQL.
Pré-requisitos
Sua instância RDS executa PostgreSQL 10.0 ou uma versão posterior.
Atualize a versão secundária do mecanismo da instância RDS caso a versão principal atenda aos requisitos, mas a extensão ainda não seja compatível. Por exemplo, se sua instância RDS executa PostgreSQL 17, a versão secundária do mecanismo deve ser 20241030 ou posterior. Para obter mais informações, consulte Update the minor engine version.
-
Adicione pg_jieba ao valor do parâmetro shared_preload_libraries da sua instância RDS.
Para obter mais informações sobre como adicionar pg_jieba ao valor do parâmetro shared_preload_libraries, consulte Configure instance parameters.
Métodos para usar a extensão pg_jieba
-
Crie a extensão pg_jieba.
CREATE EXTENSION pg_jieba;NotaSomente contas privilegiadas têm autorização para executar o comando acima.
-
Exclua a extensão pg_jieba.
DROP EXTENSION pg_jieba;NotaSomente contas privilegiadas têm autorização para executar o comando acima.
-
Exemplo 1:
SELECT * FROM to_tsvector('jiebacfg', '小明硕士毕业于中国科学院计算所,后在日本京都大学深造'); to_tsvector -------------------------------------------------------------------------------------------------------------- '中国科学院':5 '于':4 '后':8 '在':9 '小明':1 '日本京都大学':10 '毕业':3 '深造':11 '硕士':2 '计算所':6 ',':7 (1 row) -
Exemplo 2:
SELECT * FROM to_tsvector('jiebacfg', '李小福是创新办主任也是云计算方面的专家'); to_tsvector ------------------------------------------------------------------------------------------- '专家':11 '主任':5 '也':6 '云计算':8 '创新':3 '办':4 '方面':9 '是':2,7 '李小福':1 '的':10 (1 row)
Recursos estendidos
Consulte os recursos estendidos da extensão pg_jieba com base na versão instalada.
Execute a seguinte instrução SQL para consultar a versão da extensão pg_jieba:
SELECT * FROM pg_available_extensions WHERE name='pg_jieba';
Extended features in version 1.1.0
-
A extensão pg_jieba permite configurar múltiplos dicionários personalizados e alternar entre eles.
-- 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) -
A extensão pg_jieba permite visualizar os resultados da segmentação de texto com base em deslocamentos.
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)
Extended features in version 1.2.0
A função
jieba_load_user_dict()foi otimizada para reduzir o uso de CPU e de memória.-
Um novo parâmetro foi adicionado à função
jieba_load_user_dict()para especificar se os dicionários personalizados devem ser usados durante a recuperação.-
Sintaxe
jieba_load_user_dict(parameter1, parameter2) -
Descrição dos parâmetros
Parâmetro
Descrição
parameter1
Especifica o número de sequência do dicionário personalizado a ser carregado.
parameter2
Especifica se o dicionário padrão deve ser carregado.
-
0: carrega o dicionário padrão.
-
1: não carrega o dicionário padrão.
-
-
Exemplos
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)NotaSe a tabela
jieba_user_dictou a funçãojieba_load_user_dict()não existir, atualize a versão secundária do mecanismo da instância RDS para 20220730 e reinstale a extensão.Para obter mais informações sobre como atualizar a versão secundária do mecanismo, consulte Update the minor engine version of an ApsaraDB RDS for PostgreSQL instance.
-
Execute as seguintes instruções para reinstalar a extensão:
DROP EXTENSION pg_jieba; CREATE EXTENSION pg_jieba;
-
Referências
Para obter mais informações sobre como usar a extensão pg_jieba, consulte a documentação oficial do pg_jieba.