This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
Category: FTS
FTS: ElasticSearch Alternative with BM25, 2-gram/3-gram Fuzzy Search, Zhparser & Hunspell Segregation Dicts, etc…
FTS category has 19 available extensions:
1 - pg_search
pg_search: Full text search for PostgreSQL using BM25
Overview
PIGSTY 3rd Party Extension: pg_search
: pg_search: Full text search for PostgreSQL using BM25
- Latest Version: 0.15.1
- Postgres Support:
17
,16
,15
,14
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas:
paradedb
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_search_$v
- RPM Ver :
0.15.1
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-search
- DEB Ver :
0.15.1
- DEB Deps: N/A
Packages
Installation
Install pg_search
via the pig
CLI tool:
pig ext install pg_search
Install pg_search
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_search"]}' # -l <cls>
Install pg_search
RPM from YUM repo directly:
dnf install pg_search_17;
dnf install pg_search_16;
dnf install pg_search_15;
dnf install pg_search_14;
Install pg_search
DEB from APT repo directly:
apt install postgresql-17-pg-search;
apt install postgresql-16-pg-search;
apt install postgresql-15-pg-search;
apt install postgresql-14-pg-search;
Enable pg_search
extension on PostgreSQL cluster:
CREATE EXTENSION pg_search;
Usage
https://docs.paradedb.com/documentation/getting-started/quickstart
CREATE EXTENSION pg_search;
ALTER SYSTEM SET paradedb.pg_search_telemetry TO 'off';
CALL paradedb.create_bm25_test_table(
schema_name => 'public',
table_name => 'mock_items'
);
SELECT description, rating, category FROM mock_items LIMIT 3;
CALL paradedb.create_bm25(
index_name => 'search_idx',
schema_name => 'public',
table_name => 'mock_items',
key_field => 'id',
text_fields => paradedb.field('description', tokenizer => paradedb.tokenizer('en_stem')) ||
paradedb.field('category'),
numeric_fields => paradedb.field('rating')
);
SELECT description, rating, category
FROM search_idx.search('(description:keyboard OR category:electronics) AND rating:>2',limit_rows => 5);
CALL paradedb.create_bm25(
index_name => 'ngrams_idx',
schema_name => 'public',
table_name => 'mock_items',
key_field => 'id',
text_fields => paradedb.field('description', tokenizer => paradedb.tokenizer('ngram', min_gram => 4, max_gram => 4, prefix_only => false)) ||
paradedb.field('category')
);
SELECT description, rating, category
FROM ngrams_idx.search('description:blue');
2 - pgroonga
Use Groonga as index, fast full text search platform for all languages!
Overview
PIGSTY 3rd Party Extension: pgroonga
: Use Groonga as index, fast full text search platform for all languages!
- Latest Version: 4.0.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pgroonga_$v*
- RPM Ver :
4.0.0
- RPM Deps:
groonga-libs
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pgroonga
- DEB Ver :
4.0.0
- DEB Deps:
libgroonga0
Packages
Installation
Install pgroonga
via the pig
CLI tool:
Install pgroonga
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pgroonga"]}' # -l <cls>
Install pgroonga
RPM from YUM repo directly:
dnf install pgroonga_17*;
dnf install pgroonga_16*;
dnf install pgroonga_15*;
dnf install pgroonga_14*;
dnf install pgroonga_13*;
Install pgroonga
DEB from APT repo directly:
apt install postgresql-17-pgroonga;
apt install postgresql-16-pgroonga;
apt install postgresql-15-pgroonga;
apt install postgresql-14-pgroonga;
apt install postgresql-13-pgroonga;
Enable pgroonga
extension on PostgreSQL cluster:
CREATE EXTENSION pgroonga;
Usage
- https://pgroonga.github.io/
- News: It lists release information.
- Overview: It describes about PGroonga.
- Install: It describes how to install PGroonga.
- Upgrade: It describes how to upgrade PGroonga.
- Uninstall: It describes how to uninstall PGroonga.
- Tutorial: It describes how to use PGroonga step by step.
- FAQ: Frequently asked questions.
- How to: It describes about useful information for specific situations.
- Reference: It describes details for each features such as options, functions and operators.
- Troubleshooting: It describes how to fix troubles.
- Community: It introduces about PGroonga community.
- Users: It lists PGroonga users.
- Development: It describes how to develop PGroonga.
Here’s a quick tutorial about how to use PGroonga:
CREATE EXTENSION IF NOT EXISTS pgroonga;
CREATE TABLE memos
(
id integer,
content text
);
CREATE INDEX pgroonga_content_index ON memos USING pgroonga (content);
INSERT INTO memos VALUES (1, 'PostgreSQL is a relational database management system.');
INSERT INTO memos VALUES (2, 'Groonga is a fast full text search engine that supports all languages.');
INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga as index.');
INSERT INTO memos VALUES (4, 'There is groonga command.');
SET enable_seqscan = off;
-- now let's query pgroonga
SELECT * FROM memos WHERE content &@ 'engine';
-- id | content
-- ----+------------------------------------------------------------------------
-- 2 | Groonga is a fast full text search engine that supports all languages.
-- (1 row)
SELECT * FROM memos WHERE content &@~ 'PGroonga OR PostgreSQL';
-- id | content
-- ----+----------------------------------------------------------------
-- 3 | PGroonga is a PostgreSQL extension that uses Groonga as index.
-- 1 | PostgreSQL is a relational database management system.
-- (2 rows)
SELECT * FROM memos WHERE content LIKE '%engine%';
-- id | content
-- ----+------------------------------------------------------------------------
-- 2 | Groonga is a fast full text search engine that supports all languages.
-- (1 row)
3 - pgroonga_database
PGroonga database management module
Overview
PIGSTY 3rd Party Extension: pgroonga
: PGroonga database management module
- Latest Version: 4.0.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pgroonga_$v*
- RPM Ver :
4.0.0
- RPM Deps:
groonga-libs
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pgroonga
- DEB Ver :
4.0.0
- DEB Deps:
libgroonga0
Packages
Installation
Install pgroonga_database
via the pig
CLI tool:
pig ext install pgroonga; # Extension Namepig ext install pgroonga_database; # normalized package name
Install pgroonga
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pgroonga"]}' # -l <cls>
Install pgroonga
RPM from YUM repo directly:
dnf install pgroonga_17*;
dnf install pgroonga_16*;
dnf install pgroonga_15*;
dnf install pgroonga_14*;
dnf install pgroonga_13*;
Install pgroonga
DEB from APT repo directly:
apt install postgresql-17-pgroonga;
apt install postgresql-16-pgroonga;
apt install postgresql-15-pgroonga;
apt install postgresql-14-pgroonga;
apt install postgresql-13-pgroonga;
Enable pgroonga_database
extension on PostgreSQL cluster:
CREATE EXTENSION pgroonga_database;
4 - pg_bigm
create 2-gram (bigram) index for faster full text search.
Overview
MIXED 3rd Party Extension: pg_bigm
: create 2-gram (bigram) index for faster full text search.
- Latest Version: 1.2
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PGDG
- RPM Name:
pg_bigm_$v*
- RPM Ver :
1.2
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-bigm
- DEB Ver :
1.2
- DEB Deps: N/A
Packages
Installation
Install pg_bigm
via the pig
CLI tool:
Install pg_bigm
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_bigm"]}' # -l <cls>
Install pg_bigm
RPM from YUM repo directly:
dnf install pg_bigm_17*;
dnf install pg_bigm_16*;
dnf install pg_bigm_15*;
dnf install pg_bigm_14*;
dnf install pg_bigm_13*;
Install pg_bigm
DEB from APT repo directly:
apt install postgresql-17-pg-bigm;
apt install postgresql-16-pg-bigm;
apt install postgresql-15-pg-bigm;
apt install postgresql-14-pg-bigm;
apt install postgresql-13-pg-bigm;
Enable pg_bigm
extension on PostgreSQL cluster:
CREATE EXTENSION pg_bigm;
5 - zhparser
a parser for full-text search of Chinese
Overview
PIGSTY 3rd Party Extension: zhparser
: a parser for full-text search of Chinese
- Latest Version: 2.3
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
zhparser_$v*
- RPM Ver :
2.3
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-zhparser
- DEB Ver :
2.3
- DEB Deps: N/A
Packages
Installation
Install zhparser
via the pig
CLI tool:
Install zhparser
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["zhparser"]}' # -l <cls>
Install zhparser
RPM from YUM repo directly:
dnf install zhparser_17*;
dnf install zhparser_16*;
dnf install zhparser_15*;
dnf install zhparser_14*;
dnf install zhparser_13*;
Install zhparser
DEB from APT repo directly:
apt install postgresql-17-zhparser;
apt install postgresql-16-zhparser;
apt install postgresql-15-zhparser;
apt install postgresql-14-zhparser;
apt install postgresql-13-zhparser;
Enable zhparser
extension on PostgreSQL cluster:
CREATE EXTENSION zhparser;
6 - pg_bestmatch
Generate BM25 sparse vector inside PostgreSQL
Overview
PIGSTY 3rd Party Extension: pg_bestmatch
: Generate BM25 sparse vector inside PostgreSQL
- Latest Version: 0.0.1
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Explicit Loading Required
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas:
bm_catalog
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_bestmatch_$v
- RPM Ver :
0.0.1
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-bestmatch
- DEB Ver :
0.0.1
- DEB Deps: N/A
Packages
Installation
Install pg_bestmatch
via the pig
CLI tool:
pig ext install pg_bestmatch
Install pg_bestmatch
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_bestmatch"]}' # -l <cls>
Install pg_bestmatch
RPM from YUM repo directly:
dnf install pg_bestmatch_17;
dnf install pg_bestmatch_16;
dnf install pg_bestmatch_15;
dnf install pg_bestmatch_14;
dnf install pg_bestmatch_13;
Install pg_bestmatch
DEB from APT repo directly:
apt install postgresql-17-pg-bestmatch;
apt install postgresql-16-pg-bestmatch;
apt install postgresql-15-pg-bestmatch;
apt install postgresql-14-pg-bestmatch;
apt install postgresql-13-pg-bestmatch;
Extension pg_bestmatch
has to be added to shared_preload_libraries
shared_preload_libraries = 'pg_bestmatch'; # add to pg cluster config
Enable pg_bestmatch
extension on PostgreSQL cluster:
CREATE EXTENSION pg_bestmatch;
Usage
How does it work?
- Create an BM25 statistics based on your document set by
bm25_create(table_name, column_name, statistic_name);
. It will create a materilized view to record the stats.
- Generate document sparse vector by
bm25_document_to_svector(statistic_name, passage)
- For query, generate query sparse vector
bm25_query_to_svector(statistic_name, query)
- Calculate the score by dot product between the query sparse vector and the document sparse vector
- Currently we use huggingface tokenizer with
bert-base-uncased
vocabulary set to tokenize words. Might support more configuration on tokenizer in the future.
Install
CREATE EXTENSION pg_bestmatch;
SET search_path TO public, bm_catalog;
Example
Here is an example workflow demonstrating the usage of this extension with the example of Stanford LoCo benchmark.
- Load the dataset. Here is a script for you if you want to experience
pg_bestmatch
with the dataset.
wget https://huggingface.co/api/datasets/hazyresearch/LoCoV1-Documents/parquet/default/test/0.parquet -O documents.parquet
wget https://huggingface.co/api/datasets/hazyresearch/LoCoV1-Queries/parquet/default/test/0.parquet -O queries.parquet
import pandas as pd
from sqlalchemy import create_engine
import numpy as np
from psycopg2.extensions import register_adapter, AsIs
def adapter_numpy_float64(numpy_float64):
return AsIs(numpy_float64)
def adapter_numpy_int64(numpy_int64):
return AsIs(numpy_int64)
def adapter_numpy_float32(numpy_float32):
return AsIs(numpy_float32)
def adapter_numpy_int32(numpy_int32):
return AsIs(numpy_int32)
def adapter_numpy_array(numpy_array):
return AsIs(tuple(numpy_array))
register_adapter(np.float64, adapter_numpy_float64)
register_adapter(np.int64, adapter_numpy_int64)
register_adapter(np.float32, adapter_numpy_float32)
register_adapter(np.int32, adapter_numpy_int32)
register_adapter(np.ndarray, adapter_numpy_array)
db_url = "postgresql://localhost:5432/pg_bestmatch_test"
engine = create_engine(db_url)
def load_documents():
df = pd.read_parquet("documents.parquet")
df.to_sql("documents", engine, if_exists='replace', index=False)
def load_queries():
df = pd.read_parquet("queries.parquet")
df['answer_pids'] = df['answer_pids'].apply(lambda x: str(x[0]))
df.to_sql("queries", engine, if_exists='replace', index=False)
load_documents()
load_queries()
- Create BM25 statistics for the
documents
table.
SELECT bm25_create('documents', 'passage', 'documents_passage_bm25', 0.75, 1.2);
- Add an embedding column to the
documents
and queries
tables and update the embeddings for documents and queries.
ALTER TABLE documents ADD COLUMN embedding svector; -- for pgvecto.rs users
ALTER TABLE documents ADD COLUMN embedding sparsevec; -- for pgvector users
UPDATE documents SET embedding = bm25_document_to_svector('documents_passage_bm25', passage)::svector; -- for pgvecto.rs users
UPDATE documents SET embedding = bm25_document_to_svector('documents_passage_bm25', passage, 'pgvector')::sparsevec; -- for pgvector users
- (Optional) Create a vector index on the sparse vector column.
CREATE INDEX ON documents USING vectors (embedding svector_dot_ops); -- for pgvecto.rs users
CREATE INDEX ON documents USING ivfflat (embedding sparsevec_ip_ops); -- for pgvector users
- Perform a vector search to find the most relevant documents for each query.
ALTER TABLE queries ADD COLUMN embedding svector; -- for pgvecto.rs users
ALTER TABLE queries ADD COLUMN embedding sparsevec; -- for pgvector users
UPDATE queries SET embedding = bm25_query_to_svector('documents_passage_bm25', query)::svector; -- for pgvecto.rs users
UPDATE queries SET embedding = bm25_query_to_svector('documents_passage_bm25', query, 'pgvector')::sparsevec; -- for pgvector users
SELECT sum((array[answer_pids] = array(SELECT pid FROM documents WHERE queries.dataset = documents.dataset ORDER BY queries.embedding <#> documents.embedding LIMIT 1))::int) FROM queries;
This workflow showcases how to leverage BM25 text queries and vector search in PostgreSQL using this extension. The Top 1 recall of BM25 on this dataset is 0.77
. If you reproduce the result, your operations are correct.
Comparison with pg_search
pg_bestmatch.rs
only provides methods for generating sparse vectors and does not support index-based search (which can be achieved by pgvecto.rs or pgvector).
pg_search
performs BM25 retrieval via the external tantivy
engine, which may have limitations when combined with transactions, filters, or JOIN operations. Since pg_bestmatch.rs
is entirely native to Postgres, it offers full compatibility with these operations inside postgres.
Reference
tokenize
- Description: Tokenizes an input string into individual tokens.
- Example:
SELECT tokenize('i have an apple'); -- result: {i,have,an,apple}
bm25_create
- Description: Creates BM25 statistics for a specified table and column.
- Usage:
SELECT bm25_create('documents', 'passage', 'documents_passage_bm25');
- Parameters:
table_name
: Name of the table.
column_name
: Name of the column.
stat_name
: Name of the BM25 statistics.
b
: BM25 parameter (default 0.75).
k
: BM25 parameter (default 1.2).
bm25_refresh
- Description: Updates the BM25 statistics to reflect any changes in the underlying data.
- Usage:
SELECT bm25_refresh('documents_passage_bm25');
- Parameters:
stat_name
: Name of the BM25 statistics to update.
bm25_drop
- Description: Deletes the BM25 statistics for a specified table and column.
- Usage:
SELECT bm25_drop('documents_passage_bm25');
- Parameters:
stat_name
: Name of the BM25 statistics to delete.
bm25_document_to_svector
- Description: Converts document text into a sparse vector representation.
- Usage:
SELECT bm25_document_to_svector('documents_passage_bm25', 'document_text');
- Parameters:
stat_name
: Name of the BM25 statistics.
document_text
: The text of the document.
style
: Emits pgvecto.rs
-style sparse vector or pgvector
-style sparse vector.
bm25_query_to_svector
- Description: Converts query text into a sparse vector representation.
- Usage:
SELECT bm25_query_to_svector('documents_passage_bm25', 'We begin, as always, with the text.');
- Parameters:
stat_name
: Name of the BM25 statistics.
query_text
: The text of the query.
style
: Emits pgvecto.rs
-style sparse vector or pgvector
-style sparse vector.
7 - vchord_bm25
A postgresql extension for bm25 ranking algorithm
Overview
PIGSTY 3rd Party Extension: vchord_bm25
: A postgresql extension for bm25 ranking algorithm
- Latest Version: 0.1.0
- Postgres Support:
17
,16
,15
,14
- Need Load: Explicit Loading Required
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas:
bm25_catalog
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
vchord_bm25_$v
- RPM Ver :
0.1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-vchord-bm25
- DEB Ver :
0.1.0
- DEB Deps: N/A
Packages
Installation
Install vchord_bm25
via the pig
CLI tool:
pig ext install vchord_bm25
Install vchord_bm25
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["vchord_bm25"]}' # -l <cls>
Install vchord_bm25
RPM from YUM repo directly:
dnf install vchord_bm25_17;
dnf install vchord_bm25_16;
dnf install vchord_bm25_15;
dnf install vchord_bm25_14;
Install vchord_bm25
DEB from APT repo directly:
apt install postgresql-17-vchord-bm25;
apt install postgresql-16-vchord-bm25;
apt install postgresql-15-vchord-bm25;
apt install postgresql-14-vchord-bm25;
Extension vchord_bm25
has to be added to shared_preload_libraries
shared_preload_libraries = 'vchord_bm25'; # add to pg cluster config
Enable vchord_bm25
extension on PostgreSQL cluster:
CREATE EXTENSION vchord_bm25;
8 - hunspell_cs_cz
Czech Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_cs_cz
: Czech Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_cs_cz_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-cs-cz
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_cs_cz
via the pig
CLI tool:
pig ext install hunspell_cs_cz
Install hunspell_cs_cz
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_cs_cz"]}' # -l <cls>
Install hunspell_cs_cz
RPM from YUM repo directly:
dnf install hunspell_cs_cz_17;
dnf install hunspell_cs_cz_16;
dnf install hunspell_cs_cz_15;
dnf install hunspell_cs_cz_14;
dnf install hunspell_cs_cz_13;
Install hunspell_cs_cz
DEB from APT repo directly:
apt install postgresql-17-hunspell-cs-cz;
apt install postgresql-16-hunspell-cs-cz;
apt install postgresql-15-hunspell-cs-cz;
apt install postgresql-14-hunspell-cs-cz;
apt install postgresql-13-hunspell-cs-cz;
Enable hunspell_cs_cz
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_cs_cz;
9 - hunspell_de_de
German Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_de_de
: German Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_de_de_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-de-de
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_de_de
via the pig
CLI tool:
pig ext install hunspell_de_de
Install hunspell_de_de
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_de_de"]}' # -l <cls>
Install hunspell_de_de
RPM from YUM repo directly:
dnf install hunspell_de_de_17;
dnf install hunspell_de_de_16;
dnf install hunspell_de_de_15;
dnf install hunspell_de_de_14;
dnf install hunspell_de_de_13;
Install hunspell_de_de
DEB from APT repo directly:
apt install postgresql-17-hunspell-de-de;
apt install postgresql-16-hunspell-de-de;
apt install postgresql-15-hunspell-de-de;
apt install postgresql-14-hunspell-de-de;
apt install postgresql-13-hunspell-de-de;
Enable hunspell_de_de
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_de_de;
10 - hunspell_en_us
en_US Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_en_us
: en_US Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_en_us_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-en-us
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_en_us
via the pig
CLI tool:
pig ext install hunspell_en_us
Install hunspell_en_us
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_en_us"]}' # -l <cls>
Install hunspell_en_us
RPM from YUM repo directly:
dnf install hunspell_en_us_17;
dnf install hunspell_en_us_16;
dnf install hunspell_en_us_15;
dnf install hunspell_en_us_14;
dnf install hunspell_en_us_13;
Install hunspell_en_us
DEB from APT repo directly:
apt install postgresql-17-hunspell-en-us;
apt install postgresql-16-hunspell-en-us;
apt install postgresql-15-hunspell-en-us;
apt install postgresql-14-hunspell-en-us;
apt install postgresql-13-hunspell-en-us;
Enable hunspell_en_us
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_en_us;
11 - hunspell_fr
French Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_fr
: French Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_fr_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-fr
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_fr
via the pig
CLI tool:
pig ext install hunspell_fr
Install hunspell_fr
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_fr"]}' # -l <cls>
Install hunspell_fr
RPM from YUM repo directly:
dnf install hunspell_fr_17;
dnf install hunspell_fr_16;
dnf install hunspell_fr_15;
dnf install hunspell_fr_14;
dnf install hunspell_fr_13;
Install hunspell_fr
DEB from APT repo directly:
apt install postgresql-17-hunspell-fr;
apt install postgresql-16-hunspell-fr;
apt install postgresql-15-hunspell-fr;
apt install postgresql-14-hunspell-fr;
apt install postgresql-13-hunspell-fr;
Enable hunspell_fr
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_fr;
12 - hunspell_ne_np
Nepali Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_ne_np
: Nepali Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_ne_np_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-ne-np
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_ne_np
via the pig
CLI tool:
pig ext install hunspell_ne_np
Install hunspell_ne_np
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_ne_np"]}' # -l <cls>
Install hunspell_ne_np
RPM from YUM repo directly:
dnf install hunspell_ne_np_17;
dnf install hunspell_ne_np_16;
dnf install hunspell_ne_np_15;
dnf install hunspell_ne_np_14;
dnf install hunspell_ne_np_13;
Install hunspell_ne_np
DEB from APT repo directly:
apt install postgresql-17-hunspell-ne-np;
apt install postgresql-16-hunspell-ne-np;
apt install postgresql-15-hunspell-ne-np;
apt install postgresql-14-hunspell-ne-np;
apt install postgresql-13-hunspell-ne-np;
Enable hunspell_ne_np
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_ne_np;
13 - hunspell_nl_nl
Dutch Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_nl_nl
: Dutch Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_nl_nl_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-nl-nl
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_nl_nl
via the pig
CLI tool:
pig ext install hunspell_nl_nl
Install hunspell_nl_nl
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_nl_nl"]}' # -l <cls>
Install hunspell_nl_nl
RPM from YUM repo directly:
dnf install hunspell_nl_nl_17;
dnf install hunspell_nl_nl_16;
dnf install hunspell_nl_nl_15;
dnf install hunspell_nl_nl_14;
dnf install hunspell_nl_nl_13;
Install hunspell_nl_nl
DEB from APT repo directly:
apt install postgresql-17-hunspell-nl-nl;
apt install postgresql-16-hunspell-nl-nl;
apt install postgresql-15-hunspell-nl-nl;
apt install postgresql-14-hunspell-nl-nl;
apt install postgresql-13-hunspell-nl-nl;
Enable hunspell_nl_nl
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_nl_nl;
14 - hunspell_nn_no
Norwegian (norsk) Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_nn_no
: Norwegian (norsk) Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_nn_no_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-nn-no
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_nn_no
via the pig
CLI tool:
pig ext install hunspell_nn_no
Install hunspell_nn_no
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_nn_no"]}' # -l <cls>
Install hunspell_nn_no
RPM from YUM repo directly:
dnf install hunspell_nn_no_17;
dnf install hunspell_nn_no_16;
dnf install hunspell_nn_no_15;
dnf install hunspell_nn_no_14;
dnf install hunspell_nn_no_13;
Install hunspell_nn_no
DEB from APT repo directly:
apt install postgresql-17-hunspell-nn-no;
apt install postgresql-16-hunspell-nn-no;
apt install postgresql-15-hunspell-nn-no;
apt install postgresql-14-hunspell-nn-no;
apt install postgresql-13-hunspell-nn-no;
Enable hunspell_nn_no
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_nn_no;
15 - hunspell_pt_pt
Portuguese Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_pt_pt
: Portuguese Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_pt_pt_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-pt-pt
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_pt_pt
via the pig
CLI tool:
pig ext install hunspell_pt_pt
Install hunspell_pt_pt
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_pt_pt"]}' # -l <cls>
Install hunspell_pt_pt
RPM from YUM repo directly:
dnf install hunspell_pt_pt_17;
dnf install hunspell_pt_pt_16;
dnf install hunspell_pt_pt_15;
dnf install hunspell_pt_pt_14;
dnf install hunspell_pt_pt_13;
Install hunspell_pt_pt
DEB from APT repo directly:
apt install postgresql-17-hunspell-pt-pt;
apt install postgresql-16-hunspell-pt-pt;
apt install postgresql-15-hunspell-pt-pt;
apt install postgresql-14-hunspell-pt-pt;
apt install postgresql-13-hunspell-pt-pt;
Enable hunspell_pt_pt
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_pt_pt;
16 - hunspell_ru_ru
Russian Hunspell Dictionary
Overview
PIGSTY 3rd Party Extension: hunspell_ru_ru
: Russian Hunspell Dictionary
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_ru_ru_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-ru-ru
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_ru_ru
via the pig
CLI tool:
pig ext install hunspell_ru_ru
Install hunspell_ru_ru
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_ru_ru"]}' # -l <cls>
Install hunspell_ru_ru
RPM from YUM repo directly:
dnf install hunspell_ru_ru_17;
dnf install hunspell_ru_ru_16;
dnf install hunspell_ru_ru_15;
dnf install hunspell_ru_ru_14;
dnf install hunspell_ru_ru_13;
Install hunspell_ru_ru
DEB from APT repo directly:
apt install postgresql-17-hunspell-ru-ru;
apt install postgresql-16-hunspell-ru-ru;
apt install postgresql-15-hunspell-ru-ru;
apt install postgresql-14-hunspell-ru-ru;
apt install postgresql-13-hunspell-ru-ru;
Enable hunspell_ru_ru
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_ru_ru;
17 - hunspell_ru_ru_aot
Russian Hunspell Dictionary (from AOT.ru group)
Overview
PIGSTY 3rd Party Extension: hunspell_ru_ru_aot
: Russian Hunspell Dictionary (from AOT.ru group)
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hunspell_ru_ru_aot_$v
- RPM Ver :
1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hunspell-ru-ru-aot
- DEB Ver :
1.0
- DEB Deps: N/A
Packages
Installation
Install hunspell_ru_ru_aot
via the pig
CLI tool:
pig ext install hunspell_ru_ru_aot
Install hunspell_ru_ru_aot
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hunspell_ru_ru_aot"]}' # -l <cls>
Install hunspell_ru_ru_aot
RPM from YUM repo directly:
dnf install hunspell_ru_ru_aot_17;
dnf install hunspell_ru_ru_aot_16;
dnf install hunspell_ru_ru_aot_15;
dnf install hunspell_ru_ru_aot_14;
dnf install hunspell_ru_ru_aot_13;
Install hunspell_ru_ru_aot
DEB from APT repo directly:
apt install postgresql-17-hunspell-ru-ru-aot;
apt install postgresql-16-hunspell-ru-ru-aot;
apt install postgresql-15-hunspell-ru-ru-aot;
apt install postgresql-14-hunspell-ru-ru-aot;
apt install postgresql-13-hunspell-ru-ru-aot;
Enable hunspell_ru_ru_aot
extension on PostgreSQL cluster:
CREATE EXTENSION hunspell_ru_ru_aot;
18 - fuzzystrmatch
determine similarities and distance between strings
Overview
CONTRIB Built-in Extension: fuzzystrmatch
: determine similarities and distance between strings
- Latest Version: 1.2
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Unknown
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas: N/A
- Requires: N/A
RPM / DEB
PostgreSQL Built-in Contrib Extension
Packages
OS |
Arch |
PG17 |
PG16 |
PG15 |
PG14 |
PG13 |
el8 |
x86_64 |
|
|
|
|
|
el8 |
aarch64 |
|
|
|
|
|
el9 |
x86_64 |
|
|
|
|
|
el9 |
aarch64 |
|
|
|
|
|
d12 |
x86_64 |
|
|
|
|
|
d12 |
aarch64 |
|
|
|
|
|
u22 |
x86_64 |
|
|
|
|
|
u22 |
aarch64 |
|
|
|
|
|
u24 |
x86_64 |
|
|
|
|
|
u24 |
aarch64 |
|
|
|
|
|
Installation
Extension fuzzystrmatch
is PostgreSQL Built-in Contrib Extension which is installed along with the kernel/contrib.
Install fuzzystrmatch
RPM from YUM repo directly:
dnf install postgresql17-contrib;
dnf install postgresql16-contrib;
dnf install postgresql15-contrib;
dnf install postgresql14-contrib;
dnf install postgresql13-contrib;
Install fuzzystrmatch
DEB from APT repo directly:
apt install postgresql-17;
apt install postgresql-16;
apt install postgresql-15;
apt install postgresql-14;
apt install postgresql-13;
Enable fuzzystrmatch
extension on PostgreSQL cluster:
CREATE EXTENSION fuzzystrmatch;
19 - pg_trgm
text similarity measurement and index searching based on trigrams
Overview
CONTRIB Built-in Extension: pg_trgm
: text similarity measurement and index searching based on trigrams
- Latest Version: 1.6
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Unknown
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
PostgreSQL Built-in Contrib Extension
Packages
OS |
Arch |
PG17 |
PG16 |
PG15 |
PG14 |
PG13 |
el8 |
x86_64 |
|
|
|
|
|
el8 |
aarch64 |
|
|
|
|
|
el9 |
x86_64 |
|
|
|
|
|
el9 |
aarch64 |
|
|
|
|
|
d12 |
x86_64 |
|
|
|
|
|
d12 |
aarch64 |
|
|
|
|
|
u22 |
x86_64 |
|
|
|
|
|
u22 |
aarch64 |
|
|
|
|
|
u24 |
x86_64 |
|
|
|
|
|
u24 |
aarch64 |
|
|
|
|
|
Installation
Extension pg_trgm
is PostgreSQL Built-in Contrib Extension which is installed along with the kernel/contrib.
Install pg_trgm
RPM from YUM repo directly:
dnf install postgresql17-contrib;
dnf install postgresql16-contrib;
dnf install postgresql15-contrib;
dnf install postgresql14-contrib;
dnf install postgresql13-contrib;
Install pg_trgm
DEB from APT repo directly:
apt install postgresql-17;
apt install postgresql-16;
apt install postgresql-15;
apt install postgresql-14;
apt install postgresql-13;
Enable pg_trgm
extension on PostgreSQL cluster:
CREATE EXTENSION pg_trgm;