pg_pinyin
Overview
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 2190 | pg_pinyin | No | Yes | No | Yes | No | Yes | pinyin |
| Related | pg_cjk_parser pg_jieba pg_bigm zhparser pgroonga pg_tokenizer icu_ext pg_xenophile gb18030_2022 |
|---|
optional tokenizer-input overload can integrate with pg_search.
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.0.5 | 1817161514 | pg_pinyin | - |
| RPM | PIGSTY | 0.0.5 | 1817161514 | pg_pinyin_$v | - |
| DEB | PIGSTY | 0.0.5 | 1817161514 | postgresql-$v-pinyin | - |
Build
You can build the RPM / DEB packages for pg_pinyin using pig build:
Install
You can install pg_pinyin directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Create Extension:
Usage
Sources:
pg_pinyin romanizes Chinese text and exposes tokenizer and query helpers for search applications. Use pg_pinyin to create stable Pinyin search keys, tokenize Han text, or expand Pinyin input into a pg_search regular-expression query.
Version 0.0.5 is primarily a packaging and toolchain update; its upgrade script makes no SQL catalog changes, so the user-facing API remains compatible with 0.0.4.
Create the Extension
CREATE EXTENSION pg_pinyin;
The extension is relocatable and does not require shared_preload_libraries or a server restart.
Romanize Text
Romanize character by character or use word-aware segmentation:
SELECT pinyin_char_romanize('重庆');
SELECT pinyin_word_romanize('重庆火锅');
SELECT pinyin_word_romanize('重庆火锅', ' ');
Both functions accept an optional suffix inserted after each emitted Pinyin unit. Character mode is deterministic per character; word mode uses the bundled word dictionary to resolve contextual pronunciations.
Use pg_search Tokenizer Input
Word romanization also accepts a pg_search tokenizer result when that extension is available:
SELECT pinyin_word_romanize(
description::pdb.icu::text[]
)
FROM documents;
The overload returns romanized text; it does not expose a row-per-token API. Use the plain-text overload when pg_search tokenization is not required.
Build a pg_search Query
When pg_search was installed before pg_pinyin, pg_pinyin provides a typed overload that returns pdb.query:
SELECT *
FROM documents
WHERE id @@@ pinyin_regex_phrase(
'chong qing',
slope => 1,
max_expansions => 64,
generated_pinyin => true
);
If pg_search is absent, the same entry point is installed as an error-reporting stub rather than silently returning a different type. Install dependencies in the intended order and test the function signature after upgrades.
Object Index
- pinyin_char_romanize(text [, suffix]) returns character-based Pinyin text.
- pinyin_word_romanize(text [, suffix]) returns dictionary-segmented Pinyin text.
- pinyin_word_romanize(tokenizer_input [, suffix]) accepts a pg_search tokenizer result.
- pinyin_regex_phrase(text, slope, max_expansions, generated_pinyin) constructs a pg_search Pinyin phrase query when that integration is available.
- pinyin_regex_phrase_patterns is an internal pattern-building helper; prefer the public query function.
Operational Notes
The extension ships generated character and word dictionaries in its pinyin schema. Treat those tables as extension-managed data rather than application tables. Romanization is normalization, not translation, and ambiguous or domain-specific readings may require application-side review.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)