pg_search

pg_search

pg_search : Full text search for PostgreSQL using BM25

Overview

ID Extension Package Version Category License Language
2100
pg_search
pg_search
0.22.2
FTS
AGPL-3.0
Rust
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d--
No
Yes
No
Yes
no
no
Relationships
Schemas paradedb
See Also
pgroonga
pgroonga_database
pg_bestmatch
vchord_bm25
pg_bigm
zhparser
pg_tokenizer
pg_trgm

PG 17+ does not require dynamic loading

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
0.22.2
18
17
16
15
14
pg_search -
RPM
PIGSTY
0.22.2
18
17
16
15
14
pg_search_$v -
DEB
PIGSTY
0.22.2
18
17
16
15
14
postgresql-$v-pg-search -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.10
el8.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.10
el9.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.10
el9.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.10
el10.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
MISS
el10.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
MISS
d12.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
d12.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
d13.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.5
d13.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.5
u22.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
u22.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
u24.x86_64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
u24.aarch64
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.22.2
PIGSTY 0.20.7
Package Version OS ORG SIZE File URL
pg_search_18 0.22.2 el8.x86_64 pigsty 60.8 MiB pg_search_18-0.22.2-1PIGSTY.el8.x86_64.rpm
pg_search_18 0.22.2 el8.aarch64 pigsty 60.3 MiB pg_search_18-0.22.2-1PIGSTY.el8.aarch64.rpm
pg_search_18 0.22.2 el9.x86_64 pigsty 60.3 MiB pg_search_18-0.22.2-1PARADEDB.el9.x86_64.rpm
pg_search_18 0.22.2 el9.aarch64 pigsty 60.9 MiB pg_search_18-0.22.2-1PARADEDB.el9.aarch64.rpm
pg_search_18 0.22.2 el10.x86_64 pigsty 60.3 MiB pg_search_18-0.22.2-1PARADEDB.el10.x86_64.rpm
pg_search_18 0.22.2 el10.aarch64 pigsty 60.9 MiB pg_search_18-0.22.2-1PARADEDB.el10.aarch64.rpm
postgresql-18-pg-search 0.22.2 d12.x86_64 pigsty 58.9 MiB postgresql-18-pg-search_0.22.2_amd64.deb
postgresql-18-pg-search 0.22.2 d12.aarch64 pigsty 58.3 MiB postgresql-18-pg-search_0.22.2_arm64.deb
postgresql-18-pg-search 0.22.2 d13.x86_64 pigsty 58.9 MiB postgresql-18-pg-search_0.22.2_amd64.deb
postgresql-18-pg-search 0.22.2 d13.aarch64 pigsty 58.3 MiB postgresql-18-pg-search_0.22.2_arm64.deb
postgresql-18-pg-search 0.22.2 u22.x86_64 pigsty 58.9 MiB postgresql-18-pg-search_0.22.2_amd64.deb
postgresql-18-pg-search 0.22.2 u22.aarch64 pigsty 58.3 MiB postgresql-18-pg-search_0.22.2_arm64.deb
postgresql-18-pg-search 0.22.2 u24.x86_64 pigsty 58.9 MiB postgresql-18-pg-search_0.22.2_amd64.deb
postgresql-18-pg-search 0.22.2 u24.aarch64 pigsty 58.3 MiB postgresql-18-pg-search_0.22.2_arm64.deb
Package Version OS ORG SIZE File URL
pg_search_17 0.22.2 el8.x86_64 pigsty 60.9 MiB pg_search_17-0.22.2-1PIGSTY.el8.x86_64.rpm
pg_search_17 0.22.2 el8.aarch64 pigsty 60.3 MiB pg_search_17-0.22.2-1PIGSTY.el8.aarch64.rpm
pg_search_17 0.22.2 el9.x86_64 pigsty 60.3 MiB pg_search_17-0.22.2-1PARADEDB.el9.x86_64.rpm
pg_search_17 0.22.2 el9.aarch64 pigsty 60.9 MiB pg_search_17-0.22.2-1PARADEDB.el9.aarch64.rpm
pg_search_17 0.22.2 el10.x86_64 pigsty 60.4 MiB pg_search_17-0.22.2-1PARADEDB.el10.x86_64.rpm
pg_search_17 0.22.2 el10.aarch64 pigsty 60.9 MiB pg_search_17-0.22.2-1PARADEDB.el10.aarch64.rpm
postgresql-17-pg-search 0.22.2 d12.x86_64 pigsty 58.9 MiB postgresql-17-pg-search_0.22.2_amd64.deb
postgresql-17-pg-search 0.22.2 d12.aarch64 pigsty 58.3 MiB postgresql-17-pg-search_0.22.2_arm64.deb
postgresql-17-pg-search 0.22.2 d13.x86_64 pigsty 58.9 MiB postgresql-17-pg-search_0.22.2_amd64.deb
postgresql-17-pg-search 0.22.2 d13.aarch64 pigsty 58.3 MiB postgresql-17-pg-search_0.22.2_arm64.deb
postgresql-17-pg-search 0.22.2 u22.x86_64 pigsty 58.9 MiB postgresql-17-pg-search_0.22.2_amd64.deb
postgresql-17-pg-search 0.22.2 u22.aarch64 pigsty 58.3 MiB postgresql-17-pg-search_0.22.2_arm64.deb
postgresql-17-pg-search 0.22.2 u24.x86_64 pigsty 58.9 MiB postgresql-17-pg-search_0.22.2_amd64.deb
postgresql-17-pg-search 0.22.2 u24.aarch64 pigsty 58.3 MiB postgresql-17-pg-search_0.22.2_arm64.deb
Package Version OS ORG SIZE File URL
pg_search_16 0.22.2 el8.x86_64 pigsty 60.9 MiB pg_search_16-0.22.2-1PIGSTY.el8.x86_64.rpm
pg_search_16 0.22.2 el8.aarch64 pigsty 60.3 MiB pg_search_16-0.22.2-1PIGSTY.el8.aarch64.rpm
pg_search_16 0.22.2 el9.x86_64 pigsty 60.4 MiB pg_search_16-0.22.2-1PARADEDB.el9.x86_64.rpm
pg_search_16 0.22.2 el9.aarch64 pigsty 60.9 MiB pg_search_16-0.22.2-1PARADEDB.el9.aarch64.rpm
pg_search_16 0.22.2 el10.x86_64 pigsty 60.4 MiB pg_search_16-0.22.2-1PARADEDB.el10.x86_64.rpm
pg_search_16 0.22.2 el10.aarch64 pigsty 60.9 MiB pg_search_16-0.22.2-1PARADEDB.el10.aarch64.rpm
postgresql-16-pg-search 0.22.2 d12.x86_64 pigsty 58.9 MiB postgresql-16-pg-search_0.22.2_amd64.deb
postgresql-16-pg-search 0.22.2 d12.aarch64 pigsty 58.3 MiB postgresql-16-pg-search_0.22.2_arm64.deb
postgresql-16-pg-search 0.22.2 d13.x86_64 pigsty 58.9 MiB postgresql-16-pg-search_0.22.2_amd64.deb
postgresql-16-pg-search 0.22.2 d13.aarch64 pigsty 58.3 MiB postgresql-16-pg-search_0.22.2_arm64.deb
postgresql-16-pg-search 0.22.2 u22.x86_64 pigsty 58.9 MiB postgresql-16-pg-search_0.22.2_amd64.deb
postgresql-16-pg-search 0.22.2 u22.aarch64 pigsty 58.3 MiB postgresql-16-pg-search_0.22.2_arm64.deb
postgresql-16-pg-search 0.22.2 u24.x86_64 pigsty 58.9 MiB postgresql-16-pg-search_0.22.2_amd64.deb
postgresql-16-pg-search 0.22.2 u24.aarch64 pigsty 58.3 MiB postgresql-16-pg-search_0.22.2_arm64.deb
Package Version OS ORG SIZE File URL
pg_search_15 0.22.2 el8.x86_64 pigsty 60.8 MiB pg_search_15-0.22.2-1PIGSTY.el8.x86_64.rpm
pg_search_15 0.22.2 el8.aarch64 pigsty 60.3 MiB pg_search_15-0.22.2-1PIGSTY.el8.aarch64.rpm
pg_search_15 0.22.2 el9.x86_64 pigsty 60.3 MiB pg_search_15-0.22.2-1PARADEDB.el9.x86_64.rpm
pg_search_15 0.22.2 el9.aarch64 pigsty 60.9 MiB pg_search_15-0.22.2-1PARADEDB.el9.aarch64.rpm
pg_search_15 0.22.2 el10.x86_64 pigsty 60.3 MiB pg_search_15-0.22.2-1PARADEDB.el10.x86_64.rpm
pg_search_15 0.22.2 el10.aarch64 pigsty 60.9 MiB pg_search_15-0.22.2-1PARADEDB.el10.aarch64.rpm
postgresql-15-pg-search 0.22.2 d12.x86_64 pigsty 58.9 MiB postgresql-15-pg-search_0.22.2_amd64.deb
postgresql-15-pg-search 0.22.2 d12.aarch64 pigsty 58.3 MiB postgresql-15-pg-search_0.22.2_arm64.deb
postgresql-15-pg-search 0.22.2 d13.x86_64 pigsty 58.9 MiB postgresql-15-pg-search_0.22.2_amd64.deb
postgresql-15-pg-search 0.22.2 d13.aarch64 pigsty 58.3 MiB postgresql-15-pg-search_0.22.2_arm64.deb
postgresql-15-pg-search 0.22.2 u22.x86_64 pigsty 58.9 MiB postgresql-15-pg-search_0.22.2_amd64.deb
postgresql-15-pg-search 0.22.2 u22.aarch64 pigsty 58.3 MiB postgresql-15-pg-search_0.22.2_arm64.deb
postgresql-15-pg-search 0.22.2 u24.x86_64 pigsty 58.9 MiB postgresql-15-pg-search_0.22.2_amd64.deb
postgresql-15-pg-search 0.22.2 u24.aarch64 pigsty 58.3 MiB postgresql-15-pg-search_0.22.2_arm64.deb
Package Version OS ORG SIZE File URL
pg_search_14 0.20.10 el8.x86_64 pigsty 46.3 MiB pg_search_14-0.20.10-1PARADEDB.el8.x86_64.rpm
pg_search_14 0.20.10 el8.aarch64 pigsty 45.7 MiB pg_search_14-0.20.10-1PARADEDB.el8.aarch64.rpm
pg_search_14 0.20.10 el9.x86_64 pigsty 46.1 MiB pg_search_14-0.20.10-1PARADEDB.el9.x86_64.rpm
pg_search_14 0.20.10 el9.aarch64 pigsty 46.0 MiB pg_search_14-0.20.10-1PARADEDB.el9.aarch64.rpm
postgresql-14-pg-search 0.20.7 d12.x86_64 pigsty 45.6 MiB postgresql-14-pg-search_0.20.7_amd64.deb
postgresql-14-pg-search 0.20.7 d12.aarch64 pigsty 45.0 MiB postgresql-14-pg-search_0.20.7_arm64.deb
postgresql-14-pg-search 0.20.5 d13.x86_64 pigsty 45.1 MiB postgresql-14-pg-search_0.20.5-1PIGSTY~trixie_amd64.deb
postgresql-14-pg-search 0.20.5 d13.aarch64 pigsty 44.5 MiB postgresql-14-pg-search_0.20.5-1PIGSTY~trixie_arm64.deb
postgresql-14-pg-search 0.20.7 u22.x86_64 pigsty 45.6 MiB postgresql-14-pg-search_0.20.7_amd64.deb
postgresql-14-pg-search 0.20.7 u22.aarch64 pigsty 45.0 MiB postgresql-14-pg-search_0.20.7_arm64.deb
postgresql-14-pg-search 0.20.7 u24.x86_64 pigsty 45.6 MiB postgresql-14-pg-search_0.20.7_amd64.deb
postgresql-14-pg-search 0.20.7 u24.aarch64 pigsty 45.1 MiB postgresql-14-pg-search_0.20.7_arm64.deb

