Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Doctrine Full Text Postgres Laravel Package

vertigolabs/doctrine-full-text-postgres

Adds PostgreSQL full-text search support to Doctrine, letting you index and query text columns with tsvector/tsquery for fast, relevance-ranked searching in Laravel and PHP applications without external search services.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for search: This package is the cheapest credible path to native PostgreSQL full-text search (tsvector/tsquery, ts_rank, ts_headline) from a Doctrine ORM codebase. It informs whether we ship search as a Postgres feature or fund a separate search service (Elasticsearch, OpenSearch, Algolia, Typesense).
  • Search roadmap sequencing: Enables a "good enough search now, relevance platform later" roadmap. We can ship keyword search, stemming, and ranked results in a sprint or two instead of a quarter, and defer the dedicated search infra decision until volume or relevance requirements justify it.
  • Scope of the first search release: Helps define MVP boundaries — single-language keyword search, relevance ordering, highlighted excerpts — versus what we explicitly defer (faceting, synonyms, typo tolerance, cross-field boosting, multilingual analysis).
  • Total cost of ownership comparison: A native Postgres approach avoids a new managed service, a second datastore, index sync pipelines, dual-write consistency problems, and on-call surface area. This is a materially smaller operational and infra bill than standing up a search cluster.
  • Data model and migration decisions: Mapping a generated tsvector column with a GIN index is a schema-level commitment. This package affects whether search lives as a first-class column (indexable, transactional, always consistent) or as an external index (eventually consistent).
  • Vendor/exit risk planning: With ~17 stars, 0 dependents, and a last release in October 2021, adoption is a small-bet decision requiring a fork-and-own contingency rather than a strategic platform bet.
  • Use cases it credibly serves: internal admin search, back-office tooling, content/document search over modest corpora, MVP customer-facing search, and filtering on already-relational data where relevance tuning is not yet a differentiator.

When to Consider This Package

Adopt (or, more precisely, spike) when all of the following hold:

  • The stack is Laravel/PHP on Doctrine ORM with PostgreSQL — the package is a Doctrine type/function extension, so it delivers value only inside that combination.
  • Search requirements are keyword-oriented: lexical matching, stemming via a Postgres text search configuration, relevance ranking, and snippet highlighting.
  • The corpus is modest to moderate (roughly low millions of rows or fewer) and query latency targets are sub-second, not sub-100ms at high concurrency.
  • Data consistency matters — you want search results to reflect writes immediately, transactionally, without a sync pipeline.
  • The team accepts fork-and-own: you or your engineers will vendor the package, verify compatibility with current PHP/Doctrine versions, and maintain it.
  • You want time-to-market over relevance sophistication, and can articulate the migration trigger to a dedicated search engine later.

Look elsewhere when any of the following apply:

  • Active maintenance is a hard requirement. No release since 2021 means PHP 8.2/8.3 and Doctrine ORM 3 compatibility are unverified; expect breakage and budget a spike to confirm.
  • Ecosystem validation matters. Zero dependents and single-digit stars mean no community safety net, no CVE response, and thin documentation.
  • Requirements include faceting, fuzzy/typo tolerance, synonyms, custom analyzers, multilingual stemming beyond Postgres dictionaries, or learning-to-rank. These are where Postgres FTS and this wrapper stop being competitive.
  • Very high write throughput — a tsvector column plus GIN index adds write amplification and vacuum pressure.
  • The stack is Eloquent-first; you would be introducing Doctrine solely to use this package, which is a poor trade.
  • You need sub-100ms latency at high QPS with complex relevance, or search across non-Postgres data sources.

Also note: implementing the underlying Postgres FTS directly with raw SQL or a lightweight custom Doctrine type is a realistic alternative — the package's value is convenience, not unique capability, so "build a 200-line internal equivalent" is a genuine competing option.

How to Pitch It (Stakeholders)

Executive summary: We can deliver working, ranked full-text search on our existing PostgreSQL database without procuring a new search service, without a second datastore, and without an index-sync pipeline. That translates to weeks rather than a quarter, and near-zero incremental infrastructure spend — the primary trade-off is relevance sophistication and a small long-term maintenance obligation.

For engineering: vertigolabs/doctrine-full-text-postgres provides Doctrine mapping and DQL function support for Postgres tsvector/tsquery, giving us generated columns, GIN indexing, ranking, and headline extraction through the ORM instead of hand-rolled SQL. It is small, narrow, and easy to reason about — but it is effectively unmaintained (last release October 2021, no dependents), so we should vendor it, run a compatibility spike against our PHP and Doctrine versions, and treat it as internal code we own. Exit cost is low: the schema-level artifacts (column, index, queries) are plain Postgres and survive any ORM-layer replacement.

Risk framing, stated plainly: Low adoption and stale releases mean no support channel and no security response — acceptable for a convenience wrapper, unacceptable as a load-bearing platform dependency. Recommendation: time-boxed spike, vendor the code, document the migration trigger (relevance complaints, faceting requirements, or latency at scale) that would move us to a dedicated search engine.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console