Todos os produtos
Search
Central de documentação

PolarDB:pg_jieba (tokenização em chinês)

Última atualização: Aug 22, 2026

O pg_jieba é uma extensão de terceiros e código aberto para busca de texto completo em chinês.

Pré-requisitos

O PolarDB for PostgreSQL oferece suporte às seguintes versões:

  • PostgreSQL 15 (versão secundária do mecanismo 15.7.2.0 ou posterior)

  • PostgreSQL 14 (versão secundária do mecanismo 14.5.2.0 ou posterior)

  • PostgreSQL 11 (versão secundária do mecanismo 1.1.28 ou posterior)

Nota

Execute a instrução a seguir para visualizar a versão secundária do mecanismo do seu cluster PolarDB for PostgreSQL:

  • PostgreSQL 15 e PostgreSQL 14

    SELECT version();
  • PostgreSQL 11

    SHOW polar_version;

Introdução

A extensão pg_jieba fornece as seguintes configurações de busca de texto:

  • jiebacfg: Modo preciso. Divide o texto com precisão, sem gerar palavras redundantes.

  • jiebaqry: Modo completo. Verifica todas as possíveis palavras correspondentes no texto, podendo produzir termos redundantes.

  • jiebacfg_pos: Modo preciso com posição. Adiciona informações de índice de posição aos resultados do modo preciso. Também exibe stop words, ignoradas no modo preciso por aparecerem com muita frequência e não serem úteis nas buscas.

Uso

Instale ou desinstalar a extensão

Nota

Somente contas privilegiadas podem executar comandos para instalar ou desinstalar a extensão.

  • Instale a extensão:

    CREATE EXTENSION pg_jieba;
  • Desinstale a extensão:

    DROP EXTENSION pg_jieba;

Exemplos

Exemplo 1

  • Use a configuração do modo preciso jiebacfg:

    SELECT * FROM to_tsvector('jiebacfg', 'Xiaoming, a master''s graduate from the Institute of Computing Technology, Chinese Academy of Sciences, later pursued advanced studies at Kyoto University in Japan');

    Resultado retornado:

                                       to_tsvector
    ----------------------------------------------------------------------------------
     'Chinese Academy of Sciences':5 'Xiaoming':1 'Kyoto University':10 'graduate':3 'advanced studies':11 'master''s':2 'Institute of Computing Technology':6
    (1 row)
  • Use a configuração do modo completo jiebaqry:

    SELECT * FROM to_tsvector('jiebaqry', 'Xiaoming, a master''s graduate from the Institute of Computing Technology, Chinese Academy of Sciences, later pursued advanced studies at Kyoto University in Japan');

    Resultado retornado:

                                                                               to_tsvector
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     'China':5 'Chinese Academy of Sciences':9 'Kyoto':16 'University':17 'Academy':7 'Xiaoming':1 'Japan':15 'Kyoto University':18 'graduate':3 'advanced studies':19 'master''s':2 'Science':6 'Academy of Sciences':8 'Computing':10 'Institute of Computing Technology':11
    (1 row)
  • Use a configuração do modo preciso com posição jiebacfg_pos:

    SELECT * FROM to_tsvector('jiebacfg_pos', 'Xiaoming, a master''s graduate from the Institute of Computing Technology, Chinese Academy of Sciences, later pursued advanced studies at Kyoto University in Japan');

    Resultado retornado:

                                                                   to_tsvector                                                                
    ------------------------------------------------------------------------------------------------------------------------------------------
     'Chinese Academy of Sciences:7':5 'from:6':4 'later:16':8 'at:17':9 'Xiaoming:0':1 'Kyoto University:18':10 'graduate:4':3 'advanced studies:24':11 'master''s:2':2 'Institute of Computing Technology:12':6 ',:15':7
    (1 row)

Exemplo 2

  • Use a configuração do modo preciso jiebacfg:

    SELECT * FROM to_tsvector('jiebacfg', 'Li Xiaofu is the director of the innovation office and an expert in the cloud computing field');

    Resultado retornado:

                                to_tsvector
    -------------------------------------------------------------------
     'expert':11 'director':5 'cloud computing':8 'innovation':3 'office':4 'field':9 'Li Xiaofu':1
    (1 row)
  • Use a configuração do modo completo jiebaqry:

    SELECT * FROM to_tsvector('jiebaqry', 'Li Xiaofu is the director of the innovation office and an expert in the cloud computing field');

    Resultado retornado:

                                     to_tsvector
    -----------------------------------------------------------------------------
     'expert':12 'director':5 'cloud computing':9 'innovation':3 'office':4 'field':10 'Li Xiaofu':1 'computing':8
    (1 row)
  • Use a configuração do modo preciso com posição jiebacfg_pos:

    SELECT * FROM to_tsvector('jiebacfg_pos', 'Li Xiaofu is the director of the innovation office and an expert in the cloud computing field');

    Resultado retornado:

                                                            to_tsvector                                                        
    ---------------------------------------------------------------------------------------------------------------------------
     'expert:17':11 'director:7':5 'also:9':6 'cloud computing:11':8 'innovation:4':3 'office:6':4 'field:14':9 'is:10':7 'is:3':2 'Li Xiaofu:0':1 'of:16':10
    (1 row)

Recursos estendidos

O pg_jieba permite configure e alternar entre vários dicionários personalizados.

Nota

Para usar o recurso de dicionário personalizado, adicione pg_jieba ao parâmetro shared_preload_libraries. Defina esse parâmetro no console. Para mais informações, consulte Set cluster parameters. Como a modificação desse parâmetro reinicia o cluster, planeje suas operações adequadamente e proceda com cautela.

  1. Insira dados no dicionário 0. Por padrão, o dicionário 0 é utilizado e possui peso 10.

    INSERT INTO jieba_user_dict VALUES ('Alibaba Cloud');
    INSERT INTO jieba_user_dict VALUES ('R&D engineer',0,10);
  2. Tokenize o texto usando o dicionário Jieba padrão.

    SELECT * FROM to_tsvector('jiebacfg', 'zth is an R&D engineer at Alibaba Cloud');

    Resultado retornado:

                         to_tsvector
    ------------------------------------------------------
     'zth':1 'an':6 'Cloud':4 'engineer':8 'R&D':7 'Ali':3
    (1 row)
                        
  3. Alterne para o dicionário personalizado 0.

    SELECT jieba_load_user_dict(0);

    Resultado retornado:

     jieba_load_user_dict
    ----------------------
    
    (1 row)
  4. Tokenize o texto usando o dicionário 0.

    SELECT * FROM to_tsvector('jiebacfg', 'zth is an R&D engineer at Alibaba Cloud');

    Resultado retornado:

                    to_tsvector
    --------------------------------------------
     'zth':1 'an':5 'R&D engineer':6 'Alibaba Cloud':3
    (1 row)