Source

pig build pkg pg_search;		# build deb

Install

Make sure PGDG and PIGSTY repo available:

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

Install this extension with pig:

pig install pg_search;		# install via package name, for the active PG version

pig install pg_search -v 18;   # install for PG 18
pig install pg_search -v 17;   # install for PG 17
pig install pg_search -v 16;   # install for PG 16
pig install pg_search -v 15;   # install for PG 15

Create this extension with:

CREATE EXTENSION pg_search;

THIS EXTENSION is built by ParadeDB team and delivered by the PIGSTY repo

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;

-- Create a BM25 index (key_field must be UNIQUE, one BM25 index per table)
CREATE INDEX search_idx ON mock_items
USING bm25 (id, description, category, rating, in_stock, created_at, metadata, weight_range)
WITH (key_field='id');

-- Full-text search with @@@ operator
SELECT description, rating, category
FROM mock_items
WHERE description @@@ 'keyboard' AND rating > 2
ORDER BY rating
LIMIT 5;

-- BM25 relevance scoring
SELECT description, paradedb.score(id)
FROM mock_items
WHERE description @@@ 'keyboard'
ORDER BY paradedb.score(id) DESC
LIMIT 5;

-- Highlighting matched terms
SELECT description, paradedb.snippet(description), paradedb.score(id)
FROM mock_items
WHERE description @@@ 'keyboard'
ORDER BY paradedb.score(id) DESC
LIMIT 5;

-- Exact phrase search (use double quotes inside single quotes)
SELECT description, rating, category
FROM mock_items
WHERE description @@@ '"metal keyboard"';

-- Configure text fields with tokenizers (e.g., English stemming)
DROP INDEX search_idx;
CREATE INDEX search_idx ON mock_items
USING bm25 (id, (description::pdb.simple('stemmer=english')), category)
WITH (key_field='id');
Last updated on