Repository navigation
vchord_bm25 1.1.0
vchord_bm25 1.1.0 is a correctness and query-path release maintained by PGSTY.
English
Correctness
- Fixed a rare floating-point rounding case in Block-WeakAnd (WAND) pruning. Upper bounds now sum term contributions in the same query order as document scoring, preventing near-tied documents from being silently omitted from complete scans.
- Applied the fix to pivot, block, tight-bound, prefilter, growing-segment, and paginated scan paths.
- Added regression coverage for near ties, prefilter on/off, pagination, deletes, growing records, VACUUM, and absent query terms.
Query path
- Dense ordinal bitmap state is now sized to sealed cursors that actually contribute to a query, so absent terms do not allocate state proportional to the total query length.
- Long high-frequency queries remain workload-dependent and can spend more CPU in bound calculation than short queries; measure representative workloads and tune
bm25.limitas needed.
Compatibility and upgrade
- Keeps the native PostgreSQL
tsvectorAPI and format 4 index storage introduced in 1.0.0. - Healthy 1.0.0 indexes do not need
REINDEX. - Run
ALTER EXTENSION vchord_bm25 UPDATE TO '1.1.0';after installing the 1.1.0 library and SQL files. The1.0.0--1.1.0script is intentionally empty because the fix is in the library code. - The 0.3.x
bm25vectorAPI and index format remain incompatible; follow the migration guide for that boundary. bm25.limitcontrols the initial WAND batch size rather than imposing a hard result cap.WHERE vector @@ ...remains an executor filter; use GIN when it is a better path for selective or empty matches.
Validation and distribution
Validated with PostgreSQL 18.6 acceptance, SQLLogicTest, Rust tests, Clippy with -D warnings, PG14–18 Linux CI on x86_64/aarch64, and a checked PGXN source archive.
- Documentation: https://vchord.pgsty.com/docs/bm25/reference/versions/
- PGXN: https://pgxn.org/dist/vchord_bm25/