Skip to content

textsearch_intl

Multilingual full text search with ICU segmentation, normalization and n-gram matching

Overview

PackageVersionCategoryLicenseLanguage
textsearch_intl1.0FTSPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
2290textsearch_intlNoYesNoYesNoYes-
Relatedunaccent

Renamed from icu_parser; PGXN distribution 1.0.1 retains SQL/control 1.0. No direct upgrade from the old name. PostgreSQL 14-18, UTF8 and unaccent required; rebuild affected indexes after an ICU major-version change. Pigsty RPM packages are 1.0.1 on EL8-10, both architectures; DEB remains 1.0.0.

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY1.01817161514textsearch_intlunaccent
RPMPIGSTY1.0.11817161514textsearch_intl_$v-
DEBPIGSTY1.0.01817161514postgresql-$v-textsearch-intl-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
el8.aarch64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
el9.x86_64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
el9.aarch64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
el10.x86_64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
el10.aarch64
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
PIGSTY 1.0.1
d12.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d12.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d13.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
d13.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u22.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u22.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u24.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u24.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u26.x86_64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
u26.aarch64
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0
PIGSTY 1.0.0

Build

You can build the RPM / DEB packages for textsearch_intl using pig build:

pig build pkg textsearch_intl         # build RPM / DEB packages

Install

You can install textsearch_intl directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

Install
pig install textsearch_intl;          # Install for current active PG version
pig
pig ext install -y textsearch_intl -v 18  # PG 18
pig ext install -y textsearch_intl -v 17  # PG 17
pig ext install -y textsearch_intl -v 16  # PG 16
pig ext install -y textsearch_intl -v 15  # PG 15
pig ext install -y textsearch_intl -v 14  # PG 14
dnf
dnf install -y textsearch_intl_18       # PG 18
dnf install -y textsearch_intl_17       # PG 17
dnf install -y textsearch_intl_16       # PG 16
dnf install -y textsearch_intl_15       # PG 15
dnf install -y textsearch_intl_14       # PG 14
apt
apt install -y postgresql-18-textsearch-intl   # PG 18
apt install -y postgresql-17-textsearch-intl   # PG 17
apt install -y postgresql-16-textsearch-intl   # PG 16
apt install -y postgresql-15-textsearch-intl   # PG 15
apt install -y postgresql-14-textsearch-intl   # PG 14

Create Extension:

CREATE EXTENSION textsearch_intl CASCADE;  -- requires: unaccent

Usage

Sources:

textsearch_intl combines ICU word segmentation, normalization and n-gram matching for multilingual text search. It requires PostgreSQL 14 or later, a UTF8 database, ICU and unaccent; upstream CI covers PostgreSQL 14–18.

Name and Version

The project renamed icu_parser to textsearch_intl on 2026-10-09 and restarted versioning. The renamed PGXN distribution 1.0.1 was published on 2026-10-22. Its SQL/control version remains 1.0; the distribution number is not a SQL upgrade target. There is no direct SQL upgrade script from the old name: inspect dependent objects and plan their recreation before migrating.

Core Workflow

CREATE EXTENSION textsearch_intl CASCADE;
SELECT alias, token FROM ts_debug('intl_simple', '東京駅前ラーメン店 ร้านกาแฟ Café');
SELECT to_tsvector('intl_search', 'Café') @@ phraseto_tsquery('intl_search', 'cafe');
SELECT to_tsvector('intl_search_ngram', '행복한편의점')
       @@ phraseto_tsquery('intl_search_ngram', '편의점');
SELECT intl_icu_version();

Search Configurations

  • intl_simple uses the intl parser and preserves accents and character widths.
  • intl_search combines intl_normalize, unaccent and intl_join for normalized whole-word search. Word joining is off by default.
  • intl_search_ngram uses intl_runs and intl_ngram to match inside Korean/CJK tokens and unspaced Thai, Lao, Khmer and Burmese runs. N-grams can overmatch and increase index size.

Operational Boundaries

Install with a superuser; the extension is relocatable, is not marked trusted and needs no preload. Prefer phraseto_tsquery() when word order matters. intl_icu_version() reports the loaded ICU version; rebuild affected indexes after an ICU major-version change. ICU segmentation is not Japanese morphological analysis, and partial CJK prefix queries remain unreliable.

Was this page helpful?