pg_search
Full text search for PostgreSQL using BM25
Repository
dev/pg_search
https://github.com/paradedb/paradedb/tree/dev/pg_search
Source
pg_search-0.22.2.tar.gz
pg_search-0.22.2.tar.gz
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_search | 0.22.2 | FTS | AGPL-3.0 | Rust |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 2100 | pg_search | No | Yes | No | Yes | No | No | paradedb |
| Related | pgroonga pgroonga_database pg_bestmatch vchord_bm25 pg_bigm zhparser pg_tokenizer pg_trgm |
|---|
PG 17+ does not require dynamic loading
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.22.2 | 1817161514 | pg_search | - |
| RPM | PIGSTY | 0.22.2 | 1817161514 | pg_search_$v | - |
| DEB | PIGSTY | 0.22.2 | 1817161514 | postgresql-$v-pg-search | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 0.22.2 el8.x86_64.pg18 : pg_search_18 pg_search_18-0.22.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 0.22.2 el8.x86_64.pg17 : pg_search_17 pg_search_17-0.22.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 0.22.2 el8.x86_64.pg16 : pg_search_16 pg_search_16-0.22.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 0.22.2 el8.x86_64.pg15 : pg_search_15 pg_search_15-0.22.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 0.20.10 el8.x86_64.pg14 : pg_search_14 pg_search_14-0.20.10-1PARADEDB.el8.x86_64.rpm
|
| el8.aarch64 | PIGSTY 0.22.2 el8.aarch64.pg18 : pg_search_18 pg_search_18-0.22.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 0.22.2 el8.aarch64.pg17 : pg_search_17 pg_search_17-0.22.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 0.22.2 el8.aarch64.pg16 : pg_search_16 pg_search_16-0.22.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 0.22.2 el8.aarch64.pg15 : pg_search_15 pg_search_15-0.22.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 0.20.10 el8.aarch64.pg14 : pg_search_14 pg_search_14-0.20.10-1PARADEDB.el8.aarch64.rpm
|
| el9.x86_64 | PIGSTY 0.22.2 el9.x86_64.pg18 : pg_search_18 pg_search_18-0.22.2-1PARADEDB.el9.x86_64.rpm
| PIGSTY 0.22.2 el9.x86_64.pg17 : pg_search_17 pg_search_17-0.22.2-1PARADEDB.el9.x86_64.rpm
| PIGSTY 0.22.2 el9.x86_64.pg16 : pg_search_16 pg_search_16-0.22.2-1PARADEDB.el9.x86_64.rpm
| PIGSTY 0.22.2 el9.x86_64.pg15 : pg_search_15 pg_search_15-0.22.2-1PARADEDB.el9.x86_64.rpm
| PIGSTY 0.20.10 el9.x86_64.pg14 : pg_search_14 pg_search_14-0.20.10-1PARADEDB.el9.x86_64.rpm
|
| el9.aarch64 | PIGSTY 0.22.2 el9.aarch64.pg18 : pg_search_18 pg_search_18-0.22.2-1PARADEDB.el9.aarch64.rpm
| PIGSTY 0.22.2 el9.aarch64.pg17 : pg_search_17 pg_search_17-0.22.2-1PARADEDB.el9.aarch64.rpm
| PIGSTY 0.22.2 el9.aarch64.pg16 : pg_search_16 pg_search_16-0.22.2-1PARADEDB.el9.aarch64.rpm
| PIGSTY 0.22.2 el9.aarch64.pg15 : pg_search_15 pg_search_15-0.22.2-1PARADEDB.el9.aarch64.rpm
| PIGSTY 0.20.10 el9.aarch64.pg14 : pg_search_14 pg_search_14-0.20.10-1PARADEDB.el9.aarch64.rpm
|
| el10.x86_64 | PIGSTY 0.22.2 el10.x86_64.pg18 : pg_search_18 pg_search_18-0.22.2-1PARADEDB.el10.x86_64.rpm
| PIGSTY 0.22.2 el10.x86_64.pg17 : pg_search_17 pg_search_17-0.22.2-1PARADEDB.el10.x86_64.rpm
| PIGSTY 0.22.2 el10.x86_64.pg16 : pg_search_16 pg_search_16-0.22.2-1PARADEDB.el10.x86_64.rpm
| PIGSTY 0.22.2 el10.x86_64.pg15 : pg_search_15 pg_search_15-0.22.2-1PARADEDB.el10.x86_64.rpm
| PIGSTY MISS |
| el10.aarch64 | PIGSTY 0.22.2 el10.aarch64.pg18 : pg_search_18 pg_search_18-0.22.2-1PARADEDB.el10.aarch64.rpm
| PIGSTY 0.22.2 el10.aarch64.pg17 : pg_search_17 pg_search_17-0.22.2-1PARADEDB.el10.aarch64.rpm
| PIGSTY 0.22.2 el10.aarch64.pg16 : pg_search_16 pg_search_16-0.22.2-1PARADEDB.el10.aarch64.rpm
| PIGSTY 0.22.2 el10.aarch64.pg15 : pg_search_15 pg_search_15-0.22.2-1PARADEDB.el10.aarch64.rpm
| PIGSTY MISS |
| d12.x86_64 | PIGSTY 0.22.2 d12.x86_64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d12.x86_64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d12.x86_64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d12.x86_64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_amd64.deb
| PIGSTY 0.20.7 d12.x86_64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_amd64.deb
|
| d12.aarch64 | PIGSTY 0.22.2 d12.aarch64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d12.aarch64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d12.aarch64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d12.aarch64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_arm64.deb
| PIGSTY 0.20.7 d12.aarch64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_arm64.deb
|
| d13.x86_64 | PIGSTY 0.22.2 d13.x86_64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d13.x86_64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d13.x86_64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 d13.x86_64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_amd64.deb
| PIGSTY 0.20.5 d13.x86_64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.5-1PIGSTY~trixie_amd64.deb
|
| d13.aarch64 | PIGSTY 0.22.2 d13.aarch64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d13.aarch64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d13.aarch64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 d13.aarch64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_arm64.deb
| PIGSTY 0.20.5 d13.aarch64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.5-1PIGSTY~trixie_arm64.deb
|
| u22.x86_64 | PIGSTY 0.22.2 u22.x86_64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u22.x86_64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u22.x86_64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u22.x86_64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_amd64.deb
| PIGSTY 0.20.7 u22.x86_64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_amd64.deb
|
| u22.aarch64 | PIGSTY 0.22.2 u22.aarch64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u22.aarch64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u22.aarch64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u22.aarch64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_arm64.deb
| PIGSTY 0.20.7 u22.aarch64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_arm64.deb
|
| u24.x86_64 | PIGSTY 0.22.2 u24.x86_64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u24.x86_64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u24.x86_64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_amd64.deb
| PIGSTY 0.22.2 u24.x86_64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_amd64.deb
| PIGSTY 0.20.7 u24.x86_64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_amd64.deb
|
| u24.aarch64 | PIGSTY 0.22.2 u24.aarch64.pg18 : postgresql-18-pg-search postgresql-18-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u24.aarch64.pg17 : postgresql-17-pg-search postgresql-17-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u24.aarch64.pg16 : postgresql-16-pg-search postgresql-16-pg-search_0.22.2_arm64.deb
| PIGSTY 0.22.2 u24.aarch64.pg15 : postgresql-15-pg-search postgresql-15-pg-search_0.22.2_arm64.deb
| PIGSTY 0.20.7 u24.aarch64.pg14 : postgresql-14-pg-search postgresql-14-pg-search_0.20.7_arm64.deb
|
Build
You can build the DEB packages for pg_search using pig build:
pig build pkg pg_search # build DEB packages
Install
You can install pg_search 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:
pig install pg_search; # Install for current active PG version
pig ext install -y pg_search -v 18 # PG 18
pig ext install -y pg_search -v 17 # PG 17
pig ext install -y pg_search -v 16 # PG 16
pig ext install -y pg_search -v 15 # PG 15
dnf install -y pg_search_18 # PG 18
dnf install -y pg_search_17 # PG 17
dnf install -y pg_search_16 # PG 16
dnf install -y pg_search_15 # PG 15
apt install -y postgresql-18-pg-search # PG 18
apt install -y postgresql-17-pg-search # PG 17
apt install -y postgresql-16-pg-search # PG 16
apt install -y postgresql-15-pg-search # PG 15
Create Extension:
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');
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.