Todos os produtos
Search
Central de documentação

PolarDB:zhparser (tokenização de chinês)

Última atualização: Jun 28, 2026

O zhparser é uma extensão do PostgreSQL para busca full-text em chinês. Essa extensão segmenta textos em chinês em palavras, o que permite criar índices full-text e executar consultas textuais em conteúdo nesse idioma no PolarDB for PostgreSQL.

Ative o zhparser

Etapa 1: Instale a extensão e crie uma configuração de busca textual.

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

Etapa 2: (Opcional) Configure os parâmetros de segmentação.

Defina parâmetros no nível da role para controlar como o zhparser segmenta o texto:

Parâmetro

Padrão

Descrição

zhparser.multi_short

off

Combina palavras curtas em segmentos compostos

Para ativar o multi_short para todas as roles:

ALTER ROLE ALL SET zhparser.multi_short = on;

Etapa 3: Teste o parser.

Execute um teste rápido para verificar se a extensão funciona corretamente:

SELECT * FROM ts_parse('zhparser', 'hello world! 2010年保障房建设在全国范围内获全面启动,从中央到地方纷纷加大了保障房的建设和投入力度。2011年,保障房进入了更大规模的建设阶段。住房城乡建设部党组书记、部长姜伟新去年底在全国住房城乡建设工作会议上表示,要继续推进保障性安居工程建设。');

Verifique o vetor de busca textual e as funções de consulta:

SELECT to_tsvector('testzhcfg', '"今年保障房新开工数量虽然有所下调,但实际的年度在建规模以及竣工规模会超以往年份,相对应的对资金的需求也会创历史纪录。"陈国强说。在他看来,与2011年相比,2012年的保障房建设在资金配套上的压力将更为严峻。');
SELECT to_tsquery('testzhcfg', '保障房资金压力');

Crie um índice full-text

Use um Índice Invertido Generalizado (GIN) para indexar textos em chinês e obter buscas full-text rápidas. O exemplo a seguir cria um índice GIN na coluna name da tabela t1:

-- Create the GIN index
CREATE INDEX idx_t1 ON t1 USING gin (to_tsvector('zhcfg', upper(name)));

-- Query using the index
SELECT * FROM t1 WHERE to_tsvector('zhcfg', upper(t1.name)) @@ to_tsquery('zhcfg', '(防火)');

Personalizar um dicionário de segmentação de palavras em chinês

O dicionário padrão abrange palavras comuns em chinês. Para termos específicos de domínio, como jargões do setor ou nomes de produtos, adicione segmentos de palavras personalizados à tabela pg_ts_custom_word.

Etapa 1: Verifique o resultado atual da segmentação.

SELECT to_tsquery('testzhcfg', '保障房资金压力');

Etapa 2: Adicione o segmento de palavra personalizado.

INSERT INTO pg_ts_custom_word VALUES ('保障房资');

Etapa 3: Sincronize o dicionário e reconecte-se.

SELECT zhprs_sync_dict_xdb();

Após a conclusão da sincronização, feche e reabra a conexão:

\c

Etapa 4: Valide o novo resultado da segmentação.

SELECT to_tsquery('testzhcfg', '保障房资金压力');

Limites

Limite

Valor

Comportamento quando excedido

Segmentos de palavras personalizados

1.000.000

Segmentos além do limite são ignorados

Tamanho do segmento de palavra

128 bytes

Bytes acima de 128 são truncados

Os dicionários personalizado e padrão permanecem ativos simultaneamente.

Sempre que adicionar, exclua ou atualize segmentos de palavras, execute SELECT zhprs_sync_dict_xdb(); e reconecte-se para aplicar as alterações.