plone.pgcatalog

plone.pgcatalog logo

PostgreSQL-backed catalog for Plone, replacing ZCatalog BTrees with SQL queries on JSONB.

Key capabilities:

  • Drop-in replacement for Plone’s portal_catalog

  • All standard ZCatalog index types supported

  • Full-text search with language-aware stemming (30 languages)

  • Optional BM25 ranking via VectorChord-BM25

  • Optional async text extraction from PDFs, Office docs, and images via Apache Tika

  • Zero ZODB cache pressure – no BTree objects stored

  • Transactional writes atomically alongside ZODB commit

  • Catalog data queryable from any PostgreSQL client

Requirements: Python 3.12+, PostgreSQL 14+ (tested with 17), Plone 6, zodb-pgjsonb

Documentation

Tutorials

Learning-oriented – Step-by-step lessons to build skills.

Start here if you are new to plone.pgcatalog.

Tutorials
How-To Guides

Goal-oriented – Solutions to specific problems.

Use these when you need to accomplish something.

How-to guides
Reference

Information-oriented – Technical specifications and API details.

Consult when you need detailed information.

Reference
Explanation

Understanding-oriented – Architecture and design decisions.

Read to deepen your understanding of how it works.

Explanation

Quick start

  1. Install plone.pgcatalog

  2. Run the quickstart demo (Docker + multilingual content in 5 minutes)

  3. Migrate an existing site